Mysql

Mysql数据库

DDL-数据定义语言

操作数据库

image-20230420112532062

操作数据库表

image-20230420112623209

创建表

image-20230420112701375

数据类型

  1. 字符串型

image-20230420112944835

  1. 数值类型

image-20230420113011125

  1. 日期类型

image-20230420113123275

修改表

image-20230420113340883

image-20230420113704275

image-20230420113740337

image-20230420113819468

image-20230420113915067

DML-数据操作语言

插入-INSERT

image-20230420114922379

修改-UPDATE

image-20230420125424726

image-20230420125515885

删除-DELETE

image-20230420125540949

DQL-数据查询语言

image-20230420125855896

image-20230420130040208

DQL-基本查询

image-20230420130706783

DQL-条件查询

image-20230420131305349

DQL-分组查询

  • DQL-聚合函数

    image-20230420131429197

  • DQL-分组查询

    image-20230420132127662

DQL-排序查询

image-20230420132327580

DQL-分页查询

image-20230420132436172

DQL-执行顺序

image-20230420132809434

DCL-数据控制语言

主要管理数据库的数据访问权限,管理数据库的用户

DCL-管理用户

image-20230420154739018

创建一个用户在任何主机可以访问,可以将@localhost换成@%

DCL-权限控制

image-20230420155750782

image-20230420155953544

函数

字符串函数

image-20230420161812977

数值函数

image-20230420174351395

日期函数

image-20230420191808256

注:DATE_ADD()方法

INTERVAL 是固定的,expr时间隔多少,type时间隔类型

流程函数

image-20230420192731682

image-20230420193824981

约束

  1. 概念:约束时作用于表中字段上的规则,用于限制存储在表中的数据

  2. 目的:保证数据库中数据的正确、有效和完整性

  3. 分类

    image-20230420194344714

示例

image-20230420195201725

外键约束

  • 概念:外键是让两张表的数据之间建立联系,从而保证数据的一致性和完整性

image-20230420195716614

  • 语法

    添加外键

    image-20230420195935208

    image-20230420200527264

    删除和更新行为

    image-20230420200843026

    设置行为

    image-20230420201017834

多表查询

概述

image-20230421202652644

  • 一对多

    image-20230421202829473

  • 多对多

    image-20230421202930950

  • 一对一

    image-20230421203244496

多表查询概述

  • 概述:在多张表中进行数据查询

  • 多表查询分类

    image-20230421204001993

内连接语法

image-20230421204334730

注:显式内连接的inner可以省略

外连接

  • 外连接查询语法

    image-20230421205142917

自连接

image-20230421210026442

自连接也可以是左外连接或者右外连接

联合查询

image-20230421210955882

union all:直接将两次查询的结果进行合并拼接

union:将两次查询出来的结果集进行去重拼接

对于联合查询来说,查询出来的列数量必须保持一致,并且字段类型也要一样

子查询(嵌套查询)

  • 概念:SQL中的嵌套select语句,称为嵌套查询,又称子查询

    image-20230421211629882

  • 分类

    image-20230421211653805

image-20230421211715575

标量子查询

image-20230421211831736

image-20230421213905493

列子查询

image-20230421212444474

image-20230421213840750

行子查询

image-20230421213431860

image-20230421213757404

表子查询

image-20230421213954804

image-20230421214319624

事务

事务简介

image-20230422101902357

MySQL事务是默认提交的 默认为隐式提交

事务操作

在出现异常之后,需要回滚,因为异常之前的sql已经执行,会和下次的sql一起提交,会造成数据的混乱

第一种

改变事务的提交方式

image-20230422102914849

第二种

开启事务,不会改变事务的提交方式

image-20230422103641706

事务的四大特征(ACID)

image-20230422104210473

并发事务问题

image-20230422104611339

脏读

一个事务可以读取到另外一个事务的数据

image-20230422104816062

不可重复读

事务在一个事务中,执行相同的查询语句,在本事务中没有改变数据的情况下,两次查询的结果不一样

image-20230422105021481

幻读

在解决了不可重复读的基础上,事务A第一次查询为空,事务B在事务A执行之后,向数据库中插入,事务A第一次查询为空,但是在插入的时候ID为主键,会插入失败,然后事务A在插入失败后,继续查询,此时已经解决了不可重复读问题,此时查询还是空的,这时就发现,这一条数据就好像 “幻影” 一样存在,称之为幻读

image-20230422105729748

事务的隔离级别(解决并发产生的事务问题)

分类

叉号表示解决了对应的事务问题

image-20230422110340441

oracle的事务隔离级别默认为 Read Committed

事务的隔离级别越高,数据越安全,速度越慢

查看

image-20230422110741248

总结

image-20230422210435604