• 多测师肖老师__单表建表和练习(1.8)


    create table emp(
    empno int primary key, -- 员工编号
    ename varchar(10), -- 员工姓名
    job varchar(9), -- 员工工作
    mgr int, -- 员工直属领导编号
    hiredate date, -- 入职时间
    sal double, -- 工资
    comm double, -- 奖金
    deptno int, -- 所在部门
    foreign key (deptno) references dept(deptno)) default charset=utf8; -- 关联dept表

    -- alter table emp add foreign key (deptno) references dept(deptno);
    insert into emp values(7369,'smith','职员',7566,"1980-12-17",800,null,20);
    insert into emp values(7499,'allen','销售员',7698,'1981-02-20',1600,300,30);
    insert into emp values(7521,'ward','销售员',7698,'1981-02-22',1250,500,30);
    insert into emp values(7566,'jones','经理',7839,'1981-04-02',2975,null,20);
    insert into emp values(7654,'martin','销售员',7698,'1981-09-28',1250,1400,30);
    insert into emp values(7698,'blake','经理',7839,'1981-05-01',2850,null,30);
    insert into emp values(7782,'clark','经理',7839,'1981-06-09',2450,null,10);
    insert into emp values(7788,'scott','职员',7566,'1987-07-03',3000,2000,20);
    insert into emp values(7839,'king','董事长',null,'1981-11-17',5000,null,10);
    insert into emp values(7844,'turners','销售员',7698,'1981-09-08',1500,50,30);
    insert into emp values(7876,'adams','职员',7566,'1987-07-13',1100,null,20);
    insert into emp values(7900,'james','职员',7698,'1981-12-03',1250,null,30);
    insert into emp values(7902,'ford','销售员',7566,'1981-12-03',3000,null,20);
    insert into emp values(7934,'miller','职员',7782,'1981-01-23',1300,null,10);
    select * from emp ;

     

    单表题目:

    #1、查找部门30中员工的详细信息。

    思路:

    条件:deptno=30 

    结果:工的详细信息   *

    方法一:

    SELECT * FROM emp WHERE deptno=30 ;

    #2、找出从事职员工作的员工的编号、姓名、部门号。(clerk  职员,办事员)

    条件: job='职员'

    结果: empno ,ename,deptno

    方法:SELECT empno,ename,deptno FROM emp WHERE job="职员";

    #3、检索出奖金多于基本工资的员工信息。

    条件:sal基本工资 < comm 奖金

    结果:员工信息   *

    方法:Select * from emp where comm >sal

    #4、检索出奖金多于基本工资60%的员工信息。

    条件:sal基本工资*0.6   < comm 奖金

    结果:员工信息   *

    方法:Select * from emp where comm >sal *0.6 

    #5、找出10部门的经理、20部门的职员 的员工信息。(manager经理;管理)

    条件:(deptno=10 and job="经理") or(deptno=20 and job="职员")

    结果:员工信息 *


    SELECT * FROM emp WHERE (job="经理" and deptno=10) or (job="职员" and deptno=20);

    #6、找出10部门的经理、20部门的职员 或者既不是经理也不是职员但是工资高于2000元的员工信息。(sal 工资)

    条件:(deptno=10 and job="经理")or(deptno=20 and job="职员")

    结果:

    方法一:select * from emp where (deptno=10 AND job='经理') OR (deptno=20 AND job='职员') OR (job not in ('经理','职员') and sal>2000) ;

    方法二:

    Select * from emp where (deptno=10 and job='经理') or (deptno=20 and job='职员') or (job!='经理' and job!='职员' and sal>2000)

    方法三:

    SELECT * from emp where ((deptno=10 and job="经理") or (deptno=20 and job="职员")) or (job<>"职员" and job<>"经理" and sal>2000);

    #7、找出获得奖金的员工的工作。(comm奖金)

    思路:

    条件:comm  is  not null

    结果:job

    方法一:select DISTINCT(job) from emp where comm is  not null ;

    方法二:select DISTINCT(job) from emp where comm<>0;

    #8、找出奖金少于100或者没有获得奖金的员工的信息。

    条件:comm<100  or is null

    结果:员工的信息   *

    方法1:SELECT * FROM emp WHERE comm<100 or comm is null

    #9、找出姓名以abs开始的员工信息.

    条件:"a%"    or "b%"   or  "s%"

     结果:员工信息  *

    方法一: select * from emp where ename like "a%" or ename like "b%" or ename like "s%";

    方法二:SELECT * FROM emp WHERE ename REGEXP "^a|^b|^s"  ;

    #10、找到名字长度为6个字符的员工信息。

    结果: 下滑线6个字符

    结果:员工信息  *

    方法1:select * from emp where ename like '______';

    方法2:SELECT * FROM emp WHERE LENGTH(ename)=6;

    #11、名字中不包含r字符的员工信息。

    条件:not  like 

    结果:员工信息 *

    方法:select * from emp where ename  not like "%r%" ;

    #12、查找员工的详细信息并按姓名排序。

    条件: ename    desc

    结果:  *

    方法一:select * from emp ORDER BY ename ;

    方法二:select * from emp ORder by  ename desc

    #13、返回员工的信息并按工作降序工资升序排列。(升序的规则)  

    条件:job    order   by      desc   ,sal   asc

    结果:员工的信息 *

    方法:select * from emp ORDER BY job desc,sal asc ;

    #14、计算员工的日薪(30)。 备注:加上奖金  或不加上奖金

    条件:sal    comm     sal/30   (sal+comm)/30

    结果:员工的日薪

    方法1:SELECT ename, sal/30 '日薪', (sal+comm)/30 '加奖日薪' from emp;

    方法2:SELECT ename,ROUND((sal/30),2) AS '日薪' FROM emp ;

    方法3:select ename,(sal/30) as"日薪" from emp;

    #15、找出姓名中包含a的员工信息,并按降序sal排序取出前三个。

     条件:like “%a%”     order  by  sal  desc   limit  0,3

    结果:员工信息  *

     方法:SELECT * from emp where ename  LIKE '%a%' ORDER BY sal DESC LIMIT 0,3;

    员工的详细信息并按姓名排序。

    条件:

  • 相关阅读:
    JavaScript定时器及相关面试题
    单线程JavaScript
    webpack基础入门
    SQL Server 服务器器信息备份(二)--权限备份
    SQL Server 服务器器信息备份(一)--login新建脚本备份
    Raid与DAN、SAN、NAS基础
    AlwaysOn可用性组功能测试(三)--其他测试
    AlwaysOn可用性组功能测试(二)--SQL Server群集故障转移对AlwaysOn可用性组的影响
    AlwaysOn可用性组功能测试(一)--AlwaysOn故障转移测试
    AlwaysOn可用性组测试环境安装与配置(一)--SQL群集环境搭建
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/15704545.html
Copyright © 2020-2023  润新知