学习资料是黑马的mysql课程
Mysql概述
相关概念
数据模型
关系型数据库
数据模型
SQL
SQL通用语法
SQL分类
DDL
数据库操作
表操作
查询
创建
数据类型
修改/删除
DML
添加数据INSERT
修改数据UPDATE
删除数据DELETE
DQL
基础查询
条件查询
聚合函数
分组查询
排序查询
分页查询
执行顺序
DCL
用来管理数据库用户、控制数据库的访问权限。
在MySQL中,用户的信息及用户所具有的权限的信息都是存放在 mysql 库中的 user 表里,同时知道主机地址和用户名才能完整的定位一个用户。
权限控制
函数
一段可以直接被另一段程序调用的程序或代码。
字符串函数
数值函数
日期函数
流程函数
-- 需求:查询emp表员工姓名和城市(北京,上海---->一线城市,其他----->二线城市)
select
name,
(case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else'二线城市' end) as '工作地址'
from emp;
约束
概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
目的:保证数据库中数据的正确、有效性和完整性。
补充:(自增:AUTO_INCREMENT)
注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。
外键约束
用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性
外键删除更新行为
多表查询
概述:指从多张表中查询数据
笛卡尔积:笛卡尔乘积是指在数学中,两个集合A集合和B集合的所有组合情况。(在多表查询时,需要消除无效的笛卡尔积,只需要在查询语句的后面加一个where条件即可)
内连接
外连接
自连接
联合查询- union, union all
是把多次查询的结果合并起来,形成一个新的查询结果集。
-- 1、将地址在北京的, 和年龄大于 20 岁的员工全部查询
select * from emp where workaddress = '北京'
# union all # 查询结果直接合并
union #查询结果合并并去重
select * from emp where age > 20;
子查询
标量子查询
子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询成为标量子查询。
常用的操作符:=、<>、 >、 >=、 <、 <=
select * from emp where dep_id = (select id from dep where dep = '管理部门');
列子查询
子查询返回的结果是一列(可以是多行),这种子查询称为列子查询。
常用的操作符: IN 、NOT IN、ANY 、SOME、ALL
-- 列子查询
-- 1、 查询"销售部" 和"研发部" 的所有员工信息
select * from emp where dep_id in (select id from dep where dep = '销售部' or dep = '研发部');
-- 2、 查询比销售部所有人工资都高的员工信息
select * from emp where salary > all((select salary from emp where dep_id = (select id from dep where dep = '销售部')));
# all 返回回来的结构都需要满足
-- 3、查询比研发部其中任意一人工资高的员工信息
select * from emp where salary > any (select salary from emp where dep_id = (select id from dep where dep = '研发部'));
# any = some
行子查询
子查询返回的结果是一行(可以是多列),这种子查询称为行子查询。
常用的操作符:=、<>、IN 、NOT IN
select * from emp where (salary,manageid) = (select salary,manageid from emp where name = '刘艳');
表子查询
子查询返回的结果是多行多列,这种子查询称为表子查询
常用的操作符:IN
一般在from后面
select e.*, d.dep from (select * from emp where entrydate > '2002-01-01') e left join dep d on e.dep_id = d.id
事务
即这些操作要么同时成功,要么同时失败
默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。
@@autocommit = 0 为手动提交
四大特性ACID
并发事务问题
事务隔离级别
为解决并发事务问题,设置来了事务隔离级别,下表中从上到下隔离级别越来越高,但是性能越来越差,