1. 作业1

2. 作业2

-- 2. 写出 查看DEPT表和EMP表的结构 的sql语句  homework02.sql   10min 自己先练习
-- DESC deptDESC emp
-- 3. 使用简单查询语句完成:
-- (1) 显示所有部门名称。
SELECT dname FROM dept;
-- (2) 显示所有雇员名及其全年收入 13月(工资+补助),并指定列别名"年收入"
SELECT ename, (sal + IFNULL(comm,0)) * 13 AS "年收入"FROM emp
SELECT * FROM emp;--
-- 4.限制查询数据。
-- (1) 显示工资超过2850的雇员姓名和工资。
SELECT ename, salFROM emp WHERE sal > 2850
-- (2) 显示工资不在1500到2850之间的所有雇员名及工资。
SELECT ename, salFROM emp WHERE sal < 1500 OR sal > 2850SELECT ename, salFROM emp WHERE NOT (sal >= 1500 AND sal <= 2850) -- 取反操作
-- (3) 显示编号为7566的雇员姓名及所在部门编号。
SELECT ename, deptnoFROM emp WHERE empno = 7566
-- (4) 显示部门10和30中工资超过1500的雇员名及工资。
SELECT ename, salFROM emp WHERE (deptno = 10 OR deptno = 30) AND sal > 1500
-- (5) 显示无管理者的雇员名及岗位。
SELECT ename, job FROM empWHERE mgr IS NULL;--
-- 5.排序数据。
-- (1) 显示在1991年2月1日到1991年5月1日之间雇用的雇员名,岗位及雇佣日期,
-- 并以雇佣日期进行排序[默认]。
-- 思路 1. 先查询到对应结果 2. 考虑排序
SELECT ename, job, hiredateFROM empWHERE hiredate >= '1991-02-01' AND hiredate <= '1991-05-01'ORDER BY hiredate-- (2) 显示获得补助的所有雇员名,工资及补助,并以工资降序排序
SELECT ename, sal, commFROM empORDER BY sal DESC

3. 作业3


