第十一章、练习题.sql 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. #第十一章、练习题
  2. #练习1
  3. #1、创建数据库dbtest11
  4. CREATE DATABASE IF NOT EXISTS dbtest11 CHARACTER SET 'utf8';
  5. #2、运行以下脚本创建表my_employees
  6. USE dbtest11;
  7. CREATE TABLE my_employees(
  8. id INT(10),
  9. first_name VARCHAR(10),
  10. last_name VARCHAR(10),
  11. userid VARCHAR(10),
  12. salary DOUBLE(10,2)
  13. );
  14. CREATE TABLE users(
  15. id INT,
  16. userid VARCHAR(10),
  17. department_id INT
  18. );
  19. #3、显示my_employees的结构
  20. DESC my_employees;
  21. DESC users;
  22. #4、向my_employees表中插入下列数据
  23. /*
  24. ID first_name last_name userid salary
  25. 1 patel Ralph Rpatel 895
  26. 2 Dancs Betty Bdancs 860
  27. 3 Biri Ben Bbiri 1100
  28. 4 Newman Chad Cnewman 750
  29. 5 Ropeburn Audrey Aropebur 1550
  30. */
  31. INSERT INTO my_employees(id,first_name,last_name,userid,salary)
  32. VALUES
  33. (1,'patel','Ralph','Rpatel',895),
  34. (2,'Dancs','Betty','Bdancs',860),
  35. (3,'Biri','Ben','Bbiri',1100),
  36. (4,'Newman','Chad','Cnewman',750),
  37. (5,'Ropeburn','Audrey','Aropebur',1550);
  38. SELECT * FROM my_employees;
  39. #5、向users表中插入数据
  40. /*
  41. 1 Rpatel 10
  42. 2 Bdancs 10
  43. 3 Bbiri 20
  44. 4 Cnewman 30
  45. 5 Aropebur 40
  46. */
  47. INSERT INTO users(id,userid,department_id)
  48. VALUES
  49. (1,'Rpatel',10),
  50. (2,'Bdancs',10),
  51. (3,'Bbiri',20),
  52. (4,'Cnewman',30),
  53. (5,'Aropebur',50);
  54. SELECT * FROM users;
  55. #6、将3号员工的last_name修改为drelxer
  56. UPDATE my_employees
  57. set last_name = 'drelxer'
  58. WHERE id = 3;
  59. #7、将所有工资少于900的员工的工资修改为1000
  60. UPDATE my_employees
  61. SET salary = 1000
  62. WHERE salary < 900;
  63. #8、将userid为Bbiri的users表和my_employees表的记录全部删除
  64. #我做的(不对)
  65. DELETE FROM my_employees,users
  66. WHERE userid = 'Bbiri';
  67. #老师做的
  68. #方式一
  69. DELETE FROM my_employees
  70. WHERE userid = 'Bbiri';
  71. DELETE FROM users
  72. WHERE userid = 'Bbiri';
  73. #方式二
  74. DELETE m,u
  75. FROM my_employees m
  76. JOIN users u
  77. ON m.userid = u.userid
  78. WHERE m.userid = 'Bbiri';
  79. SELECT * FROM my_employees;
  80. SELECT * FROM users;
  81. #9、删除my_employees、users表所有数据
  82. #我做的
  83. DELETE FROM my_employees,users;
  84. #老师做的
  85. DELETE FROM my_employees;
  86. DELETE FROM users;
  87. #10、检查所作的修正
  88. SELECT * FROM my_employees;
  89. SELECT * FROM users;
  90. #11、清空表my_employees
  91. TRUNCATE TABLE my_employees;
  92. ##########################################################################
  93. #练习2
  94. #1、使用现有数据库dbtest11
  95. USE dbtest11;
  96. #2、创建表格pet
  97. /*
  98. 字段名 字段说明 数据类型
  99. name 宠物名称 VARCHAR(20)
  100. owner 宠物主人 VARCHAR(20)
  101. species 种类 VARCHAR(20)
  102. sex 性别 CHAR(1)
  103. birth 出生日期 YEAR
  104. death 死亡日期 YEAR
  105. */
  106. CREATE TABLE IF NOT EXISTS pet(
  107. `name` VARCHAR(20),
  108. `owner` VARCHAR(20),
  109. species VARCHAR(20),
  110. sex CHAR(1),
  111. birth YEAR,
  112. death YEAR
  113. );
  114. DESC pet;
  115. #3、添加记录
  116. /*
  117. name owner species sex birth death
  118. Fluffy harold Cat f 2003 2010
  119. Claws gwen Cat m 2004
  120. Buffy Dog f 2009
  121. Fang benny Dog m 2000
  122. bowser diane Dog m 2003 2009
  123. Chirpy Bird f 2008
  124. */
  125. #我做的
  126. INSERT INTO pet(`name`,`owner`,species,sex,birth,death)
  127. VALUES('Fluffy','harold','Cat','f','2003','2010');
  128. INSERT INTO pet(`name`,`owner`,species,sex,birth)
  129. VALUES('Claws','gwen','Cat','m','2004');
  130. INSERT INTO pet(`name`,species,sex,birth)
  131. VALUES('Buffy','Dog','f','2009');
  132. INSERT INTO pet(`name`,`owner`,species,sex,birth)
  133. VALUES('Fang','benny','Dog','m','2000');
  134. INSERT INTO pet(`name`,`owner`,species,sex,birth,death)
  135. VALUES('bowser','diane','Dog','m','2003','2009');
  136. INSERT INTO pet(`name`,species,sex,birth)
  137. VALUES('Chirpy','Bird','f','2008');
  138. #老师做的(因为顺序跟建表时的字段的顺序都是一样的,所以省略了指明属性)
  139. INSERT INTO pet
  140. VALUES
  141. ('Fluffy','harold','Cat','f','2003','2010'),
  142. ('Claws','gwen','Cat','m','2004',NULL),
  143. ('Buffy',NULL,'Dog','f','2009',NULL),
  144. ('Fang','benny','Dog','m','2000',NULL),
  145. ('bowser','diane','Dog','m','2003','2009'),
  146. ('Chirpy',NULL,'Bird','f','2008',NULL);
  147. SELECT * FROM pet;
  148. #4、添加字段:主人的生日owner_birth DATE类型。
  149. ALTER TABLE pet
  150. ADD owner_birth DATE;
  151. DESC pet;
  152. #5、将名称为Claws的猫的主人改为kevin
  153. #我做的
  154. UPDATE pet
  155. SET `owner` = 'kevin'
  156. WHERE `name` = 'Claws';
  157. #老师做的
  158. UPDATE pet
  159. SET `owner` = 'kevin'
  160. WHERE `name` = 'Claws' AND species = 'Cat';
  161. #6、将没有死的狗的主人改为duck
  162. UPDATE pet
  163. SET `owner` = 'duck'
  164. WHERE species = 'Dog' AND death IS NULL;
  165. #7、查询没有主人的宠物的名字
  166. SELECT name
  167. FROM pet
  168. WHERE owner IS NULL;
  169. #8、查询已经死了的cat的姓名,主人,以及去世时间
  170. SELECT name,owner,death
  171. FROM pet
  172. WHERE species = 'Cat' AND death IS NOT NULL;
  173. #9、删除已经死亡的狗
  174. DELETE FROM pet
  175. WHERE species = 'Dog' AND death IS NOT NULL;
  176. #10、查询所有宠物信息
  177. SELECT * FROM pet;
  178. ##########################################################################
  179. #练习3
  180. #1、使用已有的数据库dbtest11
  181. USE dbtest11;
  182. #2、创建表employee,并添加记录
  183. /*
  184. id name sex tel addr salary
  185. 10001 张一一 男 13456789000 山东青岛 1001.58
  186. 10002 刘小红 女 13454319000 河北保定 1201.21
  187. 10003 李四 男 0751-1234567 广东佛山 1004.11
  188. 10004 刘小强 男 0755-5555555 广东深圳 1501.23
  189. 10005 王艳 女 020-1232133 广东广州 1405.16
  190. */
  191. CREATE TABLE employee(
  192. id INT,
  193. `name` VARCHAR(20),
  194. sex CHAR(1),
  195. tel VARCHAR(15),
  196. addr VARCHAR(20),
  197. salary DOUBLE(10,2)
  198. );
  199. DESC employee;
  200. INSERT INTO employee
  201. VALUES
  202. (10001,'张一一','男','13456789000','山东青岛',1001.58),
  203. (10002,'刘小红','女','13454319000','河北保定',1201.21),
  204. (10003,'李四','男','0751-1234567','广东佛山',1004.11),
  205. (10004,'刘小强','男','0755-5555555','广东深圳',1501.23),
  206. (10005,'王艳','女','020-1232133','广东广州',1405.16);
  207. SELECT * FROM employee;
  208. #3、查询出薪资在1200~1300之间的员工信息
  209. SELECT *
  210. FROM employee
  211. WHERE salary BETWEEN 1200 AND 1300;
  212. #4、查询出姓“刘”的员工的工号,姓名,家庭住址
  213. #我做的
  214. SELECT id,name,addr
  215. FROM employee
  216. WHERE name REGEXP '^刘';
  217. #或
  218. SELECT id,name,addr
  219. FROM employee
  220. WHERE name LIKE '%刘%';
  221. #老师做的
  222. SELECT id,name,addr
  223. FROM employee
  224. WHERE name LIKE '刘%';
  225. #5、将“李四”的家庭住址改为“广东韶关”
  226. UPDATE employee
  227. SET addr = '广东韶关'
  228. WHERE name = '李四';
  229. #6、查询出名字中带“小”的员工
  230. SELECT *
  231. FROM employee
  232. WHERE name LIKE '%小%';