主键的描述

主键(又称为主关键字)是用于唯一确定表中每一行数据的标识符,是表中某一列或者多列的组合,多个列组成的主键称为复合主键。
学生表(学号、姓名、性别、班级) -----学号是唯一,学号也就是主键
课程表(课程编号、课程名、学分) ----课程编号是唯一的,课程编号就是一个主键
主键:在关系型数据库当中,是唯一的并且只能有一个 ,是唯一标识,并且能够确定是哪一条记录

主键的约束规则

不允许为空②能够唯一标识(不能重复)
( 1)唯一性:每个表中只能存在一个主键,且主键的值能唯一标识表中的每一行,就像每个人的身份证号码是不同的,能唯一标识每一个人。
( 2)非空性:主键可以由多个字段组成,且不受数据类型的限制。另外,字段所在的列中不能存在空值( NULL)。

创建主键的方式:

①创建表的时候直接添加:

语法:create table 表名(字段  数据类型 not null primary key);

例如:create table yun(id int not null primary key,name varchar(20),age tinyint);
创建一张名为yun1的表,其中包含id,name,age字段,并且id不允许为空也是主键

②:表已经创建完成之后添加主键:

alter table 表名 add primary key(需要添加主键的字段);

例如:alter table yun1 add primary key(id); 修改yun1表中的id字段,给id字段添加主键

删除主键的方式:

语法:alter table 表名 drop primary key;

例如:alter table yun2 drop primary key; 
删除yun2表当中的主键字段

唯一键

唯一约束:一张表当中可以有多个唯一键,并且可以为空
id设置为唯一键(1.2.3.4…) 不能为相同的
name设置为唯一键值不能相同,但是可以是空的

创建唯一键的方式:

①:创建表的时候直接添加:
语法:create table 表名(字段 数据类型 unique);

例如:create table yun1(id int unique,name varchar(20),age tinyint);
创建一张名为yun1的表,包含id,name,age字段,但是把id设置为了唯一约束

②:表已经创建完之后添加唯一键:
alter table 表名 add unique(id);修改yun1表中id的字段为唯一键

刪除唯一键的方式 :

①drop index 唯一键的字段名+ on+ 表名;
例如:drop index phone on orders;   删除orders表当中phone字段的唯一键。

②alter table 表名 drop index  唯一键的字段名

域的完整性

域完整性指的是对数据表中单元格的约束,通过给列定义规则来约束单元格的属性。常见的域完整性约束包括数据类型约束、非空约束和默认值约束,其中数据类型约束就是在创建表时所指定的字段类型。本节将重点讲解域完整性中的非空约束和默认值约束。

非空约束的创建方式:

创建表的时候设置:create table 表名(字段 数据类型 not null);

表已经创建完成后再去添加非空约束:alter table 表名 modify 字段   数据类型  not null;

默认值的创建方式:

创建表的时候创建:create table 表名(字段  数据类型 default 默认值);

表已经创建完成后去添加默认值:alter table 表名 modify 需要添加默认值的字段  字段的数据类型 default 默认值;

外键与外键约束

外键:表的外键是另外一张表的主机,可以有重复,并且可以为空,就是用来和其他表建立联系,外键可以有多个
主键所在的表为主表,外键所在的表为从表,两表之间的关系为主从关系

设置外键的方式:

1.创建表的时候添加:create table 表名(字段 数据类型,foreign key (需要设置为外键的字段) references 主表的名字(主表中主键的字段));

2.表创建完成之后再去添加外键:alter table 表名 add foreign key(需要设置为外键的字段) references 主表(主键的字段);

外键约束:

1.主表当中没有数据时,从表无法插入数据
2.从表的数据删除之后才能够删除主表的数据
刪除外键的方式:alter table 表名 drop foreign key 外键的名字;
(外键的名字可以使用show create table表名\G查看)

普通索引的创建:

①创津表的时候添加:create table  表名(字段  数据类型,index 索引名(需要添加索引的字段);(其中索引的名字是由大家自己来去定义的)

例如:create table student(id int,name varchar(20),age tinyint,index yunjisuan(name));
创建一个名为student的表,表中有j,name,age字段,然后添加索引索引名字为yunjisuan,这个索引添加到name字段

②表已经创建完成再去进行添加索引:create  index  索引的名字  on  表名(需要添加索引的字段);
例如:create index yun on student1(name);  把student表的name字段添加索引,索引的名字为yu

查看索引是否创建成功

show index from表名\G

删除普通索引:

drop index 索引名 on 索引所在的表;

唯一索引

唯一索引,只要是设置了唯一索引的字段,那么这个字段就不允许有重复的值。保证数据的唯一性
唯一索引的创建

创建表的时候添加:

create table 表名(字段·数据类型,unique index 索引名(需要添加唯一索引的字段));

表已经创建完成再去进行添加唯一索引:

create unique index 索引名 on 表名(需要添加唯一索引的字段);

刪除唯一索引:

alter table 表名 drop index 索引的名字;