-- homework03-- ------1.选择部门30中的所有员工.
SELECT * FROM empWHERE deptno = 30
-- ------2.列出所有办事员(CLERK)的姓名,编号和部门编号.
SELECT ename, empno, deptno, job FROM empWHERE job = 'CLERK'
-- ------3.找出佣金高于薪金的员工.
SELECT * FROM empWHERE IFNULL(comm, 0) > sal
-- ------4.找出佣金高于薪金60%的员工.
SELECT * FROM empWHERE IFNULL(comm, 0) > sal * 0.6
-- ------5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.
--
SELECT * FROMempWHERE (deptno = 10 AND job = 'MANAGER') OR (deptno = 20 AND job = 'CLERK')
-- ------6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK), -- 还有既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料.
SELECT * FROMempWHERE (deptno = 10 AND job = 'MANAGER') OR (deptno = 20 AND job = 'CLERK')OR (job != 'MANAGER' AND job != 'CLERK' AND sal >= 2000 )
-- ------7.找出收取佣金的员工的不同工作.
SELECT DISTINCT jobFROM empWHERE comm IS NOT NULL-- ------8.找出不收取佣金或收取的佣金低于100的员工.
SELECT *FROM empWHERE comm IS  NULL OR IFNULL(comm, 0) < 100
-- ------9.找出各月倒数第3天受雇的所有员工.
-- 提示: last_day(日期), 可以返回该日期所在月份的最后一天
-- last_day(日期) - 2 得到日期所有月份的倒数第3天
SELECT * FROM empWHERE LAST_DAY(hiredate) - 2  =  hiredate-- ------10.找出早于12年前受雇的员工.(即: 入职时间超过12年)
SELECT * FROM empWHERE DATE_ADD(hiredate, INTERVAL 12 YEAR) < NOW() --
-- ------11.以首字母小写的方式显示所有员工的姓名.
SELECT CONCAT(LCASE(SUBSTRING(ename,1,1)), SUBSTRING(ename,2))FROM emp;
-- ------12.显示正好为5个字符的员工的姓名.SELECT * FROM empWHERE LENGTH(ename) = 5-- ------13.显示不带有"R"的员工的姓名.
SELECT * FROM empWHERE ename NOT LIKE '%R%'
-- ------14.显示所有员工姓名的前三个字符.
SELECT LEFT(ename,3)FROM emp
-- ------15.显示所有员工的姓名,用a替换所有"A"
SELECT REPLACE(ename, 'A', 'a') FROM emp
-- ------16.显示满10年服务年限的员工的姓名和受雇日期.
SELECT ename, hiredateFROM empWHERE DATE_ADD(hiredate, INTERVAL 10 YEAR) <= NOW()
-- ------17.显示员工的详细资料,按姓名排序.
SELECT *FROM empORDER BY ename
-- ------18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面.
--
SELECT ename, hiredateFROM empORDER BY hiredate
-- ------19.显示所有员工的姓名、工作和薪金,按工作降序排序,若工作相同则按薪金排序.
SELECT ename, job, salFROM empORDER BY job DESC, sal
-- ------20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,
-- 若月份相同则将最早年份的员工排在最前面.
SELECT ename, CONCAT(YEAR(hiredate),'-', MONTH(hiredate))FROM empORDER BY MONTH(hiredate), YEAR(hiredate)-- ------21.显示在一个月为30天的情况所有员工的日薪金,忽略余数.
SELECT ename, FLOOR(sal / 30), sal / 30 FROM emp;
-- ------22.找出在(任何年份的)2月受聘的所有员工。
SELECT * FROM empWHERE MONTH(hiredate) = 2
-- ------23.对于每个员工,显示其加入公司的天数.
--
SELECT ename, DATEDIFF(NOW(), hiredate) FROM emp
-- ------24.显示姓名字段的任何位置包含"A"的所有员工的姓名.
SELECT *FROM empWHERE ename LIKE '%A%'
-- ------25.以年月日的方式显示所有员工的服务年限.   (大概)-- 思路 1. 先求出 工作了多少天
SELECT ename, FLOOR(DATEDIFF(NOW(), hiredate) / 365) AS " 工作年 ", FLOOR((DATEDIFF(NOW(), hiredate) % 365) / 31) AS " 工作月 ",DATEDIFF(NOW(), hiredate) % 31 AS " 工作天"FROM emp;

4. 作业4



