zoukankan      html  css  js  c++  java
  • 数据库之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工资等级最高值高的员工

  • 相关阅读:
    兴趣与心态比较重要【转】
    网站发布到iis上,附加进程调试,打不到断点
    MVC时间格式化
    javascript数组扁平化处理
    Object.prototype.toString.call()
    获取浏览器大小
    HTTP状态码
    未能加载文件或程序集“Microsoft.ReportViewer.WebForms, Version=10.0.0.0
    javascript基础知识-1
    Html5上传图片的预览
  • 原文地址:https://www.cnblogs.com/zhz-8919/p/10666001.html
Copyright © 2011-2022 走看看