数据库之mysql练习
部门表
DROP TABLE IF EXISTS `DEPT`;
CREATE TABLE DEPT(
DEPTNO int PRIMARY KEY,##部门编号
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');
员工表
DROP TABLE IF EXISTS `EMP`;
CREATE TABLE EMP(
EMPNO int PRIMARY KEY, #员工编号
ENAME VARCHAR(10), #员工姓名
JOB VARCHAR(9), #员工工作
MGR int, #员工直属领导编号
HIREDATE DATE, #入职时间
SAL double, #工资
COMM double, #奖金
DEPTNO int #对应dept表的外键
);
## 添加 部门 和 员工 之间的主外键关系
ALTER TABLE EMP ADD CONSTRAINT FOREIGN KEY EMP(DEPTNO) REFERENCES DEPT (DEPTNO);
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-07-03',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-07-13',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,'1981-01-23',1300,NULL,10);
工资等级表
DROP TABLE IF EXISTS `SALGRADE`;
CREATE TABLE SALGRADE(
GRADE int, #等级
LOSAL double, #最低工资
HISAL double ); #最高工资
INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
部门经理表
DROP TABLE IF EXISTS `MGR`;
CREATE TABLE MGR(
MGRNO INT PRIMARY KEY,
MNAME VARCHAR(20),
HIREDATE DATE);
INSERT INTO MGR VALUES(7566,"WHRITE","1979-11-16");
INSERT INTO MGR VALUES(7698,"TEIDI","1978-10-15");
INSERT INTO MGR VALUES(7782,"mike","1980-12-17");
INSERT INTO MGR VALUES(7788,"TAIDE","1977-09-14");
INSERT INTO MGR VALUES(7839,"HANKE","1976-08-13");
INSERT INTO MGR VALUES(7902,"LALA","1975-07-12");
INSERT INTO MGR VALUES(7783,"jion","1988-11-16");
-:会
+:会一点
*:不会
单表练习题
1、找出10部门的经理、20部门的职员 的员工信息。-
2、找出奖金少于100或者没有获得奖金的员工的信息。+
3、名字中不包含R字符的员工信息。+
4、返回员工的信息并按工作降序工资升序排列。-
5、计算员工的日薪(按30天)。.
6、返回部门号及其本部门的最低工资。*
7、在emp表里查询不重复的部门号。-
8、返回工资水平多于平均工资的员工。*
9、返回员工工作及其从事此工作的最低工资.+
单表练习题答案
1、SELECT * from emp where deptno = '10' AND job = 'maneger' OR deptno = '20' AND job = 'manager';//多个平行条件用OR,同一附加条件用AND
2、select * from emp where comm < 100 OR comm IS NULL;//没有为IS NULL;
3、select * from emp where ename NOT LIKE '%R%';
4、select * from emp ORDER BY job DESC,sal;//多字段排序直接加逗号跟字段,默认为升序,DESC为降序
5、select ename,(sal/30) as '日薪' from emp;//对字段进行计算并修改别名
6、select deptno,min(sal) as 'min_sal' from emp group by deptno;// 分组查询
7、select distinct deptno from emp;查找不重复类容
8、select * from emp where sal > (select avg(sal) from emp);// 二重查询取平均值
9、`select ename,min(sal) from emp group by sal;
多表查询练习题
1、工资水平多于smith的员工信息。
2、返回员工和所属经理的姓名。
3、返回雇员的雇佣日期早于其经理雇佣日期的员工及其经理姓名
4、返回从事clerk工作的员工姓名和所在部门名称。
5、返回销售部(sales)所有员工的姓名。
6、返回部门号、部门名、部门所在位置及其每个部门的员工总数。
7、返回工资处于第四级别的员工的姓名。
8、返回工资为二等级的职员名字、部门所在地、和二等级的最低工资和最高工资
9、工资等级多于smith的员工信息。
多变查询练习题答案
1、select * from emp where sal > (select sal where ename = 'smith');//二次查询
2、select e.ename,m.mname from emp as e inner join mgr as m on e.mgr = m.mgrno;//关联查询2、3、4题类似
select e.ename,m.mname from emp as e,mgr as m where e.mgr = m.mgrno;// 普通查询
3、select e.ename,m.mname from emp as e inner join mgr as m on e.mgr = m.mgrno where e.hiredate > m.hiredate;
select e.ename,m.mname from emp as e,mgr as m where e.mgr = m.mgrno and e.hiredate > m.hiredate;
4、select e.ename,d.dname from emp as e inner join dept as d on e.deptno = m.deptno where e.job = 'clerk';
select e.ename,d.dname from emp as e,dept as d where e.deptno = m.deptno and e.job = 'clerk';
5、select ename from emp where deptno = (select deptno from dept where dname = 'sales');// 二重查询
select e.ename from emp as e,dept as d where e.deptno = d.deptno and d.dname = 'sales';
select e.ename from emp as e inner join dept as d on e.deptno = d.deptno where d.dname = 'sales';
6、select d.deptno,d.dname,d.loc,count(e.ename) as numbers from emp as e,dept as d where e.deptno = d.deptno group by e.deptno;// 关联查询加分组
7、select e.ename,e.sal from emp as e,salgrade as s where s.grade = '4' and e.sal <s.higrade and e.sal >s.lowgrade;
8、SELECT e.ename,d.dname,e.sal,s.losal,s.hisal FROM emp AS e, dept AS d,salgrade AS s WHERE e.deptno = d.deptno AND s.grade = '2' AND e.sal > s.losal AND e.sal < s.hisal;
9、select e.* from emp as e,salgrade as s where e.sal< s.higrade and e.sal > s.lowgrade and grade > (select s.grade from emp as e,salgrade as s where e.sal <s.higrade and e.sal >s.lowgrade and e.ename = 'smith;
SELECT emp.* FROM emp WHERE emp.sal > (SELECT s.hisal FROM salgrade s WHERE s.grade=(SELECT s.grade FROM salgrade s,emp e WHERE e.sal>s.losal AND e.sal<s.hisal AND e.ename="ALLEN"));
# 查询比smith工资等级最高值高的员工
数据库之mysql练习的更多相关文章
- 数据库 之MySQL 简单教程
So Easy系列之MySQL数据库教程 1. 数据库概述 1.1. 数据库概述 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和 ...
- Mysql数据库知识-Mysql索引总结 mysql mysql数据库 mysql函数
mysql数据库知识-Mysql索引总结: 索引(Index)是帮助MySQL高效获取数据的数据结构. 下边是自己整理的资料与自己的学习总结,,做一个汇总. 一.真的有必要使用索引吗? 不是每一个性能 ...
- 迁移应用数据库到MySQL Database on Azure
by Rong Yu 有用户问怎么把他们应用的数据库迁移到MySQL Database on Azure上,有哪些方式,有没有需要注意的地方.今天我们来概括介绍一下迁移应用数据库到MySQL Data ...
- Cobar是提供关系型数据库(MySQL)分布式服务的中间件
简介 Cobar是提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明. 产品在阿里巴巴稳定运行3年以上. 接管了3000+ ...
- Mysql数据库的mysql Schema 究竟有哪些东西& 手工注入的基础要领
#查看数据库版本号 mysql> select @@version; +------------+ | @@version | +------------+ | 5.5.16-log | +- ...
- 2、ABPZero系列教程之拼多多卖家工具 更改数据库为Mysql
因为要部署项目到云服务器,不想在服务器上装SqlServer,所以需要把项目改为Mysql. 项目初始化 1.下载项目压缩包,前面文章已经说到,可以加群到群文件里下载.解压缩下载的项目源码,使用VS2 ...
- 关于数据库管理系统DBMS--关系型数据库(MySQL/MariaDB)
数据库的结构(3种):层次,网状,关系型(用的最多): DBMS的三层模型: 视图层:面向最终用户: 逻辑层:面向程序员或DBA: 物理层:面向系统管理员: 关系型数据库管理系统——RDBMS: 主要 ...
- 数据库【mysql篇】学习笔记
Windows服务 -- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意 ...
- 数据库之数据库管理篇[mysql]
管理数据库 1.mysql开闭使用篇 mariadb在Linux中首次进入mysql(因为此时还没有创建任何用户,mysql的root并不等效于linux中的root用户) sudo mysql 进入 ...
- 数据库之mysql篇(1)—— 数据库管理系统简介/mysql的安装、配置
说mysql之前,还是先说说数据库. 什么是数据库: 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后 ...
随机推荐
- backdoor-factory
启动backdoor-factory 寻找大于100字节的代码洞 执行的结果 查看适合的payload程序 iat_reverse_tcp_stager_threaded分片段注入方式 使用这种注入方 ...
- JMeter一次简单的接口测试(转载)
转载自 http://www.cnblogs.com/yangxia-test 本次接口测试:根据ws查询所有商品的具体的信息.检查商品是否返回成功. 1. 准备测试数据 查询数据库中产品表已上架商 ...
- day11 闭包函数和装饰器
1.函数不是新知识点 主要是学习函数的用法 在面向对象编程中,一切皆对象,函数也不例外 具体的表现 1.函数可以引用 2.函数可以作为函数的参数 3.函数可以作为函数的返回值 4.可以被存储到容器类型 ...
- java定义object数组(可以存储String或int等多种类型)
需求| 想在数组中既有String类型又有int等类型,所以需要定义数组为Object类型 背景| 现在有一个字符串params,需要对其进行逗号分隔赋值到数组里,这时遇到了个问题,即使直接定义的 ...
- helm 更改为国内源
helm init --upgrade -i slpcat/tiller:v2.8.2 --stable-repo-url https://kubernetes.oss-cn-hangzhou.al ...
- NumPy 高级索引
NumPy 高级索引 NumPy 比一般的 Python 序列提供更多的索引方式.除了之前看到的用整数和切片的索引外,数组可以由整数数组索引.布尔索引及花式索引. 整数数组索引 以下实例获取数组中(0 ...
- Shell教程 之printf命令
上一章节我们学习了 Shell 的 echo 命令,本章节我们来学习 Shell 的另一个输出命令 printf. printf 命令模仿 C 程序库(library)里的 printf() 程序. ...
- 网页请求get方式
方法都是博客中的大神写的,谢谢各路大神. 方法一:(亲测有效) //Get请求方式 private string RequestGet(string Url) { string PageStr = s ...
- 英文谚语:Take that with a grain of salt
take sth. with a grain of salt 这个习语的字面意思是“和一撮盐一起吃下去”,为什么要与盐一起吃呢? 据说这个习语要追溯到罗马时代,罗马将军庞培曾发现一种解毒剂,必须和着一 ...
- .linearDrag on rigidbody / rigidbody2D in code?
it's rigidbody.drag not .linearDrag 这几天在做一个弹球的游戏,发现小球落下后不会自动停,测试后发现线性阻尼增加后可以 于是加了个触发器不停增加线性阻尼值 priva ...