-- (1).列出至少有一个员工的所有部门/*先查出各个部门有多少人使用 having 子句过滤
*/
SELECT COUNT(*) AS c, deptnoFROM emp GROUP BY deptno HAVING c >= 1
-- (2).列出薪金比“SMITH”多的所有员工。
/*先查出 smith 的 sal => 作为子查询然后其他员工 sal 大于 smith 即可
*/
SELECT * FROM empWHERE sal > (SELECT sal FROM emp WHERE ename = 'SMITH')
-- (3).列出受雇日期晚于其直接上级的所有员工。
/*先把 emp 表 当做两张表 worker , leader条件 1. worker.hiredate > leader.hiredate2. worker.mgr = leader.empno
*/SELECT worker.ename AS '员工名', worker.hiredate AS '员工入职时间',leader.ename  AS '上级名', leader.hiredate AS '上级入职时间' FROM emp worker , emp leaderWHERE worker.hiredate > leader.hiredate AND worker.mgr = leader.empno;-- (4).列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。/*这里因为需要显示所有部门,因此考虑使用外连接,(左外连接)如果没有印象了,去看看老师讲的外连接.
*/
SELECT dname, emp.*FROM dept LEFT JOIN emp ON dept.deptno = emp.deptno -- (5).列出所有“CLERK”(办事员)的姓名及其部门名称。SELECT ename, dname , jobFROM emp, deptWHERE job = 'CLERK' AND emp.deptno = dept.deptno-- (6).列出最低薪金大于1500的各种工作。/*查询各个工作的最低工资使用having 子句进行过滤
*/
SELECT MIN(sal) AS min_sal , jobFROM empGROUP BY jobHAVING min_sal > 1500
-- (7).列出在部门“SALES”(销售部)工作的员工的姓名。SELECT ename, dnameFROM emp , deptWHERE emp.deptno = dept.deptno AND dname = 'SALES'-- (8).列出薪金高于公司平均薪金的所有员工。SELECT *FROM empWHERE sal > (SELECT AVG(sal) FROM emp)-- (9).列出与“SCOTT”从事相同工作的所有员工。SELECT * FROM empWHERE job = (SELECT job FROM empWHERE ename = 'SCOTT') AND ename != 'SCOTT'-- (10).列出薪金高于所在部门30的工作的所有员工的薪金的员工姓名和薪金。-- 先查询出30部门的最高工资
SELECT ename, sal FROM emp WHERE sal > (SELECT MAX(sal) FROM empWHERE deptno = 30)
-- (11).列出在每个部门工作的员工数量、平均工资和平均服务期限(时间单位)。
-- 老师建议 , 写sql 也是一步一步完成的
SELECT COUNT(*) AS "部门员工数量", deptno , AVG(sal) AS "部门平均工资" , FORMAT(AVG(DATEDIFF(NOW(), hiredate) / 365 ),2) AS " 平均服务期限(年)"FROM emp GROUP BY deptno-- (12).列出所有员工的姓名、部门名称和工资。-- 就是 emp 和 dept 联合查询 ,连接条件就是 emp.deptno = dept.deptno-- (13).列出所有部门的详细信息和部门人数。-- 1. 先得到各个部门人数 , 把下面的结果看成临时表 和 dept表联合查询
SELECT COUNT(*) AS c , deptno FROM empGROUP BY deptno-- 2.
SELECT dept.*, tmp.c AS "部门人数"FROM dept, (SELECT COUNT(*) AS c , deptno FROM empGROUP BY deptno) tmp WHERE dept.deptno = tmp.deptno-- (14).列出各种工作的最低工资。SELECT MIN(sal), jobFROM empGROUP BY job
-- (15).列出MANAGER(经理)的最低薪金。SELECT MIN(sal), jobFROM empWHERE job = 'MANAGER'
-- (16).列出所有员工的年工资,按年薪从低到高排序。-- 1. 先得到员工的年工资
SELECT ename, (sal + IFNULL(comm, 0)) * 12 year_salFROM empORDER BY year_sal -- 技术就窗户纸 , 我亦无他,惟手熟尔 !!!

5. 作业5


