美文网首页
SQL基础教程(第二版)学习笔记

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

作者: YoungHu | 来源:发表于2020-09-25 05:07 被阅读0次

    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基础教程(第二版)学习笔记

          本文链接:https://www.haomeiwen.com/subject/ltexuktx.html