【大数据开发】MySQL数据库——单表查询、多表查询练习day25

单表查询:

查询emp表中所有员工的编号,姓名,职位,根据员工的编号进行降序排列
查询emp表中部门编号是10号或者30号中,所有员工姓名,职务,工资,根据工资进行升序排列
查询emp表中所有的数据,然后根据部门的编号进行升序排列,如果部门编号一致,根据员工的编号进行降序排列
查询emp表中工资高于1000或者没有上级领导的员工的编号,姓名,工资,所属部门的编号,以及上级领导的编号,根据部门编号进行降序排列,如果部门编号一致根据工资进行升序排列。
查询emp表中名字中不包含S的员工的编号,姓名,工资,奖金,根据工资进行升序排列,如果工资一致,根据编号进行降序排列
查询工资在1000~3000之间每一个员工的编号,姓名,职位,工资
查询emp表中奖金在500~2000之间所有员工的编号,姓名,工资以及奖金
查询2030部门中所有员工的员工编号,姓名,职位和入职日期,按照入职时间升序排序

-- 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;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
主代码在“后台管理”文件夹中 ---------------- 开源世界,你我更进步 ---------------- 程序开发:lc_mtt (网名:柠檬) CSDN博客:http://blog.csdn.net/lc_mtt/ 个人主页:http://products.3lsoft.com 个人邮箱:3lsoft@163.com 注:此代码禁止用于商业用途。有修改者发我一份,谢谢! ---------------- 开源世界,你我更进步 ---------------- 一,开源说明 这是一套如此完整的代码,它包括了一个软件开发过程中,从设计到实现的所有文档,资源以及完整源代码。也许许多人不清楚怎么以一个软件工程的思想去完成软件开发,这就是我发布所有源代码的目的。软件=文档+程序,这是许多人都知道的;履行这个思想,便是本套程序的开发守则。但由于这个课程设计的时间太短,才2周,有些地方做得比较马虎,或出现某些错误;但对大多数学习VB的朋友,还是有许多借鉴的地方的。 我不希望这套程序被某些朋友用于交差般地去应付他自己的课程设计,这样我会很生气;也不希望被用于一些异常的场合,这样我会很郁闷。感谢play78.com里面的demon给予我的帮助。 二,使用说明 您需要安装 MS SQL Server 2000 以及 Visual Basic 6.0 SP6 ,否则也许会有某些地方出现问题,甚至无法调试。另外,您还需要进行以下步骤,才能顺利地调试源代码: 1) 进入“数据新建”目录,运行程序 数据新建.exe。该程序提供了一个简单的方法去新建程序需要的数据库和测试数据。在程序中填写正确的SQL服务器信息即可。 2) 前台程序不是我开发的,是一个刚学习VB的同学开发的。我个人建议前台不用去看了,没有值得花费时间的地方。 3) 进入“后台管理”目录,先注册 XPMenu.ocx,否则代码运行时会发生错误哟。方法:运行 注册.bat 。调试的时候,必须在登陆界面设置 SQL 服务器地址,否则会连接不上,出现假死哟(因为没有加超时控制^_^)。其他的不再多说,学习过VB的朋友自然知道怎么办。 默认管理员帐号:admin 密码:admin 4) 文档里面有完整的需求说明书,详细设计说明书,测试文档等,另外附带有活动、时序图的源设计文件,需要 Power Designer 11 才能打开。 三,代码说明 大家也许留意到程序中的 FatCombo、FTextBox、XButton 和 XPButton。前3个是我原创的代码(绝对是原创),分别实现XP风格的Combo,TextBox,和Button。以前好像在某些地方发布过这些控件的源代码,但那些都是老版本了,这个程序集成了3个最新版本的XP风格控件,呵呵,应该能令大家满意了吧。最后一个 XPButton 是网上流行的XP按钮,不过遗憾是这个按钮的代码太多了,功能太强大了,好像有点杀鸡用牛刀的感觉,只是一直没有找到可以代替的。另外,朋友也许会问为什么没有见到 XPMenu.ocx 的源代码,我回答是没有必要。该 XPMenu.ocx 也是网上来的,很流行的HookMenu,但居然不支持MDI窗体(无法显示图标),实在令人失望。 这个代码完整的实现了 Office XP 风格界面,虽然许多地方都是模拟的,但往往最简单的方法就是最好的,反正个人感觉没有比这个更好的OXP界面风格了。最后宣传一下我的个人软件“音速启动(VStart)”,卖卖广告,不要砸我鸡蛋啊^_^~~ 四,后记 有什么问题也不要直接找我,上 http://www.play78.com/blog 看看吧,肯定有许多你想要的东西,它也有个群,不过不知道满员了没有。最后说说学习VB的方法,对于已经入门的朋友,多看看别人的代码,不管有多烦,总是能学到很多东西的。 lc_mtt 2005.9.14记

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值