《SQL必知必会》疑难点梳理笔记

1. DISTINCT 关键字

DISTINCT关键字作用于其后的所有表列,而不仅仅是紧跟其后的那一列。

当指定SELECT DISTINCT vend_id, prod_price时,因为指定的这两列不完全相同,所以所有的行都会被检索出来。

2. LIMIT关键字

  • LIMIT关键字用于返回指定数量的行来对查询结果进行限制,并非通用SQL关键字,为MySQL、MariaDB、PostgreSQL和SQLite特有。
  • LIMIT指定返回的行数,当需要指定返回的起始行数时,使用OFFSET关键字。
  • 注意,结果集的行下标从0开始。LIMIT 1 OFFSET 1会检索第二行。
  • 对于DBMS MySQL、MariaDB和SQLite,LIMIT 4 OFFSET 3 可以简化为LIMIT 3,4

3. 常用的注释方式

-- 这是单行注释,使用前要加一个空格。
# 这是单行注释,使用率没有上面那种高。部分DBMS不支持,但MySQL支持。
/*这是
多行注释。*/

4. ORDER BY子句

  • 在指定ORDER BY子句时,应该保证它是SELECT语句的最后一条子句,否则会报错。
  • 如果要在多个列上进行降序排序,必须对每一列指定DESC关键字,例如ORDER BY prod_price DESC,prod_name DESC

5. BETWEEN操作符

当使用BETWEEN操作符进行范围检查时(BETWEEN a AND b),匹配值的范围为[a,b]。

6. NULL 关键字

  • 进行空值检查时,要使用IS NULL 而不是=NULL
  • 通过过滤选择不包含指定值的所有行时,查询不会返回含NULL值的行。
  • 当使用通配符进行模糊查询时,如WHERE prod_name LIKE '%',查询字段为NULL的行不会被匹配。
  • 列值为空的行会被聚合函数(avg()、min()等)忽略。

7. 省略了FROM的SELECT语句

SELECT语句通常用于从表中检索数据,但是在省略了FROM子句后就是简单的访问和处理表达式。

  • SELECT 2*3

    返回6

  • SELECT Trim(' abc ')

    返回abc

  • SELECT Now( )

    返回当前日期时间

可以根据需要使用SELECT语句进行测试、检验函数和计算。

8. 聚集函数

对某些行运行的函数,计算并返回一个值。

SQL常用的5个聚集函数:

  • AVG()

    返回某列平均值

  • COUNT()

    返回某列的行数

  • MAX()

    返回某列的最大值

  • MIN()

    返回某列的最小值

  • SUM()

    返回某列值之和

9. 辨析COUNT(column)与COUNT(*)

  • 使用COUNT(*)对表中的行进行计数,不管表列包含的值是否为NULL。
  • 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL。

10. TRUNCATE关键字

  • 用于清除关系表中的所有数据,相当于不加WHERE条件的DELETE语句。
  • 和不加WHEREDELETE语句一样,TRUNCATE操作只删除表中的数据,不删除表本身。
  • 如果想删除表中所有数据,请使用TRUNCATE替代DELETE,因为在完成相同的工作,它执行的速度更快(因为无需记录数据的变动)。

11. ODBC数据源

ODBC

  • ODBC是一个标准,能使客户端应用与不同的后端数据库或基础数据库引擎交互。
  • 使用ODBC,能够在一个客户端中编写代码,与几乎所有数据库和DBMS进行交互。
  • ODBC本身不是数据库,但它包装了数据库,使得所有数据库以一致和清晰定义的方式工作。

数据源

数据源是一个逻辑数据库,包括:

  • 驱动程序

    每种类型的DBMS都有自己的驱动程序。

  • 连接数据库的信息

    包括文件路径、服务器名等。

12. 主键约束

主键

其值能够唯一标识表中每一行的一列(或一组列)。

主键列需要满足的条件:

  • 任意两行都不具有相同的主键值。
  • 每一行必须有一个主键值。
  • 主键列中的值不允许修改或更新。
  • 主键值不能重用。如果某行从表中删除,它的值不能赋给以后的新行。

13. 外键约束

外键

  • 外键是表中的一列,其值必须列在另一表的主键中。

  • 外键是保证引用完整性的重要部分。

-- 1. 在创建表时添加外键约束
CREATE TABLE Orders(
    order_num INT PRIMARY KEY,
  order_date datetime NOT NULL,
  cust_id varchar(50) NOT NULL REFERENCES Customers(cust_id)
);
-- 2. 在修改表时添加外键约束
ALTER TABLE Orders 
ADD CONSTRAINT
FOREIGN KEY (cust_id) REFERENCES Customers(cust_id);
-- 3. 在GUI交互工具中创建

14. 唯一约束

作用

唯一约束用来保证一列(或一组列)中的数据时唯一的。

唯一约束与主键约束的区别:

  • 一张表最多只能有一个主键,但可以包含多个唯一约束。
  • 唯一约束列可以包含NULL。
  • 唯一约束列可以修改或更新。
  • 唯一约束列的值可以重复使用。
  • 与主键不同,唯一约束不能用于定义外键。

15. 复制表

用途

复制表是对新SQL语句进行测试的一种好方法。在复制的数据上测试SQL代码,不会影响实际的数据。

-- MySQL复制表语法
CREATE TABLE CustCopy
AS
SELECT * FROM CUSTOMERS;

16. 联结查询

联结是什么

联结是一种机制,用来在一条SELECT语句中关联表。

类型

  • 内联结(等值联结)
  • 自联结
  • 外联结(左外联结、右外联结、全外联结)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第三课: 排序检索数据 distinct关键字:distinct 列名1,列名2,列名3DISTINCT 关键字会...
    VictorBXv阅读 5,362评论 0 8
  • 十六、更新和删除数据 1.更新数据 两种方式:更新表中的特定行,更新表中的所有行 update语句 三部分:要更新...
    兀镜晓Jingle阅读 4,612评论 0 33
  • 阅读总结 用于了解 SQL 的基础知识还是非常好的。 在使用时可以具体看 DBMS 文档。 以下 SQL 以 cn...
    TWLESVCNZ阅读 3,950评论 0 1
  • SQL 必知必会 在mac终端操作sqlite: cd 数据库所在的目录 sqlite3 数据库文件名 //带后缀...
    陈_振阅读 4,145评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,182评论 16 22