|
@@ -0,0 +1,306 @@
|
|
|
+#第十一章、练习题
|
|
|
+
|
|
|
+#练习1
|
|
|
+#1、创建数据库dbtest11
|
|
|
+CREATE DATABASE IF NOT EXISTS dbtest11 CHARACTER SET 'utf8';
|
|
|
+
|
|
|
+#2、运行以下脚本创建表my_employees
|
|
|
+USE dbtest11;
|
|
|
+CREATE TABLE my_employees(
|
|
|
+id INT(10),
|
|
|
+first_name VARCHAR(10),
|
|
|
+last_name VARCHAR(10),
|
|
|
+userid VARCHAR(10),
|
|
|
+salary DOUBLE(10,2)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE users(
|
|
|
+id INT,
|
|
|
+userid VARCHAR(10),
|
|
|
+department_id INT
|
|
|
+);
|
|
|
+
|
|
|
+#3、显示my_employees的结构
|
|
|
+DESC my_employees;
|
|
|
+
|
|
|
+DESC users;
|
|
|
+
|
|
|
+#4、向my_employees表中插入下列数据
|
|
|
+/*
|
|
|
+ ID first_name last_name userid salary
|
|
|
+ 1 patel Ralph Rpatel 895
|
|
|
+ 2 Dancs Betty Bdancs 860
|
|
|
+ 3 Biri Ben Bbiri 1100
|
|
|
+ 4 Newman Chad Cnewman 750
|
|
|
+ 5 Ropeburn Audrey Aropebur 1550
|
|
|
+*/
|
|
|
+
|
|
|
+INSERT INTO my_employees(id,first_name,last_name,userid,salary)
|
|
|
+VALUES
|
|
|
+(1,'patel','Ralph','Rpatel',895),
|
|
|
+(2,'Dancs','Betty','Bdancs',860),
|
|
|
+(3,'Biri','Ben','Bbiri',1100),
|
|
|
+(4,'Newman','Chad','Cnewman',750),
|
|
|
+(5,'Ropeburn','Audrey','Aropebur',1550);
|
|
|
+
|
|
|
+SELECT * FROM my_employees;
|
|
|
+
|
|
|
+#5、向users表中插入数据
|
|
|
+/*
|
|
|
+ 1 Rpatel 10
|
|
|
+ 2 Bdancs 10
|
|
|
+ 3 Bbiri 20
|
|
|
+ 4 Cnewman 30
|
|
|
+ 5 Aropebur 40
|
|
|
+*/
|
|
|
+
|
|
|
+INSERT INTO users(id,userid,department_id)
|
|
|
+VALUES
|
|
|
+(1,'Rpatel',10),
|
|
|
+(2,'Bdancs',10),
|
|
|
+(3,'Bbiri',20),
|
|
|
+(4,'Cnewman',30),
|
|
|
+(5,'Aropebur',50);
|
|
|
+
|
|
|
+SELECT * FROM users;
|
|
|
+
|
|
|
+#6、将3号员工的last_name修改为drelxer
|
|
|
+UPDATE my_employees
|
|
|
+set last_name = 'drelxer'
|
|
|
+WHERE id = 3;
|
|
|
+
|
|
|
+#7、将所有工资少于900的员工的工资修改为1000
|
|
|
+UPDATE my_employees
|
|
|
+SET salary = 1000
|
|
|
+WHERE salary < 900;
|
|
|
+
|
|
|
+#8、将userid为Bbiri的users表和my_employees表的记录全部删除
|
|
|
+#我做的(不对)
|
|
|
+DELETE FROM my_employees,users
|
|
|
+WHERE userid = 'Bbiri';
|
|
|
+#老师做的
|
|
|
+#方式一
|
|
|
+DELETE FROM my_employees
|
|
|
+WHERE userid = 'Bbiri';
|
|
|
+DELETE FROM users
|
|
|
+WHERE userid = 'Bbiri';
|
|
|
+
|
|
|
+#方式二
|
|
|
+DELETE m,u
|
|
|
+FROM my_employees m
|
|
|
+JOIN users u
|
|
|
+ON m.userid = u.userid
|
|
|
+WHERE m.userid = 'Bbiri';
|
|
|
+
|
|
|
+SELECT * FROM my_employees;
|
|
|
+SELECT * FROM users;
|
|
|
+
|
|
|
+#9、删除my_employees、users表所有数据
|
|
|
+#我做的
|
|
|
+DELETE FROM my_employees,users;
|
|
|
+
|
|
|
+#老师做的
|
|
|
+DELETE FROM my_employees;
|
|
|
+DELETE FROM users;
|
|
|
+
|
|
|
+#10、检查所作的修正
|
|
|
+SELECT * FROM my_employees;
|
|
|
+SELECT * FROM users;
|
|
|
+
|
|
|
+#11、清空表my_employees
|
|
|
+TRUNCATE TABLE my_employees;
|
|
|
+
|
|
|
+##########################################################################
|
|
|
+
|
|
|
+#练习2
|
|
|
+
|
|
|
+#1、使用现有数据库dbtest11
|
|
|
+USE dbtest11;
|
|
|
+
|
|
|
+#2、创建表格pet
|
|
|
+/*
|
|
|
+ 字段名 字段说明 数据类型
|
|
|
+ name 宠物名称 VARCHAR(20)
|
|
|
+ owner 宠物主人 VARCHAR(20)
|
|
|
+ species 种类 VARCHAR(20)
|
|
|
+ sex 性别 CHAR(1)
|
|
|
+ birth 出生日期 YEAR
|
|
|
+ death 死亡日期 YEAR
|
|
|
+*/
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS pet(
|
|
|
+ `name` VARCHAR(20),
|
|
|
+ `owner` VARCHAR(20),
|
|
|
+ species VARCHAR(20),
|
|
|
+ sex CHAR(1),
|
|
|
+ birth YEAR,
|
|
|
+ death YEAR
|
|
|
+);
|
|
|
+
|
|
|
+DESC pet;
|
|
|
+
|
|
|
+#3、添加记录
|
|
|
+/*
|
|
|
+ name owner species sex birth death
|
|
|
+ Fluffy harold Cat f 2003 2010
|
|
|
+ Claws gwen Cat m 2004
|
|
|
+ Buffy Dog f 2009
|
|
|
+ Fang benny Dog m 2000
|
|
|
+ bowser diane Dog m 2003 2009
|
|
|
+ Chirpy Bird f 2008
|
|
|
+*/
|
|
|
+#我做的
|
|
|
+INSERT INTO pet(`name`,`owner`,species,sex,birth,death)
|
|
|
+VALUES('Fluffy','harold','Cat','f','2003','2010');
|
|
|
+
|
|
|
+INSERT INTO pet(`name`,`owner`,species,sex,birth)
|
|
|
+VALUES('Claws','gwen','Cat','m','2004');
|
|
|
+
|
|
|
+INSERT INTO pet(`name`,species,sex,birth)
|
|
|
+VALUES('Buffy','Dog','f','2009');
|
|
|
+
|
|
|
+INSERT INTO pet(`name`,`owner`,species,sex,birth)
|
|
|
+VALUES('Fang','benny','Dog','m','2000');
|
|
|
+
|
|
|
+INSERT INTO pet(`name`,`owner`,species,sex,birth,death)
|
|
|
+VALUES('bowser','diane','Dog','m','2003','2009');
|
|
|
+
|
|
|
+INSERT INTO pet(`name`,species,sex,birth)
|
|
|
+VALUES('Chirpy','Bird','f','2008');
|
|
|
+
|
|
|
+#老师做的(因为顺序跟建表时的字段的顺序都是一样的,所以省略了指明属性)
|
|
|
+INSERT INTO pet
|
|
|
+VALUES
|
|
|
+('Fluffy','harold','Cat','f','2003','2010'),
|
|
|
+('Claws','gwen','Cat','m','2004',NULL),
|
|
|
+('Buffy',NULL,'Dog','f','2009',NULL),
|
|
|
+('Fang','benny','Dog','m','2000',NULL),
|
|
|
+('bowser','diane','Dog','m','2003','2009'),
|
|
|
+('Chirpy',NULL,'Bird','f','2008',NULL);
|
|
|
+
|
|
|
+SELECT * FROM pet;
|
|
|
+
|
|
|
+#4、添加字段:主人的生日owner_birth DATE类型。
|
|
|
+ALTER TABLE pet
|
|
|
+ADD owner_birth DATE;
|
|
|
+
|
|
|
+DESC pet;
|
|
|
+
|
|
|
+#5、将名称为Claws的猫的主人改为kevin
|
|
|
+#我做的
|
|
|
+UPDATE pet
|
|
|
+SET `owner` = 'kevin'
|
|
|
+WHERE `name` = 'Claws';
|
|
|
+
|
|
|
+#老师做的
|
|
|
+UPDATE pet
|
|
|
+SET `owner` = 'kevin'
|
|
|
+WHERE `name` = 'Claws' AND species = 'Cat';
|
|
|
+
|
|
|
+#6、将没有死的狗的主人改为duck
|
|
|
+UPDATE pet
|
|
|
+SET `owner` = 'duck'
|
|
|
+WHERE species = 'Dog' AND death IS NULL;
|
|
|
+
|
|
|
+#7、查询没有主人的宠物的名字
|
|
|
+SELECT name
|
|
|
+FROM pet
|
|
|
+WHERE owner IS NULL;
|
|
|
+
|
|
|
+#8、查询已经死了的cat的姓名,主人,以及去世时间
|
|
|
+SELECT name,owner,death
|
|
|
+FROM pet
|
|
|
+WHERE species = 'Cat' AND death IS NOT NULL;
|
|
|
+
|
|
|
+#9、删除已经死亡的狗
|
|
|
+DELETE FROM pet
|
|
|
+WHERE species = 'Dog' AND death IS NOT NULL;
|
|
|
+
|
|
|
+#10、查询所有宠物信息
|
|
|
+SELECT * FROM pet;
|
|
|
+
|
|
|
+##########################################################################
|
|
|
+
|
|
|
+#练习3
|
|
|
+
|
|
|
+#1、使用已有的数据库dbtest11
|
|
|
+USE dbtest11;
|
|
|
+
|
|
|
+#2、创建表employee,并添加记录
|
|
|
+/*
|
|
|
+ id name sex tel addr salary
|
|
|
+ 10001 张一一 男 13456789000 山东青岛 1001.58
|
|
|
+ 10002 刘小红 女 13454319000 河北保定 1201.21
|
|
|
+ 10003 李四 男 0751-1234567 广东佛山 1004.11
|
|
|
+ 10004 刘小强 男 0755-5555555 广东深圳 1501.23
|
|
|
+ 10005 王艳 女 020-1232133 广东广州 1405.16
|
|
|
+*/
|
|
|
+
|
|
|
+CREATE TABLE employee(
|
|
|
+ id INT,
|
|
|
+ `name` VARCHAR(20),
|
|
|
+ sex CHAR(1),
|
|
|
+ tel VARCHAR(15),
|
|
|
+ addr VARCHAR(20),
|
|
|
+ salary DOUBLE(10,2)
|
|
|
+);
|
|
|
+
|
|
|
+DESC employee;
|
|
|
+
|
|
|
+INSERT INTO employee
|
|
|
+VALUES
|
|
|
+(10001,'张一一','男','13456789000','山东青岛',1001.58),
|
|
|
+(10002,'刘小红','女','13454319000','河北保定',1201.21),
|
|
|
+(10003,'李四','男','0751-1234567','广东佛山',1004.11),
|
|
|
+(10004,'刘小强','男','0755-5555555','广东深圳',1501.23),
|
|
|
+(10005,'王艳','女','020-1232133','广东广州',1405.16);
|
|
|
+
|
|
|
+SELECT * FROM employee;
|
|
|
+
|
|
|
+#3、查询出薪资在1200~1300之间的员工信息
|
|
|
+SELECT *
|
|
|
+FROM employee
|
|
|
+WHERE salary BETWEEN 1200 AND 1300;
|
|
|
+
|
|
|
+#4、查询出姓“刘”的员工的工号,姓名,家庭住址
|
|
|
+#我做的
|
|
|
+SELECT id,name,addr
|
|
|
+FROM employee
|
|
|
+WHERE name REGEXP '^刘';
|
|
|
+#或
|
|
|
+SELECT id,name,addr
|
|
|
+FROM employee
|
|
|
+WHERE name LIKE '%刘%';
|
|
|
+
|
|
|
+#老师做的
|
|
|
+SELECT id,name,addr
|
|
|
+FROM employee
|
|
|
+WHERE name LIKE '刘%';
|
|
|
+
|
|
|
+#5、将“李四”的家庭住址改为“广东韶关”
|
|
|
+UPDATE employee
|
|
|
+SET addr = '广东韶关'
|
|
|
+WHERE name = '李四';
|
|
|
+
|
|
|
+#6、查询出名字中带“小”的员工
|
|
|
+SELECT *
|
|
|
+FROM employee
|
|
|
+WHERE name LIKE '%小%';
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|