您的位置:首页 > 科技 > IT业 > 数据库操作语言(DML)

数据库操作语言(DML)

2024/10/5 13:55:07 来源:https://blog.csdn.net/yjp1240201821/article/details/140134718  浏览:    关键词:数据库操作语言(DML)

数据库操作语言(DML)

一、四种操作

  1. 数据查询 (Data Querying): 从数据库中检索数据。最常用的查询语言是SQL (Structured Query Language) 中的 SELECT 语句。
  2. 数据插入 (Data Insertion): 将新数据添加到数据库中,常用的SQL语句是 INSERT INTO
  3. 数据更新 (Data Updating): 修改数据库中的现有数据,常用的SQL语句是 UPDATE
  4. 数据删除 (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;

效果截图:

在这里插入图片描述

多表查询接下一章

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com