MYSQL基础篇
MYSQL
数据库相关概念
- 数据库:存储数据的仓库,数据是有组织的进行存储
- 数据库管理系统:操纵和管理数据库的大型软件
- SQL:操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准
MYSQL数据库
关系型数据库
概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库
特点:
- 使用表存储数据,格式统一,便于维护
- 使用SQL语言操作,标准统一,使用方便
SQL的通用语法
- SOL语句可以单行或多行书写,以分号结民。
- SOL语句可以使用空格/縮进来增强语句的可读性。
- MySOL数据库的SOL语句不区分大小写,关链宇建议使用大写。
- 注释: 单行注释:–注释内容 或#注释内容(MySOL特有) 多行注释:/* 注释内容容*/,
SQL分类
DDL(Data Defintion Language):数据定义语言,用来定义数据库对象(数据库,表,字段)
DML(Data Manipulation Language):数据操作语言,用来对数据库表中的数据进行增删改
DQL((Data Query Language):数据查询语言,用来查询数据库中表的记录
DCL(Data Control Language):数据控制语言,用来创建数据库账户,控制数据库的访问权限
函数
一段可以直接被另一段程序调用的程序或代码
字符串函数
数值函数
日期函数
流程函数
流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选从而提高语句的效率
约束
概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据
目的:保证数据库中数据的正确,有效性和完整性
分类
- 非空约束:限制该字段的数据不能为null 关键字:NOT NULL
- 唯一约束:保证该字段的所有数据都是唯一,不重复的 关键字:UNIQUE
- 主键约束:主键是一行数据的唯一标识,要求非空且唯一 关键字:PRIMARY KEY
- 默认约束:保存数据时,如果未指定该字段的值,则采用默认值 关键字:DEFAULT
- 检查约束:保证字段值满足某一个条件 关键字:CHECK
- 外键约束:用来让两张表的数据之间建立连接,保证数据的一致性和完整性 关键字:FOREOGN KEY
外键约束的删除/更新行为
NO ACTION:当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与RESTRICT一致)
RESTRICT:当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与NO ACTION一致)
CASCADE:当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则也删除/更新外键在子表中的记录。
SET NULL:当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为NULL(这要求外键允许取null)
SET DEFAULT:父表变更时,子表将外键列设置成一个默认的值(Innodb不支持)
语法:
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGNKEY(外键字段) REFERENCES 主表名(主表字段名) ON UPDATE CASCADE ON DELETE CASCADE
多表查询
各表结构之间基本存在三种关系
- 一对多
- 多对多
- 一对一
概述:从多张表中查询数据
笛卡尔积:笛卡尔乘积是指在数学中,两个集合A集合和B集合的所有组合情况
多表查询分类
连接查询
内连接:相当于查询A,B交际部分数据
外连接:
左外连接:查询左表所有数据,以及两张表交集部分数据
- 语法:select 字段列表 from 表1 left [outer] join 表2 on 条件
右外连接:查询右表所有数据,以及两张表交集部分数据
- 语法:select 字段列表 from 表1 right[outer] join 表2 on 条件
自连接:当前表与自身的连接查询,连接必须使用表别名
- 语法:select 字段列表 from 表a 别名a join 表a 表名 b on条件
联合查询
对于union查询,就是把多次查询的结合合并起来,形成以恶搞新的查询结果集
语法:
select 字段列表 from 表a …
union [all]
select 字段列表 from 表b …
对应联合查询的多张表的列数必须保持一致,字段类型也需要保持一致
union all 会将全部的数据直接合并在一起,union会对合并之后的数据去重
子查询
概念:SQL语句中嵌套SELECT语句,称为嵌套查询,又称为子查询
select * from t1 where column = (select column1 from t2)
事务
一组操作集合,要么同时成功,要么同时失败
事务的四大特性
原子性 (Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
一致性 (Consistency):事务完成时,必须使所有的数据都保持一致状态。
隔离性 (Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
持久性 (Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的
并发事务问题
- 脏读:一个事务读取到另一个事务还没有提交的数据
- 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读
- 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像是出现了幻影
事务的隔离级别
注意:事务隔离级别越高,数据越安全,但是性能越低