肖SIR__数据库之单表练习__12.1

数据库之单表练习:

 

 

 建表语句:

建表:

#部门表

create table dept(

    deptno int primary key,

    dname varchar(14), -- 部门名称

    loc varchar(13)-- 部门地址

)default charset=utf8 ;

insert into dept values (10,'会计部','纽约');

insert into dept values (20,'技术部','达拉斯');

insert into dept values (30,'销售部','芝加哥');

insert into dept values (40,'运营部','波士顿');

 

select * from dept

#员工表

 

drop table emp;

 

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);

======================================================================

 

单表题目:

 

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

结果:  详细信息 用* 表示;

条件:dept=30

方法1:select * from emp WHERE deptno=30;

 

 

 

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

 

结果:empno,ename,deptno

条件:job=“职员”

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

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

结果:员工信息  用* 表示

条件:comm >sal

方法1:SELECT * from emp WHERE comm>sal;

 

 

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

结果:员工信息  用* 表示

条件: sal*0.6<comm

方法1:select * from emp where comm>sal*0.6;

 

 

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

结果:员工信息  用* 表示员工

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

方法1:select * from emp where (deptno=10 and job="经理") or (deptno=20 and job="职员") ;

 

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

 

结果:员工信息  用* 表示员工

条件: deptno=10 and  job="经理" ,deptno=20  and   job="职员" ,   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奖金)

结果: job

条件:comm  is not  null  或  comm>0

方法1:SELECT DISTINCT(job) from emp WHERE comm>0;
方法2:select DISTINCT(job) from emp where comm is not null;

方法3:select job from emp where comm!="null";

 

 

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

结果:员工信息  用* 表示员工

条件:comm<100   or   is   null 

方法1:select * from emp where comm<100 or comm is null;

  

 

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

结果:员工信息  用* 表示员工

条件:like  a%  , b% , %s

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

 

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

结果:员工信息  用* 表示员工

条件: like

方法1:select * from emp WHERE ename like "______" ;

方法2:select * from emp where length(ename)=6;

 

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

结果:员工信息  用* 表示员工

条件: like  ,not  like    

方法:select * from emp WHERE ename not LIKE "%r%" ;

 

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

结果:员工信息  用* 表示员工

条件: order  by   ename  

方法:select *from emp order by ename;

 

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

二次排序

结果:员工信息  用* 表示员工

条件:job   desc    ,sal  asc 

方法:

SELECT * FROM  emp ORDER BY job DESC , sal ASC;

 

 

#14、计算员工的日薪(30)。(加奖金,不加奖金)

结果:ename ,sal/30 

方法:SELECT sal/30,ename from emp;

 

#15、找出姓名中包含a的员工信息。

结果:员工信息  用* 表示员工

条件:like  %a%

方法:select * from emp where ename like '%a%';

 

 

SELECT * from emp where comm>60%sal;

posted @ 2022-03-04 15:26  xiaolehua  阅读(377)  评论(0编辑  收藏  举报