当前位置:   article > 正文

南邮数据库实验2:小型数据库设计

小型数据库设计

题目:自己设计一个小型数据库。

个人比较喜欢看电影,于是用Python爬了豆瓣Top250的电影,做了一个关于电影的小型数据库,这里只举一小部分作为例子。

关系模式:

 

电影名称关系模式

TITLE(MNO,MNAME)

电影评分关系模式

RATING(MNO,MSCORE)

电影标签关系模式

TAG(MNO,MTAG)

演员关系模式

ACTOR(NAME,BIRTH,STAR,BLOOD)

创建数据表:

  1. CREATE TABLE TITLE(
  2. MNO CHAR(10) PRIMARY KEY,
  3. MNAME CHAR(50) UNIQUE,
  4. );
  5. CREATE TABLE RATING(
  6. MNO CHAR(10) PRIMARY KEY,
  7. MSCORE FLOAT(10),
  8. );
  9. CREATE TABLE TAG(
  10. MNO CHAR(10) PRIMARY KEY,
  11. MTAG CHAR(20),
  12. );

插入数据:

  1. INSERT INTO TITLE(MNO,MNAME)
  2. VALUES
  3. (1,'肖申克的救赎'),
  4. (2,'霸王别姬'),
  5. (3,'这个杀手不太冷'),
  6. (4,'阿甘正传'),
  7. (5,'美丽人生'),
  8. (6,'千与千寻'),
  9. (7,'泰坦尼克号'),
  10. (8,'辛德勒的名单'),
  11. (9,'盗梦空间'),
  12. (10,'机器人总动员');
  13. SELECT * FROM TITLE
  14. INSERT INTO RATING(MNO,MSCORE)
  15. VALUES
  16. (1,9.6),
  17. (2,9.5),
  18. (3,9.4),
  19. (4,9.4),
  20. (5,9.5),
  21. (6,9.3),
  22. (7,9.3),
  23. (8,9.4),
  24. (9,9.3),
  25. (10,9.3);
  26. INSERT INTO TAG(MNO,MTAG)
  27. VALUES
  28. (1,'犯罪'),
  29. (2,'同性'),
  30. (3,'犯罪'),
  31. (4,'剧情'),
  32. (5,'剧情'),
  33. (6,'动画'),
  34. (7,'灾难'),
  35. (8,'剧情'),
  36. (9,'科幻'),
  37. (10,'动画');

(1)选择评分大于等于9.4的电影;

  1. SELECT TITLE.MNAME,RATING.MSCORE
  2. FROM TITLE,RATING
  3. WHERE TITLE.MNO=RATING.MNO AND MSCORE>=9.4;

(2)选择分类为'剧情'的电影;

  1. SELECT TITLE.MNAME,TAG.MTAG
  2. FROM TITLE,TAG
  3. WHERE TITLE.MNO=TAG.MNO AND MTAG='剧情';

(3)更新第十部电影的分类为'科幻',评分为9.1;

  1. UPDATE TAG
  2. SET MTAG='科幻'
  3. WHERE MNO=10;
  4. UPDATE RATING
  5. SET MSCORE=9.1
  6. WHERE MNO=10;

(4)选择排名第10的电影;

  1. SELECT MNAME,MTAG,MSCORE
  2. FROM TITLE,TAG,RATING
  3. WHERE TITLE.MNO=10 AND TAG.MNO=10 AND RATING.MNO=10;

(5)自然连接;

  1. SELECT TITLE.MNO,TITLE.MNAME,RATING.MSCORE,TAG.MTAG
  2. FROM TITLE,RATING,TAG
  3. WHERE TITLE.MNO=RATING.MNO AND RATING.MNO=TAG.MNO;

(6)删除排名第十的电影;

  1. DELETE
  2. FROM TITLE
  3. WHERE TITLE.MNO=10;
  4. DELETE
  5. FROM RATING
  6. WHERE RATING.MNO=10;
  7. DELETE
  8. FROM TAG
  9. WHERE TAG.MNO=10;
  10. SELECT TITLE.MNO,TITLE.MNAME,RATING.MSCORE,TAG.MTAG
  11. FROM TITLE,RATING,TAG
  12. WHERE TITLE.MNO=RATING.MNO AND RATING.MNO=TAG.MNO;

