mysql数据库表的主键,替代键,联合键,外键 您所在的位置:网站首页 主键和外键可以相同吗 mysql数据库表的主键,替代键,联合键,外键

mysql数据库表的主键,替代键,联合键,外键

2024-04-11 13:07| 来源: 网络整理| 查看: 265

1.主键 主关键字(主键,primary key)是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键(联合主键)。 ** 1) 一个表中只能有一个主键。**如果在其他字段上建立主键,则原来的主键就会取消。在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键。 2)主键的值不可重复,也不可为空(NULL)。 3)主键值不能被重复 主键用PRIMARY KEY()表示

例如: CREATE TABLE IF NOT EXISTS tem1 (姓名 VARCHAR(10), 年龄 INT(2), 生日 DATE, PRIMARY KEY(姓名) //将姓名设置为主键,姓名的值不能重复,且不能为空,就像身份证一样作为识别他的依据,一个表中只有一个主键,具有唯一性 )ENGINE = INNODB;

当有两个名字的值是一模一样的时候就报错 2.联合主键 联合主键就是用2个或2个以上的字段组成主键。 联合主键用PRIMARY KEY(字段1,字段2)表示

接着上面代码所示,列如: CREATE TABLE IF NOT EXISTS tem1 (姓名 VARCHAR(10), 年龄 INT(2), 生日 DATE, PRIMARY KEY(姓名,年龄) //将姓名和年龄设置为联合主键,具有唯一性,只有姓名和年龄都i一样的时候才报错 )ENGINE = INNODB; 向表中插入信息李四 20 03.06和李四 18 01.16 李四 20和李四18或张三 20 和张李四 20都不会报错 只有当两个属性都一样的时候才报错如李四 20和李四20

3.替代键 替代键用UNIQUE代表

例如 CREATE TABLE IF NOT EXISTS tem1 (姓名 VARCHAR(10), 年龄 INT(2), 生日 DATE, UNIQUE(姓名) //将姓名设置为替代键,和主键一样。不能出现重复的值具有唯一性,但是和主键不一样的是,一个表中可以设置多个替代键,而且他的值可以为空 )ENGINE = INNODB;

4.非空约束:该字段不允许有空值(必填) 用NOT NULL

CREATE TABLE IF NOT EXISTS tem1 (姓名 VARCHAR(10) NOT NULL, //设置姓名必须填 年龄 INT(2), 生日 DATE, )ENGINE = INNODB;

5.check(),控制数据在某一范围内

```sql CREATE TABLE IF NOT EXISTS tem1 (姓名 VARCHAR(10), 性别 char, 年龄 INT(2), 生日 DATE, CHECK(性别 IN('男','女')) //设置性别只有男女范围内 )ENGINE = INNODB;

4.联合替代键 联合替代键用UNIQUE(字段1,字段2) 道理和联合主键一样,只是一个表里可以有多个联合替代键 5.外键 外键其实就是将两个表连接起来的键。 列如现在有一张表

CREATE TABLE IF NOT EXISTS tem1 (姓名 VARCHAR(10), 性别 char, 年龄 INT(2), 生日 DATE )ENGINE = INNODB;

每一个对象都有其姓名年龄和生日,现在还想加入他们的成绩和班级,而这些信息在另一张表中怎么办?

CREATE TABLE IF NOT EXISTS tem2 (姓名 VARCHAR(10), 成绩 INT(10), 班级 TEXT )ENGINE = INNODB;

主键与替代键的区别不大,但是那个区别的作用很大,一个表中只能有一个主键,而被设为主键的那个元素就是区别他们的依据,他们不可以重复就像身份证一样,但是他是可以更改的,只是不能重复。 而替代键在一个表中可以设置多个元素是替代键。 而要想把两张表链接,就是依靠那个唯一不重复的主键,所以要想把两表链接 1.先有主键才有外键 2.把要来判断唯一性的那个设置为主键和外键 分为主表和从表,被依赖的那个为主表,另一个为从表,主表设置为主键,从表为外键

CREATE TABLE IF NOT EXISTS tem1 (姓名 VARCHAR(10), 性别 char, 年龄 INT(2), 生日 DATE, PRIMARY KEY(姓名)//将需要判断唯一性的值设置主键 )ENGINE = INNODB; CREATE TABLE IF NOT EXISTS tem2 (姓名 VARCHAR(10), 成绩 INT(10), 班级 TEXT, FOREIGN KEY(姓名) REFERENCES tem1(姓名)//把可以与主表相对应的元素设置外键 )ENGINE = INNODB;

相当于

CREATE TABLE IF NOT EXISTS tem1 (姓名 VARCHAR(10), 性别 char, 年龄 INT(2), 生日 DATE, 成绩 INT(10), 班级 TEXT )ENGINE = INNODB;


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有