#第十一章、练习题 #练习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 '%小%';