完整程序:

  1. CREATE DATABASE ***;
  2. CREATE TABLE TITLE(
  3. MNO CHAR(10) PRIMARY KEY,
  4. MNAME CHAR(50) UNIQUE,
  5. );
  6. CREATE TABLE RATING(
  7. MNO CHAR(10) PRIMARY KEY,
  8. MSCORE FLOAT(10),
  9. );
  10. CREATE TABLE TAG(
  11. MNO CHAR(10) PRIMARY KEY,
  12. MTAG CHAR(20),
  13. );
  14. INSERT INTO TITLE(MNO,MNAME)
  15. VALUES
  16. (1,'肖申克的救赎'),
  17. (2,'霸王别姬'),
  18. (3,'这个杀手不太冷'),
  19. (4,'阿甘正传'),
  20. (5,'美丽人生'),
  21. (6,'千与千寻'),
  22. (7,'泰坦尼克号'),
  23. (8,'辛德勒的名单'),
  24. (9,'盗梦空间'),
  25. (10,'机器人总动员');
  26. SELECT * FROM TITLE
  27. INSERT INTO RATING(MNO,MSCORE)
  28. VALUES
  29. (1,9.6),
  30. (2,9.5),
  31. (3,9.4),
  32. (4,9.4),
  33. (5,9.5),
  34. (6,9.3),
  35. (7,9.3),
  36. (8,9.4),
  37. (9,9.3),
  38. (10,9.3);
  39. INSERT INTO TAG(MNO,MTAG)
  40. VALUES
  41. (1,'犯罪'),
  42. (2,'同性'),
  43. (3,'犯罪'),
  44. (4,'剧情'),
  45. (5,'剧情'),
  46. (6,'动画'),
  47. (7,'灾难'),
  48. (8,'剧情'),
  49. (9,'科幻'),
  50. (10,'动画');
  51. --选择评分大于等于9.4的电影
  52. SELECT TITLE.MNAME,RATING.MSCORE
  53. FROM TITLE,RATING
  54. WHERE TITLE.MNO=RATING.MNO AND MSCORE>=9.4;
  55. --选择分类为'剧情'的电影
  56. SELECT TITLE.MNAME,TAG.MTAG
  57. FROM TITLE,TAG
  58. WHERE TITLE.MNO=TAG.MNO AND MTAG='剧情';
  59. --更新第十部电影的分类为'科幻',评分为9.1
  60. UPDATE TAG
  61. SET MTAG='科幻'
  62. WHERE MNO=10;
  63. UPDATE RATING
  64. SET MSCORE=9.1
  65. WHERE MNO=10;
  66. --选择排名第10的电影
  67. SELECT MNAME,MTAG,MSCORE
  68. FROM TITLE,TAG,RATING
  69. WHERE TITLE.MNO=10 AND TAG.MNO=10 AND RATING.MNO=10;
  70. --自然连接
  71. SELECT TITLE.MNO,TITLE.MNAME,RATING.MSCORE,TAG.MTAG
  72. FROM TITLE,RATING,TAG
  73. WHERE TITLE.MNO=RATING.MNO AND RATING.MNO=TAG.MNO;
  74. --删除排名第十的电影
  75. DELETE
  76. FROM TITLE
  77. WHERE TITLE.MNO=10;
  78. DELETE
  79. FROM RATING
  80. WHERE RATING.MNO=10;
  81. DELETE
  82. FROM TAG
  83. WHERE TAG.MNO=10;
  84. SELECT TITLE.MNO,TITLE.MNAME,RATING.MSCORE,TAG.MTAG
  85. FROM TITLE,RATING,TAG
  86. WHERE TITLE.MNO=RATING.MNO AND RATING.MNO=TAG.MNO;

版权声明:本文为博主原创文章,未经博主允许不得转载。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/173156
推荐阅读
相关标签
  

闽ICP备14008679号