发布于 

MySQL 学习笔记

  

关系模型

数据库是由一张张二维表组成的,而各表之间又存在 “一对一”,”一对多”,”多对一”,”多对多” 这样复杂的关系。这种关系主要由主键和外键来维护的。

主键

主键作为区别每张表每行记录的标识。要求主键与业务不相关,保持不变动。
自增类型的主键:AUTO_INCREMENT
联合主键: 由多张表主键联合构成,形成新的组合标识,联合主键允许单个主键重复。

外键

将两张表通过一个字段进行关联。

增加外键约束

1
2
3
4
ALTER TABLE 表名1
ADD CONSTRAINT 外键约束条件名
FOREIGN KEY (外键字段)
REFERENCES 表名2 (关联字段);

删除外键约束

1
2
ALTER 表名1  
DROP FOREIGN KEY 外键约束条件名

索引

创建索引

1
2
ALTER TABLE 表名
ADD INDEX idx_score_and_name (score,name);

唯一索引

1
2
ALTER TABLE 表名
ADD UNIQUE INDEX uni_name (name);

查询

基础查询

SELECT * FROM 表名

条件查询

SELECT * FROM 表名 WHERE 条件语句

  • 逻辑语句

    • 分类
      AND OR NOT
    • 优先级
      NOT > AND > OR

      投影查询

      SELECT 列名 列重命名 FROM 表名

      排序

      SELECT * FROM 表名 ORDER BY XXX DESC
      DESC 为 “倒序”,默认 ORDER 排序为升序(由小到大)

      分页

      SELECT * FROM xx表名 LIMIT 页容量(pageSize) OFFSET 起始索引值(pageIndex)
      LIMIT = pageSize(每页大小)
      OFFSET = pageSize * (pageIndex - 1) (pageIndex 页面下标,以一开始)

      聚合查询

  • 聚合函数
    COUNT,AVG,SUM,MIN,MAX

  • 分组
    SELECT * FROM students GROUP BY class_id,gender
    可以进行多次分组

    多表查询

    SELECT * FROM 表一,表二

    连接查询

    示意图链接

    分类
  • 内连接
    INNER JOIN <表二> ON <连接条件>;

  • 外连接

    • 左外连
      LEFT OUTTER JOIN <表二> ON <连接条件>;

    • 右外连
      RIGHT OUTTER JOIN <表二> ON <连接条件>;

修改

插入

INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);

更新

UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;

删除

DELETE FROM <表名> WHERE ...;

事务

将多条 SQL 语句作为整体执行

ACID 四个特性:

  • A:Atomic,原子性
  • C:Consistent,一致性
  • I:Isolation,隔离性
  • D:Duration,持久性

    隔离等级

  • Read Uncommitted
  • Read Committed
  • Repeatable Read
  • Serializable

参考文章