1、常见DML语句
1.1 INSERT语句
说明:将数据插入到数据库表中。
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
实例:添加C罗信息到数据库表中
insert into employee (ID, name, gender, entrydate, age) values (7,'克里斯蒂亚诺','男','2022-12-29',39);
1.2 UPDATE语句
说明:更新数据库表中现有数据行中的内容。
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
实例:将詹姆斯的年龄设置为29岁
update employee set age=29 where name='詹姆斯';
1.3 DELETE语句
说明:从数据库表中删除数据行。
DELETE FROM table_name WHERE condition;
实例:删除C罗信息
delete from employee where name='克里斯蒂亚诺';
2、常见DQL语句
2.1 SELECT语句
说明:用于从数据库中检索数据。
SELECT column1, column2, ... FROM table_name WHERE condition ORDER BY column_name ASC|DESC;
实例:
检索表中所有列的数据:
select * from employee;
检索指定列及符合条件的数据:
SELECT name, age FROM employee WHERE age > 25;
检索并按年龄降序排序:
SELECT name, age FROM users ORDER BY age DESC;
2.2 GROUP BY子句
说明:用于将行分组,并对每个组应用聚合函数。
实例:根据性别分组,并统计每个性别的员工个数
SELECT gender,count(*) FROM employee GROUP BY gender;
实例:选取 employee
表中年龄大于等于 25 岁的员工,然后按性别 (gender
) 分组计算每个性别的平均年龄,并最终筛选出平均年龄也大于等于 25 岁的性别组。
SELECT gender, AVG(age) avgAge FROM employee WHERE age>=25 GROUP BY gender HAVING avgAge >= 25;
注意,where是在分组前进行过滤,不满足where条件不参与分组。having是对分组后的结果进行过滤。where不能对聚合函数进行判断,而having可以。
执行顺序 where >聚合函数>having。
2.3 DQL语句执行顺序
1、FROM 子句:
首先确定查询的数据来源,识别表或视图,并进行 JOIN 操作(如果有的话)。
处理表的合并、连接和子查询,形成查询的基础数据集。
2、WHERE 子句:
从 FROM 子句中生成的数据集中过滤数据,应用行级过滤条件,排除不满足条件的记录。
3、GROUP BY 子句:
将 WHERE 子句筛选后的数据按指定列进行分组。每个分组中会产生一个数据集合。
4、HAVING 子句:
对 GROUP BY 子句生成的每个分组进行进一步的过滤,应用分组级的条件。
5、SELECT 子句:
从经过 HAVING 子句过滤的数据中选择具体的列和表达式,计算聚合函数(如 COUNT、AVG、SUM 等)。
6、DISTINCT 子句:
在 SELECT 子句中选择的结果中去除重复的记录(如果有 DISTINCT 关键字的话)。
7、ORDER BY 子句:
对 SELECT 子句产生的结果集进行排序,按照指定的列和排序顺序(升序或降序)。
8、LIMIT / OFFSET 子句:
最后,限制返回的记录数(LIMIT)或跳过一定数量的记录(OFFSET),控制查询结果的范围。