MySQL查询练习

创建数据表employee和dept。

CREATE TABLE dept  (
			d_no         INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
			d_name       VARCHAR(50),
			d_location     VARCHAR(100)
);

由于employee表dept_no依赖于父表dept的主键d_no,因此需要先创建dept表,然后创建employee表。

CREATE TABLE employee  (
		    e_no        INT NOT NULL PRIMARY KEY,
		    e_name      VARCHAR(100) NOT NULL,
		    e_gender    CHAR(2) NOT NULL,
		    dept_no    INT NOT NULL,
		    e_job       VARCHAR(100) NOT NULL,
		    e_salary   SMALLINT NOT NULL,
		    hireDate   DATE,
		    CONSTRAINT dno_fk FOREIGN KEY(dept_no)   
		    REFERENCES dept(d_no)
);

将指定记录分别插入两个insert 表中。 `

向dept表中插入数据,SQL语句如下:

INSERT INTO dept VALUES (10, 'ACCOUNTING', 'ShangHai'),
(20, 'RESEARCH ', 'BeiJing '),
(30, 'SALES ', 'ShenZhen '),
(40, 'OPERATIONS ', 'FuJian ');`

向employee表中插入数据,SQL语句如下:

INSERT INTO employee 
VALUES (1001, 'SMITH', 'm',20, 'CLERK',800,'2005-11-12'),
(1002, 'ALLEN', 'f',30, 'SALESMAN', 1600,'2003-05-12'),
(1003, 'WARD', 'f',30, 'SALESMAN', 1250,'2003-05-12'),
(1004, 'JONES', 'm',20, 'MANAGER', 2975,'1998-05-18'),
(1005, 'MARTIN', 'm',30, 'SALESMAN', 1250,'2001-06-12'), 
(1006, 'BLAKE', 'f',30, 'MANAGER', 2850,'1997-02-15'),
(1007, 'CLARK', 'm',10, 'MANAGER', 2450,'2002-09-12'),
(1008, 'SCOTT', 'm',20, 'ANALYST', 3000,'2003-05-12'),
(1009, 'KING', 'f',10, 'PRESIDENT', 5000,'1995-01-01'),
(1010, 'TURNER', 'f',30, 'SALESMAN', 1500,'1997-10-12'),
(1011, 'ADAMS', 'm',20, 'CLERK', 1100,'1999-10-05'),
(1012, 'JAMES', 'm',30, 'CLERK', 950,'2008-06-15');

练习

1.在employee表中,查询所有记录的e_no、e_name和e_salary字段值。

select e_no,e_name,e_salary from employee;

2.在employee表中,查询dept_no等于10和20的所有记录。

select * from employee having dept_no=10 or dept_no=20;
select * from employee where dept_no=10 or dept_no=20;

3.在employee表中,查询工资范围在800~2500之间的员工信息。

select * from employee where e_salary>800 and e_salary<2500;

4.在employee表中,查询部门编号为20的部门中的员工信息。

select * from employee where dept_no=20;

5.在employee表中,查询每个部门最高工资的员工信息。

select dept_no,max(e_salary) from dept,employee where dept.d_no=employee.dept_no group by dept_no;	

6.查询员工BLAKE所在部门和部门所在地。

select dept_no,d_location,e_name from dept,employee where dept.d_no=employee.dept_no and e_name='BLAKE';

7.使用连接查询,查询所有员工的部门和部门信息。

select * from dept,employee where dept.d_no=employee.dept_no;
select e_name,dept_no,d_location from dept,employee where dept.d_no=employee.dept_no;

8.在employee表中,计算每个部门各有多少名员工。

select dept_no,count(d_name) from dept,employee where dept.d_no=employee.dept_no  group by d_no;    

9.在employee表中,计算不同类型职工的总工资数。

select e_job,sum(e_salary) from dept,employee where dept.d_no=employee.dept_no group by e_job;

10.在employee表中,计算不同部门的平均工资。

select dept_no,avg(e_salary) from dept,employee where dept.d_no=employee.dept_no group by dept_no;

11.在employee表中,查询工资低于1500的员工信息。

select * from employee where e_salary<1500;

12.在employee表中,将查询记录先按部门编号由高到低排列,再按员工工资由高到低排列。

 	select * from dept,employee where dept.d_no=employee.dept_no order by dept_no desc,e_salary desc;

13.在employee表中,查询员工姓名以字母’A’或’S’开头的员工的信息。

  	select * from employee where e_name like 'A%' or e_name like 'S%';

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值