查询
SHOW DATABASES;
USE db10;
– 查询员工表姓名 工资 奖金 –
SELECT NAME,sal,bonus FROM emp;
– 查询emp表中的所有部门和职位 –
SELECT dept,job FROM emp;
– 查询不重复表记录 –
SELECT DISTINCT dept,job FROM emp;
– 查询emp表中 薪资大于3千的所有员工 显示员工姓名 薪资
SELECT NAME, sal FROM emp WHERE sal>3000;
– 查询emp表中(总薪资大于3000)
SELECT NAME, sal+bonus FROM emp WHERE sal+bonus>3500;
– 查询emp表中(总薪资大于3000)有null值 把null值转换为0
SELECT NAME, sal+IFNULL(bonus,0) FROM emp WHERE sal+IFNULL(bonus,0)>3500;
– 修改表名–
SELECT NAME, sal+IFNULL(bonus,0)AS 总薪资 FROM emp WHERE sal+IFNULL(bonus,0)>3500;
– as可以去掉
SELECT NAME, sal+IFNULL(bonus,0) 总薪资 FROM emp WHERE sal+IFNULL(bonus,0)>3500;
– 查询emp表中 薪资在3000-4500之间的员工 显示员工姓名和工资
SELECT NAME, sal FROM emp WHERE sal>=3000 AND sal<=4500;
– between…and 在…和…之间
SELECT NAME, sal FROM emp WHERE sal BETWEEN 3000 AND 4500;
– 查询emp表中 薪资为1400 1600 1800 的员工显示员工姓名 薪资
SELECT NAME, sal FROM emp WHERE sal=1400 OR sal=1600 OR sal=1800;
– 另一种写法
SELECT NAME, sal FROM emp WHERE sal IN(1400,1600,1800);
– 查询薪资不为1400 1600 1800 的员工 显示员工姓名 薪资
SELECT NAME, sal FROM emp WHERE sal NOT IN(1400,1600,1800);
– 另一种写法
SELECT NAME, sal FROM emp WHERE NOT (sal=1400 OR sal=1600 OR sal=1800);
– 查询emp表中 薪资大于4000和薪资小于2000的员工 显示员工姓名 薪资
SELECT NAME,sal FROM emp WHERE sal>4000 OR sal<2000;
– 查询emp表中薪资大于3000 并且奖金小于600的员工 显示员工值 薪资 奖金
SELECT NAME, sal,bonus FROM emp
WHERE sal>3000 AND IFNULL(bonus,0)<600;
– 查询没有部门的员工 (部门为null值)
SELECT * FROM emp WHERE dept IS NULL;
– 查询有部门的员工 (部门不为null值)
SELECT * FROM emp WHERE dept IS NOT NULL;
– 另一种写法
SELECT * FROM emp WHERE NOT(dept IS NULL);
– 查询emp表中姓名以刘开头的员工 显示员工姓名 (%表示匹配0个或者多个字符)
SELECT * FROM emp WHERE NAME LIKE ‘刘%%’;
– 查询emp表中姓名含有涛字的员工 显示员工姓名
SELECT * FROM emp WHERE NAME LIKE ‘%涛%’;
– 查询emp表中以刘字开头 并且姓名为两个字的员工 显示员工姓名
SELECT * FROM emp WHERE NAME LIKE ‘刘_’;
– 多行函数查询
– 统计emp表中薪资大于3000的员工个数
SELECT * FROM emp WHERE sal>3000;
SELECT COUNT(*) FROM emp WHERE sal>3000;
– 求emp表中最高薪资
SELECT MAX(sal) FROM emp ;
– 求emp表中最低薪资
SELECT MIN(sal) FROM emp;
– 统计emp表中所有员工薪资总和(不包含奖金)
SELECT SUM(sal) FROM emp;
– 统计emp表员工平均工资
SELECT AVG(sal) FROM emp;
– 分组查询
– 查询男生有多少人 女生有多少人
SELECT gender, COUNT(*) FROM emp GROUP BY gender;
– 按照部门进行分组 查看分组后效果
SELECT dept, COUNT(*) FROM emp GROUP BY dept;
– 职位分组 统计每个职位的人数
SELECT job, COUNT(*) FROM emp GROUP BY job;
– 按照部门进行分组 求每个部门的最高薪资(不包括奖金)
SELECT MAX(sal),dept FROM emp GROUP BY dept;
– 排序查询
– 按照薪资进行排序 升序
SELECT NAME,sal FROM emp ORDER BY sal;
– 进行降序排序
SELECT NAME,sal FROM emp ORDER BY sal DESC;
– 奖金降序排序
SELECT NAME,bonus FROM emp ORDER BY bonus DESC;
– 分页查询
– 每页显示3条 返回所有页的数据
SELECT * FROM emp LIMIT 0,3; – 第一页
SELECT * FROM emp LIMIT 3,3; – 第二页
SELECT * FROM emp LIMIT 6,3; – 第三页
SELECT * FROM emp LIMIT 9,3; – 第四页
– 薪资最高的前三名员工信息 显示姓名薪资
SELECT NAME,sal FROM emp ORDER BY sal DESC LIMIT 0,3;
– 获取当前日期
SELECT CURDATE();
– 查询在1993-1995年出生的员工 显示姓名 出生日期
SELECT NAME,birthday FROM emp WHERE YEAR(birthday) BETWEEN 1993 AND 1995;
– 另一种写法
SELECT NAME,birthday FROM emp WHERE birthday BETWEEN ‘1993-1-1’ AND ‘1995-12-31’;
– 获取本月出生的所有员工
SELECT * FROM emp WHERE MONTH(NOW())=MONTH(birthday);
– 如果当前是12月 获取下个月
SELECT * FROM emp WHERE (MONTH(NOW())+1)%12=MONTH(birthday)%12;
– 查询emp表中薪资多少元和姓名
SELECT NAME,CONCAT(sal,’/元’)FROM emp;
多表联查
SELECT s.staff_name
FROM staff s
LEFT JOIN medic_desk_staff m ON m.staff_id =s.staff_id
LEFT JOIN desk d ON m.desk_id = d.desk_id
WHERE d.desk_name=‘外科’;