-- 完成最后一个综合的练习-- 8. 设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生。
-- 现要建立关于系、学生、班级的数据库,关系模式为:
-- 班CLASS (班号classid,专业名subject,系名deptname,入学年份enrolltime,人数num)
-- 学生STUDENT (学号studentid,姓名name,年龄age,班号classid)
-- 系 DEPARTMENT (系号departmentid,系名deptname)
-- 试用SQL语言完成以下功能:  homework05.sql 10min
--
-- (1) 建表,在定义中要求声明:
--     (1)每个表的主外码。
--     (2)deptname是唯一约束。
--     (3)学生姓名不能为空。-- 创建表 系 DEPARTMENT (系号departmentid,系名deptname)
CREATE TABLE DEPARTMENT (departmentid VARCHAR(32) PRIMARY KEY,deptname VARCHAR(32) UNIQUE NOT NULL);-- 班CLASS (班号classid,专业名subject,系名deptname,入学年份enrolltime,人数num)
CREATE TABLE `class` (classid INT PRIMARY KEY,`subject` VARCHAR(32) NOT NULL DEFAULT '',deptname VARCHAR(32) , -- 外键字段,在表定义后指定enrolltime INT NOT NULL DEFAULT 2000,num INT NOT NULL DEFAULT 0,FOREIGN KEY (deptname) REFERENCES  DEPARTMENT(deptname));-- 学生STUDENT (学号studentid,姓名name,年龄age,班号classid)
CREATE TABLE hsp_student (studentid INT PRIMARY KEY,`name` VARCHAR(32) NOT NULL DEFAULT '',age INT NOT NULL DEFAULT 0,classid INT, -- 外键FOREIGN KEY (classid) REFERENCES  `class`(classid));-- 添加测试数据INSERT INTO department VALUES('001','数学');
INSERT INTO department VALUES('002','计算机');
INSERT INTO department VALUES('003','化学');
INSERT INTO department VALUES('004','中文');
INSERT INTO department VALUES('005','经济');INSERT INTO class VALUES(101,'软件','计算机',1995,20);
INSERT INTO class VALUES(102,'微电子','计算机',1996,30);
INSERT INTO class VALUES(111,'无机化学','化学',1995,29);
INSERT INTO class VALUES(112,'高分子化学','化学',1996,25);
INSERT INTO class VALUES(121,'统计数学','数学',1995,20);
INSERT INTO class VALUES(131,'现代语言','中文',1996,20);
INSERT INTO class VALUES(141,'国际贸易','经济',1997,30);
INSERT INTO class VALUES(142,'国际金融','经济',1996,14);INSERT INTO hsp_student VALUES(8101,'张三',18,101);
INSERT INTO hsp_student VALUES(8102,'钱四',16,121);
INSERT INTO hsp_student VALUES(8103,'王玲',17,131);
INSERT INTO hsp_student VALUES(8105,'李飞',19,102);
INSERT INTO hsp_student VALUES(8109,'赵四',18,141);
INSERT INTO hsp_student VALUES(8110,'李可',20,142);
INSERT INTO hsp_student VALUES(8201,'张飞',18,111);
INSERT INTO hsp_student VALUES(8302,'周瑜',16,112);
INSERT INTO hsp_student VALUES(8203,'王亮',17,111);
INSERT INTO hsp_student VALUES(8305,'董庆',19,102);
INSERT INTO hsp_student VALUES(8409,'赵龙',18,101);SELECT * FROM department
SELECT * FROM class
SELECT * FROM hsp_student-- (3) 完成以下查询功能
--   3.1 找出所有姓李的学生。
-- 查表 hsp_student , like
SELECT * FROM hsp_studentWHERE `name` LIKE '李%'
--   3.2 列出所有开设超过1个专业的系的名字。-- 1. 先查询各个系有多少个专业
SELECT COUNT(*) AS nums, deptname FROM classGROUP BY deptname HAVING nums > 1
--   3.3 列出人数大于等于30的系的编号和名字。
-- 1. 先查出各个系有多少人, 并得到 >= 30 的系SELECT SUM(num) AS nums, deptname  FROM class GROUP BY  deptname HAVING nums >= 30-- 2. 将上面的结果看成一个临时表 和 department 联合查询即可SELECT  tmp.*, department.departmentidFROM department , (SELECT SUM(num) AS nums, deptname  FROM class GROUP BY  deptname HAVING nums >= 30) tmp WHERE department.deptname = tmp.deptname;-- (4) 学校又新增加了一个物理系,编号为006
-- 添加一条数据
INSERT INTO department VALUES('006','物理系');
-- (5) 学生张三退学,请更新相关的表-- 分析:1. 张三所在班级的人数-1 2. 将张三从学生表删除  3. 需要使用事务控制-- 开启事务
START TRANSACTION;
-- 张三所在班级的人数-1
UPDATE class SET num = num - 1WHERE classid = (SELECT classid FROM hsp_student WHERE NAME = '张三');DELETE FROM hsp_studentWHERE NAME = '张三';-- 提交事务
COMMIT;SELECT * FROM hsp_student;
SELECT * FROM class

