数据库操作语言(DML)
文章目录
- 数据库操作语言(DML)
- 一、四种操作
- 二、数据的插入(增)
- 三、数据的删除(删)
- 四、数据的修改(改)
- 五、数据的查询(查)-- DQL
一、四种操作
- 数据查询 (Data Querying): 从数据库中检索数据。最常用的查询语言是SQL (Structured Query Language) 中的
SELECT
语句。 - 数据插入 (Data Insertion): 将新数据添加到数据库中,常用的SQL语句是
INSERT INTO
。 - 数据更新 (Data Updating): 修改数据库中的现有数据,常用的SQL语句是
UPDATE
。 - 数据删除 (Data Deletion): 从数据库中删除数据,常用的SQL语句是
DELETE FROM
。
二、数据的插入(增)
1、语法格式。
前提:创建验证学生表
CREATE TABLE student(
id INT(3) PRIMARY KEY auto_increment,
name VARCHAR(32),
sex VARCHAR(32),
age INT(3),
salary FLOAT(8,2),
course VARCHAR(32)
)
注意:每张表必须有且只有一个主键
理解:主键上的数据不能重复且不能为空,主键就是该数据行的唯一表示
PRIMARY KEY – 主键
auto_increment – 自动增长
1.1 方式一:
INSERT INTO student VALUE(1,'小雷','women','23','99999','java');
1.2 方式二:
INSERT INTO student VALUES(1,'小雷','women','23','99999','java'),(2,'小杨','men','22','99999','java');
1.3 方式三:
INSERT INTO student(name,sex,age,salary,course) VALUE('小雷','women','23','99999','java');
INSERT INTO student(name,sex,age,salary,course) VALUE('小杨','men','22','99999','java');
INSERT INTO student(name,sex,age,salary,course) VALUE('小刘','women','21','8000','Python');
INSERT INTO student(name,sex,age,salary,course) VALUE('小李','men','24','9999','HTML');
INSERT INTO student(name,sex,age,salary,course) VALUE('小雷','women','23','99999','HTML');
效果截图:
三、数据的删除(删)
1、清空表数据
方式一:
TRUNCATE student;
注意:清空表数据后,再添加数据,主键会从1开始递增
方式二:
DELETE FROM student;
经验:1、考虑到删除的数据有可能恢复,使用方式二删除数据,再恢复备份,主键不会冲突
2、项目中的数据大概率不会删除,如果要做删除功能,可以在表上加一个字段来去表述该数据行是否可用(ps:0表示删除,1表示未删除)
2、单条件删除数据
DELETE FROM student WHERE id=5;
3、多条件删除数据
OR – 或
DELETE FROM student WHERE course='Python' OR course='HTML';
效果截图:
AND – 与(并且)
DELETE FROM student WHERE course='html' and sex='women';
效果截图:
IN(值1,值2,值3,…) – 删除字段上包含的数据
DELETE FROM student WHERE age IN(22,23);
效果截图:
四、数据的修改(改)
1、修改所有数据
UPDATE student SET salary=10000;
2、单条件修改数据
UPDATE student SET salary=25000 WHERE id=1;
3、多条件修改数据
OR – 或
UPDATE student SET salary=30000 WHERE course='python' OR course='html';
效果截图:
AND – 与(并且)
UPDATE student SET salary=40000 WHERE course='java' AND sex='women';
IN(值1,值2,值3,…) – 删除字段上包含的数据
UPDATE student SET salary=50000 WHERE age IN(22,23,24);
4、修改多个数据
UPDATE student SET age=20,salary=60000 WHERE id=2;
五、数据的查询(查)-- DQL
1、查询所有字段
SELECT * FROM student;
2、查询指定字段
SELECT NAME,sex,age FROM student;
3、 查询指定字段 + 别名
SELECT name AS '姓名', sex AS '性别', age AS '年龄' FROM student;
效果截图:
4、单条件查询
SELECT * FROM student WHERE id=1;
5、多条件查询
OR:
SELECT * FROM student WHERE course='java' OR course='html';
AND:
SELECT * FROM student WHERE course='java' AND sex='women';
效果截图:
IN():
SELECT * FROM student WHERE age IN(21,22,23);
6、去重查询
需求:查询出学科
SELECT DISTINCT course FROM student;
效果截图:
7、模糊查询:
需求:查询出名字中带’雷’的学生信息
注意: % 表示没有或多个任意字符,_ 表示一个任意字符
SELECT * FROM student WHERE `name` LIKE '%雷%';
效果截图:
需求:查询出2个字的名字中最后一个字带’杨’的学生信息
SELECT * FROM student WHERE `name` LIKE '_杨';
效果截图:
8、单字段排序
需求:按照年龄排升序
注意:ORDER BY 排序,ASC 表示升序,DESC 表示降序
SELECT *FROM student ORDER BY age ASC;
效果截图:
需求:按照工资排降序
SELECT * FROM student ORDER BY salary DESC;
9、 多字段排序
需求:按照年龄排升序,年龄一致按照工资排降序
SELECT * FROM student ORDER BY age ASC,salary DESC;
效果截图:
10、限制查询
需求:查询出工资前三位的学生信息
SELECT * FROM student ORDER BY salary DESC LIMIT 3;
效果截图:
11、分页查询
分页的公式:*SELECT * FROM 表名 LIMIT (页数-1)页面条数,页面条数;
SELECT * FROM student LIMIT 0,5;
SELECT * FROM student LIMIT 5,5;
SELECT * FROM student LIMIT 10,5;
12、统计类函数查询/聚合查询
函数的理解:特定功能的代码块
需求:统计最高工资
SELECT MAX(salary) FROM student;
需求:统计最低工资
SELECT MIN(salary) FROM student;
需求:统计平均工资(保留2位小数)
SELECT ROUND(AVG(salary),2) FROM student;
需求:统计工资总和
SELECT SUM(salary) FROM student;
需求:统计学生个数
SELECT COUNT(id) FROM student;
注意:count()函数不统计字段数据为null的个数
经验:统计数据条数,count()函数中的字段使用主键(因为主键不允许重复且不能为null)
13、子查询
需求:查询最高工资的学生
SELECT * FROM student WHERE salary=(SELECT MAX(salary) FROM student);
经验:实际工作中极少使用子查询,因为效率太低
14、分组过滤查询
需求:查询出各个学科的平均工资
SELECT course ,AVG(salary) FROM student GROUP BY course;
15、分组过滤查询 + 条件
需求:查询出平均工资大于1万的学科信息
SELECT course,AVG(salary)FROM student GROUP BY course HAVING AVG(salary)>10000;
效果截图:
多表查询接下一章