数据库练习题(一)创建表格并做相应的查询
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;
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;
相关文章推荐
- mysql 创建和查询数据库和表格
- JDBC 数据库连接 创建表格、插入、查询、删除、修改数据 基本操作
- 数据库创建两个表格及模糊查询,函数
- MySQL基本操作:数据库的创建、查询、更新、插入、删除表格
- oracel 数据库使用plsql(创建表,序列,存储过程,触发器) 查询条件为空
- 数据库sql语句笔试题--包含创建数据库、表、插入记录、查询等操作
- 数据库 创建 查询 练习
- VB查询数据库之导出表格——机房收费总结(四)
- Zend Framework 1.10.1 快速入门之四:创建一个模型和数据库表格
- Spring-Boot集成Neo4j图谱数据库+案例之创建与查询节点
- Java下创建表格与数据库交互的几个要点
- 本脚本用于查询当前数据库中所有表格的记录条数
- MySQL创建、查询和管理数据库
- [bigdata-83] python3+图数据库neo4j 电话号码 身份证 黑名单 创建节点 标签 关系 增标记 增关系 查询pattern示例
- ios初学SQLite3(创建、插入、查询、更新数据库和表)
- 数据库SQL语句编写-表格的创建
- 例题:学习数据库查询。学生信息表的创建,主外键关系,以及45道题的查询实例。主要知识点在讲页45页,和讲页65页
- mysql创建数据库,表,插入数据,查询流程
- 数据库基本表的操作——创建表,索引和查询
- MySql 数据库查询区分大小写(创建数据库时)