书评「SQL基础教程(第2版)」| 你应该知道的基础知识点梳理·中

写在前面

系列文章第二篇,包含该书第4-6章的29个知识点。

*本文代码均基于MySQL环境。


第4章 数据更新

24.INSERT语句

INSERT INTO <表名> (列1,列2,列3,......) VALUES (值1,值2,值3,......);
--字符型的值需要用''括起来
--对表进行全列INSERT时,可以省略表名后的列清单

 

25.多行INSERT

INSERT INTO <表名> VALUES (值1,值2,值3,......), 
                         (值21,值22,值23,......),
                         (值31,值32,值33,......);

 

26.插入默认值

显式方法:在VALUES子句中指定DEFAULT关键字

隐式方法:省略INSERT语句中的列名,就会自动设定为该列的默认值(没有默认值时会设定为NULL)

 

27.从其他表中复制数据

INSERT INTO <复制表名> (列1,列2,列3,......) 
SELECT 列1,列2,列3,......
FROM 原表名;
--该SELECT语句中,也可以使用WHERE,GROUP BY 等各种语句

 

28.数据的删除

DROP TABLE 语句可以将表完全删除

DELETE 语句会留下表,而删除表中的全部数据

 

29.DELETE语句

DELETE FROM <表名>
  WHERE <条件>;

 

30.UPDATE语句

UPDATE <表名>
  SET <列名> = <表达式>
WHERE <条件>;
--对于未设定为NOT NULL约束的列,可以将右边表达式写为NULL来将值清空。

 

31.多列清空

UPDATE <表名>
  SET <列名1> = <表达式1>,<列名2> = <表达式2>,......
WHERE <条件>;

 

32.事务

事务是需要在同一个处理单元中执行的一系列更新处理的集合。通过使用事务,可以对数据库中的数据更新处理的提交和取消进行管理。

 

33.创建事务

START TRANSACTION;
   DML语句1;
   DML语句2;
   ......
事务结束语句(COMMIT或者ROLLBACK);

 

34.COMMIT——提交处理

COMMIT是提交事务包含的全部更新处理的结束指令,相当于文件处理中的覆盖保存。一旦提交,就无法恢复到事务开始之前的样子了。

 

35.ROLLBACK——取消处理

ROLLBACK是取消事务包含的全部更新处理的结束指令,相当于文件处理中的放弃保存。一旦回滚,数据库就会恢复到事务开始之前的状态。

 

36.ACID特性

原子性Atomicity:事务结束时,其中所包含的更新处理要么全部执行,要么完全不执行。

一致性Consistency:事务中包含的处理要满足数据库提前设置的约束,如主键约束或者NOT NULL约束等。

隔离性Isolation:保证不同事务之间互不干扰的特性,该特性保证了事务之间不会互相嵌套。

持久性Durability:事务结束后,DBMS能够保证该时间点的数据状态会被保存的特性。


第5章 复杂查询

37.视图

从SQL的角度来看,视图和表是相同的,但表保存的是实际的数据,而视图中保存的是SELECT语句。

优点: 1节省 存储设备的容量;2 可以将频繁使用的SELECT语句保存成视图,就不用每次都重新书写了。

 

38.创建视图

CREATE VIEW 视图名称 (<视图列名1>,<视图列名2>,......)
AS
<SELECT语句>

 

39.视图的限制

定义视图时不能使用ORDER BY,因为视图和表一样,数据行都是没有顺序的。

视图和表需要同时进行更新,因此通过汇总得到的视图无法进行更新。

 

40.删除视图

DROP VIEW 视图名称 (<视图列名1>,<视图列名2>,......)

 

41.子查询

子查询就是将用来定义视图的SELECT语句直接用于FROM子句当中,子查询并不会保存下来,在执行完之后就会消失。

 

42.标量子查询

标量子查询就是返回单一值的子查询。能够使用常数或者列名的地方,无论是SELECT子句,GROUP BY 子句,HAVING子句,还是ORDER BY子句,几乎所有的地方都可以使用。

 

43.关联子查询

关联子查询会在细分的组内进行比较时使用。

关联子查询和GROUP BY子句一样,也可以对表中的数据进行切分。

关联子查询的结合条件如果未出现在子查询之中就会发生错误。


第6章 函数,谓语,CASE表达式

44.函数的种类

算数函数

字符串函数

日期函数

转换函数

聚合函数

 

45.算数函数

--ABS绝对值
ABS(数值)

--MOD求余
MOD(被除数,除数)

--ROUND 四舍五入
ROUND(对象数值,保留小数的位数)

 

46.字符串函数

--CONCAT函数 拼接字符串
CONCAT(字符串1,字符串2)

--LENGTH 字符串长度
LENGTH(字符串)

--LOWER 小写转换
LOWER(字符串)

--UPPER 大写转换
UPPER(字符串)

--REPLACE 字符串的替换
REPLACE(对象的字符串,替换前的字符串,替换后的字符串)

--SUBSTRING 字符串的截取
SUBSTRING(对象字符串 FROM 截取的起始位置 FOR 截取的字符数)

 

47.日期函数

--CURRENT_DATE 当前日期
CURRENT_DATE

--CURRENT_TIME 当前时间
CURRENT_TIME

--CURRENT_TIMESTAMP 当前日期和时间
CURRENT_TIMESTAMP

--EXTRACT 截取日期元素
EXCRACT( 日期元素 FROM 日期)
--该函数的返回值并不是日期类型而是数值类型

 

48.转换函数

--CAST 类型转换
CAST (转换前的值 AS 想要转换的数据类型)

--COALESCE 将NULL转换为其他值
COALESCE(数据1,数据2,数据3,......)
--该函数会返回可变参数中左侧开始第一个不是NULL的值

 

49.LIKE谓词

当需要进行字符串的部分一致查询时需要使用LIKE谓词。

% 代表0字符以上的任意字符串

_ 代表任意一个字符

 

50.BETWEEN谓词

用该谓词进行范围查询。查询包含临界值。

 

51.IN谓词

通过IN来指定多个参数进行查询,否定形式用 NOT IN 来实现。

IN和NOT IN无法选取出NULL值。

可以将子查询作为IN谓词的参数。

 

52.CASE表达式

CASE WHEN  <求值表达式> THEN  <表达式>
          WHEN  <求值表达式> THEN  <表达式>
          ......
          ELSE <>
 END

ELSE子句可以省略,END不能省略。

小结

本文整理了SQL基础教程第4-6章的知识点。4-6章介绍了数据更新相关的语句,讲解了事务的特性,引入了非常重要的视图和子查询的知识,最后详细说明了函数和谓词以及CASE表达式的用法。

这三章的知识相对进阶,可以通过本文巩固复习知识点,但想要熟练运用还需要大量的练习。

 

本文为作者独立整理撰写,如有错漏,欢迎批评指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值