创建数据库:CREATE DATABASE 数据库名

  1. -- 创建数据库library,使用字符集utf8,使用字符排序规则utf8_general_ci
  2. CREATE DATABASE `library` CHARACTER set utf8 COLLATE utf8_general_ci;

创建表:CREATE DATABASE 表名();
MySQL不支持列级创建外键约束,因此只能使用CONSTRAINT来创建表级外键约束,也只能使用CONSTRAINT来创建表的联合主键约束。

  1. -- 图书目录表
  2. CREATE TABLE `Books` (
  3. `bookNo` CHAR ( 9 ) COMMENT '书号(主键)' 列级主键约束:PRIMARY KEY 】,
  4. `ISBN` CHAR ( 13 ) not null COMMENT '每种书唯一编号(外键)',
  5. `location` VARCHAR ( 40 ) not null COMMENT '图书存放位置',
  6. `bstatus` CHAR ( 1 ) not null COMMENT '注释',
  7. `ctr_no` TINYINT not null COMMENT '注释',
  8. CONSTRAINT PK_bookNo PRIMARY KEY ( `bookNo` ),
  9. CONSTRAINT FK_ISBN FOREIGN KEY ( `ISBN` ) REFERENCES `BookInfo` ( `ISBN` ),
  10. CONSTRAINT CK_bstatus CHECK ( `bstatus` = 0 OR 1 OR 2 OR 3 )
  11. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  1. -- 佑溪村数据库
  2. DROP DATABASE if EXISTS `yxc`;
  3. CREATE DATABASE IF NOT EXISTS `yxc` CHARACTER set utf8 COLLATE utf8_general_ci;
  4. -- 使用佑溪村数据库
  5. use yxc;
  6. -- 1.角色表
  7. DROP TABLE if EXISTS `villager_role`;
  8. CREATE TABLE IF NOT EXISTS `villager_role`(
  9. `R_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识角色的编码',
  10. `role_name` VARCHAR(20) not null UNIQUE COMMENT '角色名',
  11. `role_duty` VARCHAR(255) NULL COMMENT '相关职责',
  12. `gmt_create` datetime null COMMENT '元组创建时间',
  13. `gmt_modified` datetime null COMMENT '元组修改时间'
  14. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  15. -- 2.残疾级别表
  16. DROP TABLE if EXISTS `disability_level`;
  17. CREATE TABLE IF NOT EXISTS `disability_level`(
  18. `DL_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识残疾级别的编码',
  19. `level` VARCHAR(20) not null UNIQUE COMMENT '残疾级别',
  20. `gmt_create` datetime null COMMENT '元组创建时间',
  21. `gmt_modified` datetime null COMMENT '元组修改时间'
  22. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  23. -- 3.户主关系类型表
  24. DROP TABLE if EXISTS `family_relation`;
  25. CREATE TABLE IF NOT EXISTS `family_relation`(
  26. `FR_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识户主关系类型的编码',
  27. `relation_type` VARCHAR(5) not null UNIQUE COMMENT '村民与户主的血缘关系',
  28. `gmt_create` datetime null COMMENT '元组创建时间',
  29. `gmt_modified` datetime null COMMENT '元组修改时间'
  30. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  31. -- 4.家庭贫困类型表
  32. DROP TABLE if EXISTS `family_pool`;
  33. CREATE TABLE IF NOT EXISTS `family_pool`(
  34. `FP_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识户主关系类型的编码',
  35. `relation_type` VARCHAR(5) not null UNIQUE COMMENT '村民与户主的血缘关系',
  36. `gmt_create` datetime null COMMENT '元组创建时间',
  37. `gmt_modified` datetime null COMMENT '元组修改时间'
  38. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  39. -- 5.土地类型表
  40. DROP TABLE if EXISTS `land`;
  41. CREATE TABLE IF NOT EXISTS `land`(
  42. `L_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识土地类型的编码',
  43. `land_type` VARCHAR(10) not null UNIQUE COMMENT '土地类型',
  44. `gmt_create` datetime null COMMENT '元组创建时间',
  45. `gmt_modified` datetime null COMMENT '元组修改时间'
  46. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  47. -- 6.种植类型表
  48. DROP TABLE if EXISTS `plant`;
  49. CREATE TABLE IF NOT EXISTS `plant`(
  50. `P_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识种植农作物类型的编码',
  51. `plant_type` VARCHAR(10) not null UNIQUE COMMENT '农作物名',
  52. `gmt_create` datetime null COMMENT '元组创建时间',
  53. `gmt_modified` datetime null COMMENT '元组修改时间'
  54. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  55. -- 7.养殖类型表
  56. DROP TABLE if EXISTS `breed`;
  57. CREATE TABLE IF NOT EXISTS `breed`(
  58. `B_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识养殖动物类型的编码',
  59. `breed_type` VARCHAR(10) not null UNIQUE COMMENT '养殖动物名',
  60. `gmt_create` datetime null COMMENT '元组创建时间',
  61. `gmt_modified` datetime null COMMENT '元组修改时间'
  62. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  63. -- 8.民问卷调查表(匿名调查)
  64. DROP TABLE if EXISTS `villager_survey`;
  65. CREATE TABLE IF NOT EXISTS `villager_survey`(
  66. `VS_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 问卷调查流水号',
  67. `survey_time` date not null COMMENT '调查时间',
  68. `family_relation` VARCHAR(255) null COMMENT '家庭成员关系和睦情况',
  69. `neighbor_relation` VARCHAR(255) null COMMENT '邻居关系和睦情况',
  70. `evaluateion` VARCHAR(255) null COMMENT '对村委干部的评价',
  71. `difficulty` VARCHAR(255) null COMMENT '有何困难',
  72. `suggestion` VARCHAR(255) null COMMENT '有何建议',
  73. `life_happiness` VARCHAR(255) null COMMENT '对于目前生活是否幸福的看法与原因',
  74. `assistance_measures` VARCHAR(255) null COMMENT '目前享有的主要帮扶措施是什么',
  75. `gmt_create` datetime null COMMENT '元组创建时间',
  76. `gmt_modified` datetime null COMMENT '元组修改时间'
  77. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  78. -- 9.村组信息表
  79. DROP TABLE if EXISTS `village_group`;
  80. CREATE TABLE IF NOT EXISTS `village_group`(
  81. `VG_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识村组类型的编码',
  82. `family_amount` int(3) not null COMMENT '一个村组包含的家庭个数',
  83. `gmt_create` datetime null COMMENT '元组创建时间',
  84. `gmt_modified` datetime null COMMENT '元组修改时间'
  85. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  86. -- 10.家庭户籍表
  87. DROP TABLE if EXISTS `family`;
  88. CREATE TABLE IF NOT EXISTS `family`(
  89. `V_ID` int(15) not null PRIMARY KEY COMMENT '主键: 户主(村民)ID ',
  90. `family_number` VARCHAR(10) not null UNIQUE COMMENT '房屋门牌号',
  91. `people_amount` int(2) not null COMMENT '家庭人口数',
  92. `family_highway` int(1) null DEFAULT 0 COMMENT '入户公路状况: 0表示未入户: 公路未修到家门口,1表示已入户: 公路已修到家门口',
  93. `gmt_create` datetime null COMMENT '元组创建时间',
  94. `gmt_modified` datetime null COMMENT '元组修改时间'
  95. )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  96. -- 11.村民表
  97. DROP TABLE if EXISTS `villager`;
  98. CREATE TABLE IF NOT EXISTS `villager`(
  99. `V_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识村民的编码',
  100. `villager_name` VARCHAR(20) not null COMMENT '姓名',
  101. `villager_sex` int(1) NULL DEFAULT 1 COMMENT '性别: 0表示女,1表示男',
  102. `villager_age` int(3) NULL COMMENT '年龄',
  103. `villager_birthday` date NOT NULL COMMENT '出生年月日',
  104. `villager_phone` char(11) NULL UNIQUE COMMENT '联系电话:固定11位',
  105. `villager_number` char(18) NULL UNIQUE COMMENT '身份证号:固定18位',
  106. `villager_nation` VARCHAR(10) NULL DEFAULT '汉族' COMMENT '民族',
  107. `political_outlook` VARCHAR(10) NULL DEFAULT '群众' COMMENT '政治面貌',
  108. `villager_marriage` int(1) NULL DEFAULT 0 COMMENT '婚姻状况: 0表示未婚,1表示已婚,2表示离异' ,
  109. `villager_health` VARCHAR(255) NULL COMMENT '身体状况',
  110. `is_student` int(1) NULL DEFAULT 1 COMMENT '是否学生: 0表示否,1表示是',
  111. `is_disability_certificate` int(1) NULL DEFAULT 0 COMMENT '是否办理残疾证: 0代表未办理,1代表已办理',
  112. `gmt_create` datetime null COMMENT '元组创建时间',
  113. `gmt_modified` datetime null COMMENT '元组修改时间'
  114. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  115. -- 12.村民工作信息表
  116. DROP TABLE if EXISTS `job_info`;
  117. CREATE TABLE IF NOT EXISTS `job_info`(
  118. `JI_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识工作信息的编码',
  119. `job_unit` VARCHAR(20) not null COMMENT'工作单位',
  120. `job_income` int(10) not null COMMENT'月工资',
  121. `job_item` VARCHAR(20) null COMMENT'近期工作内容',
  122. `job_province` VARCHAR(10) null COMMENT'省份',
  123. `job_city` VARCHAR(10) null COMMENT'城市',
  124. `job_county` VARCHAR(10) null COMMENT'县',
  125. `job_address` VARCHAR(20) null COMMENT'详细地址',
  126. `gmt_create` datetime null COMMENT '元组创建时间',
  127. `gmt_modified` datetime null COMMENT '元组修改时间'
  128. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  129. -- 13.村民患病信息表
  130. DROP TABLE if EXISTS `illness_info`;
  131. CREATE TABLE IF NOT EXISTS `illness_info`(
  132. `II_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识患病信息的编码',
  133. `illness_name` VARCHAR(20) not null COMMENT'所患何病',
  134. `illness_time` datetime null COMMENT'患病时间',
  135. `is_chronic_disease` int(1) null DEFAULT 0 COMMENT'是否属于慢性病: 0表示否,1表示是',
  136. `gmt_create` datetime null COMMENT '元组创建时间',
  137. `gmt_modified` datetime null COMMENT '元组修改时间'
  138. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  139. -- 14.残疾补贴表
  140. DROP TABLE if EXISTS `disability_payments`;
  141. CREATE TABLE IF NOT EXISTS `disability_payments`(
  142. `DP_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识残疾补贴的编码',
  143. `dp_time` datetime not null COMMENT'领取时间',
  144. `dp_money` int(10) not null COMMENT'补贴金额',
  145. `gmt_create` datetime null COMMENT '元组创建时间',
  146. `gmt_modified` datetime null COMMENT '元组修改时间'
  147. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  148. -- 15.养老补贴表
  149. DROP TABLE if EXISTS `pension_subsidy`;
  150. CREATE TABLE IF NOT EXISTS `pension_subsidy`(
  151. `PS_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识养老补贴的编码',
  152. `ps_time` datetime not null COMMENT'领取时间',
  153. `ps_money` int(10) not null COMMENT'养老补贴金额: age>=60方可领取',
  154. `advanced_age_money` int(10) null COMMENT'养老补贴金额: age>=80方可领取',
  155. `gmt_create` datetime null COMMENT '元组创建时间',
  156. `gmt_modified` datetime null COMMENT '元组修改时间'
  157. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  158. -- 16.村民保障表
  159. DROP TABLE if EXISTS `villager_ensure`;
  160. CREATE TABLE IF NOT EXISTS `villager_ensure`(
  161. `V_ID` int(15) not null PRIMARY KEY COMMENT '主键(外键): 村民id,标识一行记录属于哪一个村民',
  162. `enjoy_mm` int(1) not null DEFAULT 0 COMMENT '是否享受慢门政策: 0表示否,1表示是',
  163. `manage_mm` int(1) not null DEFAULT 0 COMMENT '是否办理慢门政策: 0表示否,1表示是',
  164. `manage_medical` int(1) not null DEFAULT 0 COMMENT '是否办理医疗保险: 0表示否,1表示是',
  165. `manage_pension` int(1) not null DEFAULT 0 COMMENT '是否办理养老保险: 0表示否,1表示是',
  166. `gmt_create` datetime null COMMENT '元组创建时间',
  167. `gmt_modified` datetime null COMMENT '元组修改时间'
  168. )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  169. -- 17.土地所属详情表
  170. DROP TABLE if EXISTS `family_land`;
  171. CREATE TABLE IF NOT EXISTS `family_land`(
  172. `V_ID` int(15) not null COMMENT '主键(外键): 户主(村民)ID ',
  173. `L_ID` int(15) not null COMMENT '主键(外键): 标识土地类型',
  174. `land_area` double null COMMENT '土地面积',
  175. `gmt_create` datetime null COMMENT '元组创建时间',
  176. `gmt_modified` datetime null COMMENT '元组修改时间'
  177. )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  178. -- 18.种植类型详情表
  179. DROP TABLE if EXISTS `family_plant`;
  180. CREATE TABLE IF NOT EXISTS `family_plant`(
  181. `V_ID` int(15) not null COMMENT '主键(外键): 户主(村民)ID ',
  182. `P_ID` int(15) not null COMMENT '主键(外键):标识种植的农作物类型',
  183. `plant_amount` int(10) null COMMENT '种植数量',
  184. `gmt_create` datetime null COMMENT '元组创建时间',
  185. `gmt_modified` datetime null COMMENT '元组修改时间'
  186. )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  187. -- 19.养殖类型详情表
  188. DROP TABLE if EXISTS `family_breed`;
  189. CREATE TABLE IF NOT EXISTS `family_breed`(
  190. `V_ID` int(15) not null COMMENT '主键(外键): 户主(村民)ID ',
  191. `B_ID` int(15) not null COMMENT '主键(外键): 标识养殖的动物类型',
  192. `breed_amount` int(10) null COMMENT '养殖数量',
  193. `gmt_create` datetime null COMMENT '元组创建时间',
  194. `gmt_modified` datetime null COMMENT '元组修改时间'
  195. )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  196. -- 20.家庭年收支表
  197. DROP TABLE if EXISTS `income_expenditure`;
  198. CREATE TABLE IF NOT EXISTS `income_expenditure`(
  199. `IE_ID` int(15) not null PRIMARY KEY AUTO_INCREMENT COMMENT '主键: 唯一标识家庭年收支的编码',
  200. `survey_time` date not null COMMENT '调查时间',
  201. `genera_income` int(10) not null COMMENT '年总收入',
  202. `genera_expenditure` int(10) not null COMMENT '年总支出',
  203. `percapita_income` int(10) null COMMENT '人均年净收入: (年总收入-年总支出)/家庭人口数',
  204. `production_expenditure` int(10) null COMMENT '年生产支出',
  205. `medical_expenditure` int(10) null COMMENT '年医疗支出',
  206. `gmt_create` datetime null COMMENT '元组创建时间',
  207. `gmt_modified` datetime null COMMENT '元组修改时间'
  208. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  209. -- 21.家庭保障表
  210. DROP TABLE if EXISTS `family_ensure`;
  211. CREATE TABLE IF NOT EXISTS `family_ensure`(
  212. `V_ID` int(15) not null PRIMARY KEY COMMENT '主键(外键): 户主(村民)ID,标识一行记录属于哪一户家庭',
  213. `house_ensure` int(1) not null default 1 COMMENT '安全住房是否保障: 0表示否,1表示是',
  214. `house_qusetion` VARCHAR(255) null COMMENT '安全住房存在的问题',
  215. `water_ensure` int(1) not null default 1 COMMENT '安全饮水是否保障: 0表示否,1表示是',
  216. `water_qusetion` VARCHAR(255) null COMMENT '安全饮水存在的问题',
  217. `education_ensure` int(1) not null default 1 COMMENT '基础教育是否保障: 0表示否,1表示是',
  218. `education_qusetion` VARCHAR(255) null COMMENT '基础教育存在的问题',
  219. `student_amount` int(2) not null COMMENT '家庭学生个数',
  220. `gmt_create` datetime null COMMENT '元组创建时间',
  221. `gmt_modified` datetime null COMMENT '元组修改时间'
  222. )ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建约束时发现的问题:Can’t write; duplicate key in table ‘job_info’

结论:

(1)同一个表中,约束名不能相同。

(2)不同的表中约束名也不能相同(不管外键名相不相同)。