SQL/建立数据库/主键&外键

SET FOREIGN_KEY_CHECKS=0;#取消外键约束,Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构。

DROP TABLE IF EXISTS `custinfo`;
CREATE TABLE `custinfo` (
  `custID` varchar(19) NOT NULL COMMENT ‘客户号‘,
  `name` varchar(10) NOT NULL COMMENT ‘姓名‘,
  `sex` varchar(10) NOT NULL COMMENT ‘性别‘,
  `phone` varchar(20) NOT NULL COMMENT ‘手机号‘,
  `ID` varchar(19) DEFAULT NULL COMMENT ‘身份证号‘,
  `districtID` varchar(19) DEFAULT NULL COMMENT ‘区ID‘,
  `age` varchar(6) NOT NULL COMMENT ‘年龄‘,
  PRIMARY KEY (`custID`),
   KEY `FK_districtID_1` (`districtID`),
  CONSTRAINT `FK_districtID_1` FOREIGN KEY (`districtID`) REFERENCES `area_dim` (`districtID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘客户信息表‘;

-- ----------------------------
-- Records of custinfo
-- ----------------------------
BEGIN;
INSERT INTO `custinfo` VALUES (‘1‘, ‘闫一一‘, ‘男‘, ‘13645667783‘, ‘567891321242345618‘, ‘10101‘, ‘18‘);
INSERT INTO `custinfo` VALUES (‘2‘, ‘朱三枪‘, ‘男‘, ‘13645667890‘, ‘567891984242345618‘, ‘20101‘, ‘28‘);
INSERT INTO `custinfo` VALUES (‘3‘, ‘姜为民‘, ‘男‘, ‘13642345799‘, ‘567891322489345618‘, ‘20101‘, ‘18‘);
INSERT INTO `custinfo` VALUES (‘4‘, ‘刘德华‘, ‘男‘, ‘13612345690‘, ‘567891989909345618‘, ‘30201‘, ‘28‘);
INSERT INTO `custinfo` VALUES (‘5‘, ‘张三三‘, ‘女‘, ‘13643455799‘, ‘567891322489349898‘, ‘30201‘, ‘18‘);
INSERT INTO `custinfo` VALUES (‘6‘, ‘刘思思‘, ‘男‘, ‘13643215690‘, ‘567891989909349007‘, ‘30201‘, ‘28‘);
COMMIT;

-- ----------------------------
-- Table structure for `cardinfo`
-- ----------------------------
DROP TABLE IF EXISTS `cardinfo`;
CREATE TABLE `cardinfo` (
  `acct_no` varchar(19) NOT NULL COMMENT ‘账户‘,
  `balance` varchar(19) NOT NULL COMMENT ‘账号余额‘,
  `acct_status` varchar(19) NOT NULL COMMENT ‘账号状态‘,
  `openDate` varchar(19) NOT NULL COMMENT ‘开卡时间‘,
  `openmoney` varchar(19) NOT NULL COMMENT ‘开卡金额‘,
  `custID` varchar(19) NOT NULL COMMENT ‘客户号‘,
  `districtID` varchar(19) NOT NULL COMMENT ‘开户所在区ID‘,
  PRIMARY KEY (`acct_no`),
  KEY `FK_districtID` (`districtID`),
  KEY `FK_custID` (`custID`),
  CONSTRAINT `FK_districtID` FOREIGN KEY (`districtID`) REFERENCES `area_dim` (`districtID`),
  CONSTRAINT `FK_custID` FOREIGN KEY (`custID`) REFERENCES `custinfo` (`custID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘银行卡信息表‘;

-- ----------------------------
-- Records of cardinfo
-- ----------------------------
BEGIN;
INSERT INTO `cardinfo` VALUES (‘1010357612121001‘, ‘888888‘, ‘1‘, ‘2019-07-19 08:49:37‘, ‘1.00‘, ‘1‘, ‘10101‘);
INSERT INTO `cardinfo` VALUES (‘1010357612121002‘, ‘888888‘, ‘1‘, ‘2019-07-18 08:49:37‘, ‘2.00‘, ‘2‘, ‘20101‘);
INSERT INTO `cardinfo` VALUES (‘1010357612121003‘, ‘888888‘, ‘0‘, ‘2019-07-19 08:49:37‘, ‘3.00‘, ‘3‘, ‘20101‘);
INSERT INTO `cardinfo` VALUES (‘1010357612121004‘, ‘888888‘, ‘1‘, ‘2019-07-19 08:49:37‘, ‘1.00‘, ‘1‘, ‘10101‘);
INSERT INTO `cardinfo` VALUES (‘1010357612121005‘, ‘888888‘, ‘1‘, ‘2019-07-18 08:49:37‘, ‘2.00‘, ‘2‘, ‘20101‘);
COMMIT;

DROP TABLE IF EXISTS `area_dim`;
CREATE TABLE `area_dim` (
  `districtID` varchar(19) NOT NULL COMMENT ‘区域ID‘,
  `area_name` varchar(19) NOT NULL COMMENT ‘区域名‘,
  `city_id` varchar(19) NOT NULL COMMENT ‘城市ID‘,
  `city_name` varchar(19) NOT NULL COMMENT ‘城市名‘,
  `province_id` varchar(19) DEFAULT NULL COMMENT ‘省ID‘,
  `province_name` varchar(19) DEFAULT NULL COMMENT ‘省名‘,
  PRIMARY KEY (`districtID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘区域码值表‘;

-- ----------------------------
-- Records of area_dim
-- ----------------------------
BEGIN;
INSERT INTO `area_dim` VALUES (‘10101‘, ‘二七区‘, ‘101‘, ‘郑州市‘, ‘1‘, ‘河南省‘);
INSERT INTO `area_dim` VALUES (‘20101‘, ‘高新区‘, ‘201‘, ‘青岛市‘, ‘2‘, ‘山东省‘);
INSERT INTO `area_dim` VALUES (‘30201‘, ‘新区‘, ‘301‘, ‘石家庄市‘, ‘3‘, ‘河北省‘);
COMMIT;
SET FOREIGN_KEY_CHECKS = 1; #设置外检约束
注:将同一个字段设置成2个表的外键时,2次的外键名应不同。

原文地址:https://www.cnblogs.com/Python-sql007/p/11241495.html

时间: 2024-11-06 11:37:15

SQL/建立数据库/主键&外键的相关文章

SQL Server数据库学习笔记-外键

关于主键的话大家很好理解,主键的主要作用就是用来标识一条数据是唯一的,也就是保证数据的实体完整性.防止数据重复.但是外键的话就有许多的疑问了,那外键是咋回事儿呢? 1. 外键的定义: 外键(FK)是用于建立和加强两个表数据之间连接的一列或多列.通过将保存表中主键值的一列或多列中的值添加到另一个表中,可创建两个表之间的连接.这个列就成为第二个表的外键.它表示了两个表之间的关系. 2. 为什么要使用外键? 为了保证数据的参照完整性.补充:参照的完整性要求关系中不允许引用不存在的实体.与实体完整性是关

SQL主键&外键

SQL的主键和外键约束 SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学

数据库主从表、关系;主、外键关系和作用

从数据库是主数据库的备份,当主数据库变化时从数据库要更新,这些数据库软件可以设计更新周期.这是提高信息安全的手段.主从数据库服务器不在一个地理位置上,当发生意外时数据库可以保存.主外键的关系结构:1,一对一,不用引用主外键,把它们放一个表中即可例如:一个学生只能有一个卡号,那么学生跟卡号放在一个表中即可2,一对多,引用主外键,'一'相当于主键,'多'即是引用主键的外键.例如:一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系:3,多对多关系,需要创建一个表,表中需要两个字段

通过 jdbc 分析数据库中的表结构和主键外键

文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hibernate 是 ORM 框架,他是有能力根据实体生成数据库表的.我们在单元测试的时候用到了 dbUnit ,dbUnit 可以帮助我们在测试前把数据库的测试数据准备好,然后我们就利用现成的数据库环境测试,测试完成后需将数据库中的所有数据清除(为了不影响其他的单元测试),然后接着下一个测试.虽然已经

数据库系统基础笔记(3)--主键/外键 索引

本文转载自:http://www.cnblogs.com/longyi1234/archive/2010/03/24/1693738.html 作者:蔚蓝色的天空 一.什么是主键.外键 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 :  学生表 (学号,姓名,性别,班级)  其中每个学生的学号是唯一的,学号就是一个主键  课程表(课程编号,课程名,学分)  其中课程编号是唯一的,课程编号就是一个主键  成绩表(学号,课

MySQL主键 外键 索引

一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 用户表(用户名.密码.登录级别) 其中用户名是唯一的, 用户名就是一个主键 上机记录表(卡号,学号,姓名.序列号) 上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的

主键外键

主键 外键 唯一键 CHECK约束 主键:是唯一的,不可重复的,它能提高查询效率,但是会减慢新增数据效率 外键:主键是本张表的主键,是唯一且非空的,而外键是另一张表中与这张表的某个字段的类型,字段名相同的字段,一般是用作关联两张或两张以上的数据表时用的. 外间的取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除.(4)更新主键记录时,同样有

数据库中创建表(包括创建主键,外键,非空列,唯一)

创建表(包括创建主键,外键,非空列,唯一) - PROS - 博客园 http://www.cnblogs.com/CodingArt/articles/1621921.html **************** 创建主键(三种方法) **************** 创建学生表: 第一种: create table student (sno char(5) primary key,/*学号*/ /*可以直接指定主键*/ sname char(20) not null,/*姓名*/ ssex c

MySQL 主键外键

笛卡儿积 多表查询 ,多个表变成一个表 完整性约束条件primary key    标识该属性为该表的主键,可以唯一的标识对应的元组foreign key    标识该属性为该表的外键,是与之联系的某表的主键not null       标识该属性不能为空unique         标识该属性的值是唯一的auto_increment 标识该属性的值自动增加default        为该属性设置默认值设置从表 外键constraint 外键别名 foreign key(属性1.1, 属性1.