chap3.SQL中的数据操作
3.1.SQL概述
- 数据操作:增、删、改、查、统计
- 基本数据类型:数值型,字符型。字符型用单引号括起来。其它类型的用函数来转化成所想要的类型。
e.g. 日期型: DATE ‘1975-05-17’, TIME ‘15:00:00’
3.2.数据操作的流程
3.3.更新
3.3.1.增
INSERT INTO 表名(字段名 1,字段名 2,...,字段名 n) VALUES(字段 1 的值,字段名 2 的值,...,字段名 n 的值);
- 如果只加部分字段就要把加哪些字段具体写出来,和value一一对应(被省略的字段的值会被设成NULL)(但最好不要省,因为可能会导致数据混乱)(主键必须赋值);如果一行的所有字段都加,就要写全。
e.g. INSERT INTO branch (branchNo, bName) VALUES (‘B06’, ‘Advanced technology’);
3.3.2.删
DELETE FROM 表名 WHERE 条件;
- 分为:删所有/删一行/删多行
%:通配符(字符串) e.g. …LIKE ’2012%’; (通配符的时候比较运算符不能用“=”,用LIKE。)
_ :通配符(字符),如果 _ 和%要作为普通字符出现,需要加#
e.g. DELETE FROM teacherWHERE email LIKE ‘rj#_%@hnu.edu.cn’ ESCAPE #; 删除教师表 Teacher 中字段 email 的取值是以’rj _’ 开头,并以’@hnu.edu.cn’结尾的行。
- 逻辑判定的四种类型:
- = / > / < / <>(不等于)/ <= / >=
- IN / NOT IN
- LIKE / NOT LIKE
- IS / NOT IS(NULL)
- 逻辑判别子式间的逻辑运算符有:AND, OR。AND 的优先级高于 OR。
3.3.3.改
UPDATE 表名 SET 字段名1 = 取值1, 字段名2 = 取值2, ...., 字段名n = 取值n WHERE 条件;
3.4.查询操作
SELECT 字段名 1, 字段名 2, ...., 字段名 n FROM 表名 WHERE 条件;
- 条件类型:
1.1.等值
1.2.范围
1.3.模糊 - ⭐先选择,再投影:因为投影输出结果可能会出现重复的行,如果想只留下一行:SELECT DISTINCT …
- 对输出结果进行排序:ORDER BY,升序:ASC,降序:DESC
- 一个表的所有字段:(*)
3.5.统计操作
- 五个基本聚集函数:COUNT(求行数)(只有它没忽略null值)、SUM、AVG(这两个只针对数值型)、MIN、MAX
- 先查询,再统计,统计结果是单一的值(一行数据)
- 如果输入相同&&查询条件相同,多个统计可以合成一个
注意:统计操作的输出结果只有一行数据。SELECT 后面只能接统计函数,不能接输出字段。例如,SELECT teacherNo , SUM(salary) FROM teacher 就是一个语义错误的 SQL 语句。
- 输出字段可以重新命名:AS e.g. SELECT COUNT(*)AS person_num, SUM(salary)AS salary_sum FROM teacher ;
- 分组统计:GROUP BY(输出字段允许且仅允许出现分组字段和聚集函数,不然没有意义)
e.g.SELECT courseNo, COUNT(*) AS enroll_num FROM enroll WHERE semester = ‘2017-1’ GROUP BY courseNo HAVING enroll_num < 12 ;//统计在’2017-1’学期选修人数不到 12 人的课程,列出这些课程的课程编号,及其选修的学生人数
- HAVING和WHERE的区别是,HAVING类似于对统计完了之后得到的那个表再进行WHERE。
- 执行顺序:1.WHERE 2.GROUP BY 3.聚集 4.HAVING 5.ORDER BY