primary key ,约束表数据唯一性,一张表只可有一个主键,但可以有复合主键,主键字段本身不为空
1.1增加主键
name varchar(10) primary key comment;
create table my_test{
number char(10) comment,
course char(10) comment,
score tinyint unsigned default 60 comment,
primary key(number,course),
}character utf8;
alter table T add primary key(字段列表);(追加字段主键)
alter tabke T modify 字段名 类型 primary key comment;(修改字段为主键)
1.2、主键约束,插入重复数据提示插入失败。
1.3、更新&主键 没有更新主键,只可删除再增加
alter table T drop primary key;
1.4 、主键的分类
实际建表很少使用真实业务数据作为主键,大部分使用逻辑性的字段(如id)
Id int primary key auto increment comment .逻辑主键,自增长;-----逻辑主键
2、自增长
auto increment
2.1、特点:a.任何一个字段要作为自增长必须前提是本身是一个索引(key--栏必填);
b.自增长字段必须为数字(整型);
c.一张表最多有一个自增长字段。
2.2 、修改自增长
alter tabe T auto_increment=4; 错误,只可向上修改,不可向下修改
alter tabe T auto_increment=10;
2.3 、修改自增长步长
set auto_increment_increment=5;修改步长为5,默认为1.
2.4、 删除自增长
自增长为字段的一个属性,可用modify修改进行删除
alter table T modify 字段 类型;(自增长去除)
3、唯一键(unique key )——保证很多字段具有唯一性,本质与主键差不多,唯一键默认允许字段为空,可用多个为空。
也可复合唯一键 unique key (xx,xx);
3.1、更新/删除唯一键(先删除后新增)
alter table T drop index 索引名字;(唯一键默认使用字段名作为索引名字)
例: alter table T drop index xx;
4、索引(index)
4.1、索引:根据某种算法,将 已有的数据,单独建立一个文件,文件能快速匹配数据,并且能够快速的找到对应表中的记录。
create table T(
属性名 数据类型,
属性名 数据类型,
......
index 索引名 (属性名xx 【(长度)】 【ASC|DESC】)
);
例:设置关于deptno字段的索引
create table T (
deptno int ,
dname varchar(20),
loc varchar(20),
index index_deptno(deptno)
);
在已经存在的表上创建普通索引:
create index 索引名 on 表名 (属性名 【(长度)】【ASC|DESC】)
通过SQL语句ALTER TABLE创建普通索引
Alter table table_name ADD index 索引名 (属性名 【(长度)】 【ASC|DESC】)
4.2、意义:1、提升查询数据效率
2、约束数据 的有效性(唯一等)
4.3 、增加索引的条件
1、若某个字段需要作为查询条件经常使用
2、某个字段需要进行数据的有效约束(主键、唯一键等)
4.4、Mysql 提供多种索引
1、主键索引(primary key)
2、唯一索引(unique key)
3、全文索引(fulltext key)——针对文章内部关键字查找
4、普通索引 (index)
5、外键约束(foreign key)
设置外键约束的两个表之间具有父子关系,即子表中某个字段的取值范围由父表觉定。
语法:create table T(
xx1 数据类型,
xx2 数据类型,
....
constraint 外键约束名 foreign key(属性名1)
references 表名 (属性名2)
);
属性名1:为子表中设置外键的字段名;
属性名2:为父表中设置主键约束的字段名。
注意:子表中属性名1与父表的属性名2数据类型必须一致!