1. DQL操作单表

1.1 创建数据库,复制表

image.png
image.png
image.png

1.2 排序

  • 通过 ORDER BY 子句,可以将查询出的结果进行排序(排序只是显示效果,不会影响真实数据)

image.png

1.2.1 排序方式

image.png
image.png

1.3 聚合函数

image.png

  • 聚合函数不会统计NULL空值

image.png
image.png

1.4 分组

  • 分组查询指的是使用 GROUP BY 语句,对查询的信息进行分组, 相同数据作为一组

image.png
image.png
image.png
image.png
image.png
image.png

1.5 limit关键字

image.png
image.png
image.png

2. SQL约束

image.png

2.1 主键约束

image.png

2.1.1 添加主键约束

image.png
image.png
image.png

2.1.2 删除主键约束

  • 删除 表中的主键约束 (了解)

    1. -- 使用DDL语句 删除表中的主键
    2. ALTER TABLE emp2 DROP PRIMARY KEY;
    3. DESC emp2;

    2.1.3 主键的递增

    image.png
    创建主键自增的表

    -- 创建主键自增的表
    CREATE TABLE emp2(
      -- 关键字 AUTO_INCREMENT,主键类型必须是整数类型
      eid INT PRIMARY KEY AUTO_INCREMENT,
      ename VARCHAR(20),
      sex CHAR(1)
    );
    

    2.1.4 修改主键自增的起始值

  • 默认地 **AUTO_INCREMENT **的开始值是 1,如果希望修改起始值,请使用下面的方式

    -- 创建主键自增的表,自定义自增其实值
    CREATE TABLE emp2(
      eid INT PRIMARY KEY AUTO_INCREMENT,
      ename VARCHAR(20),
      sex CHAR(1)
    )AUTO_INCREMENT=100;
    -- 插入数据,观察主键的起始值
    INSERT INTO emp2(ename,sex) VALUES('张百万','男');
    INSERT INTO emp2(ename,sex) VALUES('艳秋','女');
    

    3.1.5 DELETE和TRUNCATE对自增长的影响

  • 删除表中所有数据有两种方式

image.png

2.2 非空约束 **

  • 非空约束的特点: 某一列不予许为空

image.png

# 非空约束
CREATE TABLE emp2(
    eid INT PRIMARY KEY AUTO_INCREMENT,
    -- 添加非空约束, ename字段不能为空
    ename VARCHAR(20) NOT NULL,
    sex CHAR(1)
);

2.3 唯一约束

  • 唯一约束的特点: 表中的某一列的值不能重复( 对null不做唯一的判断 )

image.png

zeCREATE TABLE emp2 (
  eid int(11) NOT NULL AUTO_INCREMENT,
  enam varchar(20) NOT NULL,
  sex char(1) DEFAULT NULL,
  PRIMARY KEY (eid),
  UNIQUE KEY ename (ename)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
#创建emp3表 为ename 字段添加唯一约束
CREATE TABLE emp3(
    eid INT PRIMARY KEY AUTO_INCREMENT,
    ename VARCHAR(20) UNIQUE,
    sex CHAR(1)
);

image.png

2.4 外键约束

  • FOREIGN KEY 表示外键约束,将在多表中学习。

    2.5 默认值

    默认值约束 用来指定某列的默认值
    image.png

    3. 数据库事务

    3.1 什么是事务

    事务是一个整体,由一条或者多条SQL 语句组成,这些SQL语句要么都执行成功,要么都执行失败, 只要有一条SQL出现异常,整个操作就会回滚,整个业务执行失败 。

    比如: 银行的转账业务,张三给李四转账500元 , 至少要操作两次数据库, 张三 -500, 李四 + 500,这中
    间任何一步出现问题,整个操作就必须全部回滚, 这样才能保证用户和银行都没有损失.

  • 回滚

即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,滚回到事务开始时的状态。(在提交之前执行)

3.2 模拟转账操作

image.png

  • 假设当tom 账号上 -500 元,服务器崩溃了。jack 的账号并没有+500 元,数据就出现问题了。

    我们要保证整个事务执行的完整性,要么都成功, 要么都失败. 这个时候我们就要学习如何操作事务
    

3.3 MySQL事务操作

MYSQL 中可以有两种方式进行事务的操作:

  • 手动提交事务
  • 自动提交事务

    3.3.1 手动提交事务

    image.png

image.png

3.3.2 自动提交事务

image.png
image.png
image.png

3.4 事务的四大特性 ACID

image.png

3.5 MySQL 事务隔离级别(了解)

3.5.1 数据并发访问

image.png

3.5.2 并发访问会产生的问题

image.png

3.5.3 四种隔离级别

任务二 MySQL单表&约束&事务 - 图39

3.6 隔离性问题演示


3.6.1 脏读演示

脏读: 一个事务读取到了另一个事务中尚未提交的数据

  1. 打开窗口登录 MySQL,设置全局的隔离级别为最低

image.png
image.png
3) 设置隔离级别为最低 读未提交
set global transaction isolation level read uncommitted;
image.png
image.png
image.png
image.pngimage.png
image.png
image.png
image.png

3.6.2 解决脏读问题

image.png