目录
一、MySQL
分类:
- DDL:对数据库和表进行操作
- DML:增加、删除、修改
- DQL:查询
- DCL:权限、事务、提交、回滚
二、DataGrip【MySQL客户端工具】
三、数据类型
数值类型
字符串类型
日期时间类型
四、DDL
3.1 数据库操作
3.2 表操作
四、DML
四、DQL
注意:去重查询使用的是distinct
where条件列表
查询名字是两个字的员工信息
select * from user where name like '__';
聚合函数
分组查询注意事项
使用分组查询之后,select所返回的字段一类是分组字段,一类是聚合函数 例如:
select sex, count(*) from user group by sex;
查询入职时间在2015-01-01之前的员工,并且按照职位进行分组,获取员工数量大于等于2的职位
select job,count(*) from user where entrydate<='2015-01-01' group by job having count(*) >=2;
where与having的区别:
- 执行时机不同,where是分组之前进行过滤,不满足where条件,不参与分组;having是分组之后对结果进行过滤。
- 判断条件不同:where不能对聚合函数进行判断,having可以。
根据入职时间进行升序排序,如果入职时间相同,再按照更新时间进行降序排序
-- 如果存在多个排序规则,使用","进行分割
select * from user order by entrydate, update_time desc;
分页查询公式
select * from user limit (页码-1) * 每页展示记录数, 每页展示记录数
if(条件表达式, true, false)语句
select (if(gender=1, '男', '女')) 性别, count(*) from user group by gender;
case表达式
select
(case job when 1 then '班主任' when 2 then '讲师' when 3 then '学工主管' when 4 then '教研主任' else '未分配职位' end) 职位,
count(*) from user group by job;
五、多表操作
5.1 一对一
需要在任意一方增加外键,并且增加唯一约束
5.2 一对多
需要在多的表中增加外键一所对应的ID
5.3 多对多
多对多的关系,需要创建第三张表,关联表之间的关系。
5.4 多表查询
内连接
select * from user,dept where user.deptId=dept.id;
select * from user join dept where user.deptId=dept.id;
左连接
select * from user left join dept on user.deptId = dept.id;
右连接
select * from user right join dept on user.deptId = dept.id;
子查询
select * from user where deptId=(select id from dept where id=2)
select * from user where (entrydate,job) = (select entrydate,job from tmp where name="张三")
六、事务
七、索引
索引(index)是帮助数据库高效获取数据的数据结果。
创建索引
create index 索引名 on 表(字段)