select*from tb_user; -- 设置别名 select name as 姓名,dateas 日期 from tb_user; select name 姓名,date 日期 from tb_user; select name '姓 名',date 日期 from tb_user; /* 让别名里存在空格 */
-- 模糊匹配(like) '-'单个字符 '%'任意个字符 select*from tb_user where name like'__';/* 查找name为两个字的信息 */
select*from tb_user where name like'张%';
分组查询
聚合函数
1 2 3 4 5 6 7 8 9 10 11 12 13
------------ null 不参与运算 ------------ -- 数量(count) selectcount(id) from tb_user; selectcount(*) from tb_user; /* 推荐 */ --最大小值 min max --平均值 avg --求和 sum
select job,count(*) from tb_user where age <=10groupby job havingcount(*) >2;
流程控制函数
1 2 3 4 5 6 7
-- if(条件,true的结果,false的结果) select if(gender =1,'男','女') 性别,count(*) from tb_user groupby gender;
-- case 表达式 when 值1 then 结果1 when 值2 then 结果2 ....... else 结果 end select (case job when1then 老师 when2then 医生 when3then 快递员 when4then 班主任 else 无职业 end) 职位, count(*) from tb_user groupby job;
-- 隐式内连接 select tb_emp.name,tb_dept.name from tb_emp,tb_dept where tb_emp.dept_id = tb_dept.id; -- 别名 select e.name,d.name from tb_emp e,tb_dept d where e.dept_id = d.id;
-- 显式内连接 select tb_emp.name,tb_dept.name from tb_emp innerjoin tb_dept on tb_emp.dept_id = tb_dept.id;
select tb_emp.name,tb_dept.name from tb_emp join tb_dept on tb_emp.dept_id = tb_dept.id;
外连接
1 2 3 4
-- 左外连接 select e.name,d.name from tb_emp e leftjoin tb_dept d on tb_emp.dept_id = tb_dept.id; -- 右外连接 select e.name,d.name from tb_dept d rightjoin tb_emp e on tb_emp.dept_id = tb_dept.id;
子查询
标量子查询
子查询的返回值是单个值
1 2 3 4 5 6 7
-- 查询“教研部”的所有员工信息
select*from tb_emp where dept_id = (select id from tb_emp where name ='教研部');
-- 查询在方东白入职之后的基本信息 select*from tb_emp where entrydate > (select entrydate from tb_emp where name ='方东白');
列子查询(in, not in)
返回结果是一列多行值
1 2 3 4
-- 查询“教研部”和“咨询部”的所有员工信息
select*from tb_emp where dept_id in (select id from tb_dept where name ='教研部'or name ='咨询部');
行子查询
返回结果是多列一行值
1 2 3
-- 查询与韦一笑入职日期和职位相同的员工信息 select*from tb_emp where (entrydate,job) = ( select entrydate,job from tb_emp where name ='韦一笑');
表子查询
返回结果是多行多列
1 2
select e.*,d.name from (select*from tb_emp where entrydate >'2006-01-01') e,tb_dept d where e.dept_id = d.id;
事务
要么同时成功,要么同时失败!!!
1 2 3 4 5
start transaction; deletefrom tb_emp where dept_id =2; deletefrom tb_dept where id =2; commit; rollback;
索引
提升查询效率,但降低了insert update delete的效率
引入
1 2 3 4
-- 创建索引(create,index,on) create index idx_sku_sn on tb_sku(sn); -- tb_sku --- 表名 -- sn --- 字段名