SQL基础教程(第二版)学习笔记

SQL基础教程(第二版)

1 数据库和SQL

1.1 数据库管理系统 DBMS**

  • 层次数据库 HDB

  • 关系数据库 RDB

RDBMS

  • Oracle
  • SQL server
  • DB2
  • PostgreSQL
  • MySQL
  • 面向对象数据库 OODB

  • XML数据库 XMLDB

  • 键值存储系统 KVS

1.2 数据库的结构

客户端 ——SQL语句——> 服务器 RDBMS <————> 数据库(数据保存到硬盘等设备上)
<——请求的数据——

1.3 SQL语句及种类

  • DDL 数据库定义语言

CREATE

DROP :删除表

ALTER :添加或删除列( 按列)

  • DML 数据库操纵语言

SELECT

INSERT :插入记录(按行)

UPDATE :修改数据记录

DELETE :删除记录,表保存

  • DCL 数据库控制语言

COMMIT :确认数据库变更

ROLLBACK :取消变更

GRANT :赋予用户操作权限

REVOKE :取消用户操作权限

1.4 数据类型指定及约束

  • 数字型 INTEGER / NUMERIC(n)

  • 字符型 定长CHAR / VARCHAR可变长

  • 日期型

  • NOT NULL 和 PRIMARY KEY

2 基础查询

2.1 SELECT

中文别名使用双引号括起来;

distinct 去重;

where条件选择;

注释 :单行__ 多行"/" 和"/" 括起来;

2.2 算术运算符和比较运算符

+ - * / // %

所有包含NULL的计算都为NULL

> < = <> >= <=

字符串比较从第一个字符开始

不能对NULL使用比较运算符, 否则为空

2.3 逻辑运算符

NOT AND OR

AND的优先级高于OR

SQL的逻辑运算被称为三值逻辑:真、假、不确定

3 聚合排序

3.1 聚合函数

  • COUNT 单列不计算NULL

  • AVG

  • SUM

  • MAX 日期也可以最大最小值计算

  • MIN

聚合函数会将NULL排除在外,但COUNT除外

3.2 分组 group by

为聚合结果指定条件使用HAVING而不是WHERE, HAVINGgroup by之后

3.3 排序 order by

指定多个排序 order by col_a asc, col_b desc

NULL会汇集在开头或者结尾

3.5 书写和执行顺序

书写顺序

SELECT > FROM > WHERE > GROUP BY > HAVING > ORDER BY

执行顺序

FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY

4 事务

数据的更新、插入、删除(MySQL)

START TRANSACTION;
​
DML(INSERT /  DELET  /  UPDATE)
INSERT INTO table_name  VALUES (..., [DEFAULT], ...);
...
​
DELET FROM table_name;
​
UPDATE table_name
SET ...
[WHERE ...];
​
COMMIT/ROLLBACK;

插入默认值用 DEFAULT value来约束

DBMS的事务的四种特性:原子性、统一性、隔离性、持久性。(ACID特性)

5 复杂查询

  • 视图

创建视图 CREATE VIEW

视图包含 ”不能使用ORDER BY“ 和 ”可对其进行有限制的更新“两项限制

删除视图 DROP VIEW

  • 子查询

标量子查询

  • 关联子查询

WHERE关联,结合条件写在子查询中

6 函数、谓词和case表达式

6.1 函数

  • 算数函数
ABS
ROUND(COL, N)
MOD
  • 字符串函数
LENGTH
CONCAT(str1, str2) ||
REPLACE(str, target, value)
SUBSTRING(str FROM pos FOR len)
LOWER/ UPPER
  • 日期函数
EXTRACT(YEAR/MON/DAY/HOUR/MINUTE/SECOND FROM date)
  • 转换函数
CAST(col AS 类型)  # 类型转换
COALESCE(NULL, value)
  • 聚合函数

6.2 谓词

  • LIKE (% _)

  • BETWEEN

  • IN / NOT IN (无法选出NULL数据, IN包含NULL为空)

  • IS NULL / IS NOT NULL

  • EXISTS

6.3 CASE

CASE 
WHEN ... THEN ... 
ELSE ... 
END

7 集合运算

7.1 表加减法

  • UNION

  • UNION ALL

  • EXCEPT

7.2 表联结

  • INNER JOIN

  • LEFT JOIN

  • RIGHT JOIN

  • FULL JOIN

  • CROSS JOIN

8 SQL高级处理——窗口函数

窗口函数

  • rank 排名相同时跳跃排名,如1, 1, 3, 4, 5, 5, 7

  • row_number 按行数顺序排名,如1, 2, 3, 4, 5

  • dense_rank 排名相同时不跳跃排名,如1, 2, 2, 3, 3, 4, 4, 5

窗口函数语法

<窗口函数> OVER ([PARTITION BY col_1] ORDER BY col_2 )


SQL书籍分享

链接: https://pan.baidu.com/s/1BfvkSeBoQXTOyW4zM5No-Q 提取码: vd8g



你可能感兴趣的:(SQL基础教程(第二版)学习笔记)