mysql 章节作业题相关推荐

  1. 2018年3月份计算机二级操作题训练,2018年3月计算机二级考试MySQL章节练习题三

    2018年3月计算机等级考试备考在即,小编在这里为考生们整理了2018年3月计算机二级考试MySQL章节练习题,希望能帮到大家,想了解更多资讯,请关注出国留学网的及时更新哦. 2018年3月计算机二级 ...

  2. 智慧树mysql章节答案免费_智慧树初识数据库—Mysql完整免费答案

    智慧树初识数据库-Mysql完整免费答案 更多相关问题 [多选] 微机线路保护装置的纵联保护的通道可以是(). [多选] 分层式结构的变电站综合自动化系统中,管理层由一台或多台微机组成,其具体功能一般 ...

  3. 智慧树mysql章节答案免费_智慧树_初识数据库—Mysql_完整免费答案

    智慧树_初识数据库-Mysql_完整免费答案 更多相关问题 [单选题]以下各类人群中,蛋白质营养状况处于负氮平衡的是 [单选题]- Tom, why were you _____ from schoo ...

  4. mysql创建学生情况表(xs)结构,MySql章节复习资料

    第2章 数据库和表 [例2.2] 修改数据库mydata(假设mydata已经创建)的默认字符集和校对规则. ALTER DATABASE mydata DEFAULT CHARACTER SET g ...

  5. MySQL最新版本安装教程(Windows和Ubuntu)

    MySQL官方安装教程 官方安装教程,各种系统的安装都有:https://dev.mysql.com/doc/refman/8.0/en/installing.html MySQL Community ...

  6. 方糖全栈课 PHP React大系,方糖全栈课·PHP+React大系

    课程概述 方糖全栈课是由方糖气球出品的国内首个多职位全栈课程.它一套课程覆盖PHP.前端和区块链应用开发三大热门职位,知原理.重实践,让你在15周内从零基础的初学者成长为一个能同时开发云和端的全栈高手 ...

  7. Oracle入门第四天(上)——表管理与数据处理

    一.常见数据库对象 1.基本对象 对应的对象英文名参考:https://docs.oracle.com/cd/B19306_01/server.102/b14220/intro.htm#sthref6 ...

  8. 敖丙带你设计【秒杀系统】

    我之前写过一个秒杀系统的文章不过有些许瑕疵,所以我准备在之前的基础上进行二次创作,不过让我决心二创秒杀系统的原因是我最近面试了很多读者,动不动就是秒杀系统把我整蒙蔽了,我懵的主要是秒杀系统的细节大家都 ...

  9. 面试了十个应届生九个都是秒杀系统,你确定你们那是秒杀?

    点赞再看,养成习惯,微信搜一搜[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我 ...

  10. 达梦数据库——DM8安装操作及体系架构介绍

    文章目录 一.数据库行业的发展趋势 二.国产数据库的现状 1.自主研发 三.达梦公司的介绍和达梦产品 1.达梦公司的由来 2.达梦公司的产品线 四.DM8的安装及实例的管理 1.软件信息收集 2.硬件 ...

最新文章

  1. 【pytorch】torch.nn.GroupNorm的使用
  2. 《Adobe InDesign CS5中文版经典教程》—第1课1.7节使用上下文菜单
  3. 白盒测试方法静态分析_静态分析的教育方面
  4. 【Spark】reduceByKey和GroupByKey
  5. 掌握面试——弹出框的实现
  6. 如何使用视频转换器将ogg格式转换为MP3格式
  7. python3 写九九乘法表(python 小白进阶之旅)
  8. Python库——Faker
  9. 如何实现跨行跨地区转账实时到帐而且免手续费?
  10. 有一个班4个学生,5门课程①求第1门课程的平均分;②找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;③找出平均成绩在90分以上或全部课程成绩在85分以上的学生分别编3个函数实
  11. 微信小程序070校园食堂订餐多商家带配送
  12. Linux下查找指定日期的文件
  13. Python---元祖、循环
  14. app毕业设计开题报告题目Uniapp实现的Android的校园二手商品交易平台计算机毕业论文
  15. CSS中的:before和 :after
  16. 恭喜河南建业冲上中超
  17. Socket 网络协议 等
  18. 调试Cello时快速清除已有容器
  19. linux笔记——简单概念整理
  20. Hexo博客添加搜索功能

热门文章

  1. [论文笔记|LIC-Fusion]LIC-Fusion: LiDAR-Inertial-Camera Odometry
  2. Library(terminalio) to read the password securely from commandline is not found
  3. 北京大学计算机同等学力申硕信息平台,北京大学同等学力申硕有哪些专业?
  4. iPhone苹果手机尺寸大小
  5. 焊接技巧 -- 拖焊
  6. 天气预报接口_JMeter 接口自动化测试篇 26
  7. 自制BSL编程MSP430单片机
  8. PHP-FPM的PM配置参数说明
  9. excel两行数据匹配【vlookup、countif】
  10. OpenGL三维变换与三维投影实例(行星绕日旋转)