您的位置:首页 > 数据库

数据库练习题(一)创建表格并做相应的查询

2017-09-29 11:37 453 查看
#1. 在MySQL中分别创建表dept和employee,结构如下:
dept
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| d_no       | int(11)      | NO   | PRI | NULL    | auto_increment |
| d_name    | varchar(50)  | YES  |     | NULL    |                |
| d_location  | varchar(100) | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
employee
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null  | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| e_no     | int(11)       | NO   | PRI | NULL    |       |
| e_name   | varchar(100) | NO   |     | NULL    |       |
| e_gender | char(2)       | NO   |     | NULL    |       |
| dept_no  | int(11)       | NO   | MUL | NULL    |       |
| e_job    | varchar(100)  | NO   |     | NULL    |       |
| e_salary | smallint(6)     | NO   |     | NULL    |       |
| hireDate | date         | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
#2. 在employee表中插入如下数据:
-> (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');
在dept表中插入如下数据:
-> (10, 'ACCOUNTING', 'ShangHai'),
-> (20, 'RESEARCH ', 'BeiJing '),
-> (30, 'SALES ', 'ShenZhen '),
-> (40, 'OPERATIONS ', 'FuJian ');
#3. 在employee表中,查询每个部门最高工资的员工信息。
#4. 查询员工BLAKE所在部门和部门所在地。
#5. 使用连接查询,查询所有员工的部门和部门信息。
#6. 在employee表中,计算不同部门的平均工资。
#7. 在employee表中,查询员工姓名以字母’A’或’S’开头的员工的信息。
#8. 在employee表中,将查询记录先按部门编号由高到低排列,再按员工工资由高到低排列。
#9. 在employee表中,查询工资范围在800~2500之间的员工信息。
#10. 在employee表中,查询到目前为止,工龄大于等于10年的员工信息。

答案如下:

1、

CREATE TABLE dept

(

d_no        INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

d_name      VARCHAR(50),

d_location     VARCHAR(100)

);

 

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)

);

2、

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

3、SELECT dept_no, MAX(e_salary) FROM employeeGROUP BY dept_no;

4、

SELECT d_no, d_location  FROM dept WHERE d_no=

(SELECT dept_no FROM employee WHEREe_name='BLAKE');

5、

SELECT e_no, e_name, dept_no,d_name,d_location

FROM employee, dept WHEREdept.d_no=employee.dept_no;

6、SELECT dept_no, AVG(e_salary) FROM employeeGROUP BY dept_no;

7、SELECT * FROM employee WHERE e_name rlike'^[as]';

8、

SELECT e_name,dept_no, e_salary

FROM employee ORDER BY dept_no DESC,e_salary DESC;

9、SELECT * FROM employee WHERE e_salaryBETWEEN 800 AND 2500;

10、SELECT * FROM employee whereYEAR(CURDATE()) -YEAR(hireDate) >= 10;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: