网站建设详细合同范本,企业如何应用网站的,服装网站建设价格,网站开发是文章目录 一. 主键二. 自增长三. 唯一值四. 外键结束语 一. 主键 主键primary key 用来唯一的约束该字段里面的数据#xff0c;不能重复#xff0c;不能为空#xff0c;一张表最多只能有一个主键#xff0c;主键所在的列通常是整数类型 创建表时直接在字段上指定主键
mysq… 文章目录 一. 主键二. 自增长三. 唯一值四. 外键结束语 一. 主键 主键primary key 用来唯一的约束该字段里面的数据不能重复不能为空一张表最多只能有一个主键主键所在的列通常是整数类型 创建表时直接在字段上指定主键
mysql create table student(- id int primary key comment 学生id唯一且非空,- name varchar(6)- );mysql desc student;
----------------------------------------------
| Field | Type | Null | Key | Default | Extra |
----------------------------------------------
| id | int(11) | NO | PRI | NULL | | key中显示PRI
| name | varchar(6) | YES | | NULL | |
----------------------------------------------主键约束非空且唯一
mysql insert into student values (1,张三);
Query OK, 1 row affected (0.00 sec)mysql insert into student values (1,李四);
ERROR 1062 (23000): Duplicate entry 1 for key PRIMARY可以在建表后追加主键 alter table 表名 add primary key(属性名); 删除主键 alter table 表名 drop primary key; 复合主键 虽然一张表只能有一个主键但是一个主键可以是多个属性
mysql create table student(- id int,- name varchar(6),- primary key(id,name) //id和name的复合主键- );mysql desc student;
----------------------------------------------
| Field | Type | Null | Key | Default | Extra |
----------------------------------------------
| id | int(11) | NO | PRI | NULL | |
| name | varchar(6) | NO | PRI | NULL | |
----------------------------------------------如此id和name都不允许为空且不能重复两个都相同才算重复
二. 自增长 auto_increment当对应的字段不显示赋值时系统会赋值为当前字段中已经有的最大值1。通常和主键搭配使用 自增长的特点
任何一个字段是自增长前提是本身是一个索引key一栏有值自增长字段必须是整数一张表最多只能有一个自增长
mysql create table student(- id int unsigned primary key auto_increment,- name varchar(6)- );mysql show create table student \G;
*************************** 1. row ***************************Table: student
Create Table: CREATE TABLE student (id int(10) unsigned NOT NULL AUTO_INCREMENT,name varchar(6) DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB DEFAULT CHARSETutf8mysql insert into student (name) values (张三);
mysql insert into student (name) values (李四);
mysql insert into student (name) values (王五);mysql select * from student;
------------
| id | name |
------------
| 1 | 张三 |
| 2 | 李四 |
| 3 | 王五 |
------------mysql show create table student \G;
*************************** 1. row ***************************Table: student
Create Table: CREATE TABLE student (id int(10) unsigned NOT NULL AUTO_INCREMENT,name varchar(6) DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT4 DEFAULT CHARSETutf8创建表时如果没有指定自增长的起始值默认为1 每次插入数据后MySQL会保存当前自增长属性的最大值1供下次插入使用
如果此时插入一个id500的那么MySQL保存的就是501
mysql insert into student (id,name) values (500,赵六);mysql show create table student \G;
*************************** 1. row ***************************Table: student
Create Table: CREATE TABLE student (id int(10) unsigned NOT NULL AUTO_INCREMENT,name varchar(6) DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT501 DEFAULT CHARSETutf8建表时还可以指定auto_increment的起始值
mysql create table student(- id int unsigned primary key auto_increment,- name varchar(6)- )auto_increment500; //指定自增长的起始值三. 唯一值
一张表往往有很多字段需要唯一性数据不能重复但是一张表只能有一个主键唯一键就可以解决表中多个字段需要唯一性约束的问题
唯一键和主键本质差不多唯一键允许为空而且可以多个为空空字段不作唯一性比较
应用场景 员工号和身份证。员工号作主键不允许为空且唯一但身份证同样不允许重复但又不能和员工号组成复合主键所以可以使用唯一键 mysql create table worker(- id int unsigned primary key auto_increment comment 员工工号,- telephone int unique comment 员工电话号,- name varchar(6) comment 员工姓名- );mysql insert into worker (telephone,name) values (123456,张三);
mysql insert into worker (telephone,name) values (123456,李四);
ERROR 1062 (23000): Duplicate entry 123456 for key telephonemysql insert into worker (telephone,name) values (NULL,李四);
mysql insert into worker (telephone,name) values (NULL,王五);mysql select * from worker;
-----------------------
| id | telephone | name |
-----------------------
| 1 | 123456 | 张三 |
| 3 | NULL | 李四 |
| 4 | NULL | 王五 |
-----------------------四. 外键
外键用于定义主表和从表之间的关系外键约束主要定义在从表上主表则必须有主键约束或唯一键约束。当定义外键后要求外键列数据必须在主表中存在或为NULL foreign key字段名 references 主表字段名 案例
如此课程表为主表学生表为从表
mysql create table course(- id int unsigned primary key,- name varchar(6)- );
mysql create table student( -id int unsigned primary key,-name varchar(6),-class_id int unsigned,-foreign key (class_id) references coursse(id)-);注意点
不允许在从表的外键中插入不存在于主表的数据主表对应外键在从表中有数据时不允许删除该外键
mysql insert into course values (001,高数课);
Query OK, 1 row affected (0.00 sec)mysql insert into student values (100,张三,001);
Query OK, 1 row affected (0.00 sec)//不允许在从表的外键中插入不存在于主表的数据
mysql insert into student values (200,李四,002);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint
fails (test_demo.student, CONSTRAINT student_ibfk_1 FOREIGN KEY (class_id)
REFERENCES course (id))
//主表对应外键在从表中有数据时不允许删除该外键
mysql delete from table course where id001;
ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use
near table course where id001 at line 1结束语
感谢你的阅读
如果觉得本篇文章对你有所帮助的话不妨点个赞支持一下博主拜托啦这对我真的很重要。