单表查询:
查询emp表中所有员工的编号,姓名,职位,根据员工的编号进行降序排列
查询emp表中部门编号是10号或者30号中,所有员工姓名,职务,工资,根据工资进行升序排列
查询emp表中所有的数据,然后根据部门的编号进行升序排列,如果部门编号一致,根据员工的编号进行降序排列
查询emp表中工资高于1000或者没有上级领导的员工的编号,姓名,工资,所属部门的编号,以及上级领导的编号,根据部门编号进行降序排列,如果部门编号一致根据工资进行升序排列。
查询emp表中名字中不包含S的员工的编号,姓名,工资,奖金,根据工资进行升序排列,如果工资一致,根据编号进行降序排列
查询工资在1000~3000之间每一个员工的编号,姓名,职位,工资
查询emp表中奖金在500~2000之间所有员工的编号,姓名,工资以及奖金
查询20、30部门中所有员工的员工编号,姓名,职位和入职日期,按照入职时间升序排序
-- CREATE TABLE emp(
-- empno INT,
-- ename VARCHAR(50),
-- job VARCHAR(50),
-- mgr INT,
-- hiredate DATE,
-- sal DECIMAL(7,2),
-- comm DECIMAL(7,2),
-- deptno INT
-- );
--
-- INSERT INTO emp VALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
-- INSERT INTO emp VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
-- INSERT INTO emp VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
-- INSERT INTO emp VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
-- INSERT INTO emp VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
-- INSERT INTO emp VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
-- INSERT INTO emp VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
-- INSERT INTO emp VALUES(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
-- INSERT INTO emp VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
-- INSERT INTO emp VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
-- INSERT INTO emp VALUES(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
-- INSERT INTO emp VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
-- INSERT INTO emp VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
-- INSERT INTO emp VALUES(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);
--
-- 单表查询:
--
-- 查询emp表中所有员工的编号,姓名,职位,根据员工的编号进行降序排列
-- SELECT empno,ename,job
-- FROM emp
-- ORDER BY empno DESC;
-- 查询emp表中部门编号是10号或者30号中,所有员工姓名,职务,工资,根据工资进行升序排列
-- SELECT ename,job,sal
-- FROM emp
-- WHERE empno in (10,30)
-- ORDER BY empno;
-- 查询emp表中所有的数据,然后根据部门的编号进行升序排列,如果部门编号一致,根据员工的编号进行降序排列
-- SELECT *
-- FROM emp
-- ORDER BY
-- deptno ASC,empno DESC;
-- 查询emp表中工资高于1000或者没有上级领导的员工的编号,姓名,工资,所属部门的编号,以及上级领导的编号,根据部门编号进行降序排列,如果部门编号一致根据工资进行升序排列。
-- SELECT empno,ename,sal,deptno,mgr
-- FROM emp
-- ORDER BY deptno DESC,sal ASC;
-- 查询emp表中名字中不包含S的员工的编号,姓名,工资,奖金,根据工资进行升序排列,如果工资一致,根据编号进行降序排列
-- SELECT empno,ename,sal,comm
-- FROM emp
-- ORDER BY sal,empno DESC;
-- 查询工资在1000~3000之间每一个员工的编号,姓名,职位,工资
-- SELECT empno,ename,job,sal
-- FROM emp
-- WHERE sal BETWEEN 1000 AND 3000;
-- 查询emp表中奖金在500~2000之间所有员工的编号,姓名,工资以及奖金
-- SELECT empno,ename,job,comm
-- FROM emp
-- WHERE comm BETWEEN 500 AND 2000;
-- 查询20、30部门中所有员工的员工编号,姓名,职位和入职日期,按照入职时间升序排序
-- SELECT empno,ename,job,hiredate
-- FROM emp
-- ORDER BY hiredate;
多表查询:部门表和员工表
1:DALLAS 市所有的员工信息
2:按城市分组,计算每个城市的员工数量
3:查询员工信息和他的主管姓名
4:员工信息,员工主管名字,部门名
5:员工和他所在部门名
6:查询emp表中所有员工的姓名以及该员工上级领导的编号,姓名,职位,工资
7:查询emp表中名字中没有字母'K'的所有员工的编号,姓名,职位以及所在部门的编号,名称,地址
8:查询dept表中所有部门的所有信息,以及与之关联的emp表中员工的编号,姓名,职位,工资
9:每种工作的平均工资
10:少于等于5个人的部门信息
11:查询每个城市员工的工资总和
-- 多表查询:部门表和员工表
-- CREATE TABLE dept(
-- deptno INT,
-- dname VARCHAR(14),
-- loc VARCHAR(13)
-- );
--
-- INSERT INTO dept VALUES(10, 'ACCOUNTING', 'NEW YORK');
-- INSERT INTO dept VALUES(20, 'RESEARCH', 'DALLAS');
-- INSERT INTO dept VALUES(30, 'SALES', 'CHICAGO');
-- INSERT INTO dept VALUES(40, 'OPERATIONS', 'BOSTON');
-- 1:DALLAS 市所有的员工信息
-- SELECT e.*
-- FROM emp e JOIN dept d
-- ON e.deptno=d.deptno
-- WHERE d.loc='DALLAS';
-- 2:按城市分组,计算每个城市的员工数量
-- SELECT dept.loc,COUNT(empno)
-- FROM emp RIGHT JOIN dept
-- ON emp.deptno=dept.deptno
-- GROUP BY dept.loc;
-- 3:查询员工信息和他的主管姓名
-- SELECT e1.*,e2.ename 主管姓名
-- FROM emp e1 JOIN emp e2
-- ON e1.mgr=e2.empno;
-- 4:员工信息,员工主管名字,部门名
-- SELECT e1.*,e2.ename AS 主管姓名, d.dname 部门名
-- FROM emp e1 JOIN emp e2
-- ON e1.mgr=e2.empno
-- JOIN dept d
-- ON e1.deptno=d.deptno
-- ORDER BY e1.ename;
-- 5:员工和他所在部门名
-- SELECT e1.*,d.dname
-- FROM emp e1 JOIN dept d
-- ON e1.deptno=d.deptno;
-- 6:查询emp表中所有员工的姓名以及该员工上级领导的编号,姓名,职位,工资
-- SELECT e1.ename,e2.empno,e2.ename,2.job,e2.sal
-- FROM emp e1 LEFT JOIN emp e2
-- WHERE e1.mgr=e2.empno;
-- 7:查询emp表中名字中没有字母'K'的所有员工的编号,姓名,职位以及所在部门的编号,名称,地址
-- SELECT e.empno,e.ename,e.job,d.deptno,d.dname,d.loc
-- FROM emp e LEFT JOIN dept d
-- ON e.deptno = d.deptno
-- WHERE e.ename NOT LIKE '%K%';
-- 8:查询dept表中所有部门的所有信息,以及与之关联的emp表中员工的编号,姓名,职位,工资
-- SELECT d.*,e.empno,e.ename,e.job,e.sal
-- FROM emp e RIGHT JOIN dept d
-- ON e.deptno = d.deptno
-- 9:每种工作的平均工资
-- SELECT job,AVG(IFNULL(sal,0))
-- FROM emp
-- GROUP BY job;
-- 10:少于等于5个人的部门信息
-- SELECT d.`deptno`,d.`dname`,d.`loc`
-- FROM emp e RIGHT JOIN dept d
-- ON e.deptno = d.deptno
-- GROUP BY d.deptno
-- HAVING COUNT(e.`empno`)<5;
-- 11:查询每个城市员工的工资总和
-- SELECT d.loc,SUM(sal)
-- FROM emp e JOIN dept d
-- ON e.deptno = d.deptno
-- GROUP BY d.loc;
**表class和student结构如下,请完成后续SQL语句
表class
--字段 类型(长度) 含义
--CLASSNO 数值 (2) 班级编号
--CNAME 变长字符 (10) 班级名称
表student
--字段 类型(长度) 含义
--STUNO 数值 学号
--SNAME 变长字符 (12) 姓名
--SEX 字符 (2) 性别
--BIRTHDAY 日期类型 生日
--EMAIL 变长字符 (20) 电子邮件
--score 数值 (5, 2) 成绩
--CLASSNO 数值 班级编号
1):完成两个表的创建
2):完成两个表的数据插入
1,'神一班'
2,'酷二班'
3,'F三班'
----仔细检查并验证下面的数据,你学到了新知识点了吗?
56,'jerry',2;
10,'Lily','女','19870104','Lily@163.com',79.5,2
11,'Lucy','女','19870203',null,76.11,3
12,'Haley','女','19870305','Haley@163.net',89.75,1
13,'Mandy','女','19870608','Mandy@163.com',85.21,3
14,'Andy','男','19871110','andy@126.com',95.46,3
15,'Jack','男','19870620',null,98.65,3
16,'Jones','男','19870719',null,54.45,2
22,'Hehe','女','19870407',null,89.12,3
17,'panpan','男','19870730',null,94.54,2
18,'Yuanyuan','女','19870803',null,78.65,1
19,'Long','男','19830809',null,88.88,3
20,'Tao','男','19850609','Tao@126.com',94.56,1
21,'tom','男','19790203','tom@163.net',89.50,1
22,'Wen','男','19870506',null,86.75,1
23,'Old','男','19800206',null,79.56,3
24,'Jia','女','19870506',null,null,3
25,'Wang','男','19840206',null,null,3
26,'You','女','20010506',null,78.65,2
27,'Nope','男','19930206',null,85.14,2
3)
--a.修改表student的数据,将所有一班没有满90分的学生成绩加10分。
--b 将学号25的生日改为1981年5月12日。
--c. 删除表student的数据,将所有3班出生日期晚于1981年5月12日的记录删除。
--d. 按班级升序排序,成绩降序排序,查询student表的所有记录。
--e.查询student表中所有三班成绩为空的学生记录。
--f. 表student与class联合查询,要求查询所有学生的学号,姓名,成绩,班级名称。
-- CREATE TABLE class(
-- CLASSNO int(2) COMMENT '班级编号',
-- CNAMW VARCHAR(10) COMMENT '班级名称'
-- );
-- CREATE TABLE student(
-- STUNO int COMMENT '学号',
-- SNAME VARCHAR(12) COMMENT '姓名',
-- SEX CHAR(2) COMMENT '性别',
-- BIRTHDAY date COMMENT '生日',
-- EMAIL VARCHAR(20) COMMENT '电子邮件',
-- score DOUBLE(5,2) COMMENT '成绩',
-- CLASSNO INT COMMENT '班级编号'
-- );
-- INSERT INTO class VALUES (1,'神一班'),(2,'酷二班'),(3,'F三班');
-- INSERT INTO student VALUES
-- (10,'Lily','女','19870104','Lily@163.com',79.5,2),
-- (11,'Lucy','女','19870203',null,76.11,3),
-- (12,'Haley','女','19870305','Haley@163.net',89.75,1),
-- (13,'Mandy','女','19870608','Mandy@163.com',85.21,3),
-- (14,'Andy','男','19871110','andy@126.com',95.46,3),
-- (15,'Jack','男','19870620',null,98.65,3),
-- (16,'Jones','男','19870719',null,54.45,2),
-- (22,'Hehe','女','19870407',null,89.12,3),
-- (17,'panpan','男','19870730',null,94.54,2),
-- (18,'Yuanyuan','女','19870803',null,78.65,1),
-- (19,'Long','男','19830809',null,88.88,3),
-- (20,'Tao','男','19850609','Tao@126.com',94.56,1),
-- (21,'tom','男','19790203','tom@163.net',89.50,1),
-- (22,'Wen','男','19870506',null,86.75,1),
-- (23,'Old','男','19800206',null,79.56,3),
-- (23,'Old','男','19800206',null,79.56,3),
-- (25,'Wang','男','19840206',null,null,3),
-- (26,'You','女','20010506',null,78.65,2),
-- (27,'Nope','男','19930206',null,85.14,2);
-- INSERT INTO student(STUNO,SNAME,CLASSNO) VALUES (56,'jerry',2);
-- 3)
-- --a.修改表student的数据,将所有一班没有满90分的学生成绩加10分。
-- UPDATE student
-- SET score=score+10
-- WHERE CLASSNO=1 AND score<90;
-- --b 将学号25的生日改为1981年5月12日。
-- UPDATE student
-- SET birthday='1981-5-12'
-- WHERE STUNO=25;
-- --c. 删除表student的数据,将所有3班出生日期晚于1981年5月12日的记录删除。
-- DELETE FROM student
-- WHERE CLASSNO=3 AND birthday>'1981-5-12';
-- --d. 按班级升序排序,成绩降序排序,查询student表的所有记录。
-- SELECT *
-- FROM student
-- ORDER BY CLASSNO DESC;
-- --e.查询student表中所有三班成绩为空的学生记录。
-- SELECT *
-- FROM student
-- WHERE CLASSNO=3 AND score IS NULL;
-- --f. 表student与class联合查询,要求查询所有学生的学号,姓名,成绩,班级名称。
-- SELECT s.STUNO,s.SNAME,s.score,c.CNAMW
-- FROM student s JOIN class c
-- WHERE s.CLASSNO=c.CLASSNO;