主键冲突,更新主键 & 删除主键,主键分类,-- 自增长,-- 触发自增长,-- 在修改表选项的值,修改自增长,查看自增长对应的变量,-- 修改自增长步长,删除自增长,唯一键(unique ke...

-- 向pril、2表插入数据

insert into my_pril

values('古天乐','bc20190001'),

('曹坤用','bc20190002');

insert into my_pri2

values('bc20190001','bc25890001',90),

('bc20190001','bc25890002',85),

('bc20190002','bc25890001',92);

更新主键 & 删除主键

alter table 表名 drop primary key;

-- 删除主键

alter table my_pri3drop primary key;

主键分类:业务主键、逻辑主键

create table my_student(

id int primary key auto_increment comment '逻辑主键:自增长',

number char(10) not null comment '学号',

name varchar(10) not null

);

-- 自增长

create table my_auto(

idint primary key

auto_increment comment'自动增长',

namevarchar(10)not null

);

-- 触发自增长

系统会从当前字段中已有的最大值基础上,再进行+1操作,得到一个新的不同的数据

insert into my_auto(name)

values('邓丽君');

insert into my_auto

values(null,'成龙');

insert into my_auto

values(default,'吴绮莉');

特点:

任何一个字段要做自增长,前提必须本身就是一个索引

自增长字段必须是数字,而且是整型

一张表最多只能有一个自增长

-- 指定一个数据

insert into my_auto

values(6,'黄晓明');

insert into my_auto

values(null,'杨颖');

-- 在修改表选项的值

alter table my_auto

auto_increment=4;-- 向下修改(改小)

alter table my_auto

auto_increment=10;-- 向上修改(改上)

修改自增长:

alter table 表名 auto_increment=值;

例子:-- 修改表选项的值

alter table my_auto

auto_increment=10;-- 向上修改(改上)

查看自增长对应的变量:

show variables like 'auto_increment%';

-- 修改自增长步长

set auto_increment_increment=5;-- 一次自增5

-- 插入记录:使用自增长

insert into my_autovalues(null,'杨紫');

insert into my_autovalues(null,'张一山');

删除自增长

alter table 表名 modify 字段 类型;

例子:alter table my_auto modify idint;-- 有主键的时候,千万不要在加上主键

错误:alter table my_auto modify idint primary key;-- 错误:主键理论上是单独存在的(系统会认为我们要再加一个主键)

唯一键(unique key)

默认允许自动为空,而且可以多个为空

例子:create table my_unique1(

numberchar(10)unique comment'学号: 唯一, 允许为空',

namevarchar(20)not null

)charset utf8;

第二个例子:create table my_unique2(

numberchar(10)not null comment'学号',

namevarchar(20)not null,-- 增加唯一键

unique key(number)

);

第三个例子:create table my_unique3(

idint primary key auto_increment,

numberchar(10)not null,

namevarchar(20)not null

);

增加唯一键

方案一:在创建表的时候,字段之后直接跟unique / unique key

例子:-- 追加唯一键

alter table my_unique3add unique

key(number);

-- 插入数据

insert into my_unique1

values(null,'大熊'),

('bc20190001','胖虎'),

(null,'静香');

insert into my_unique1

values('bc20190001','哆啦A梦');

更新唯一键 & 删除唯一键

错误的删除方法:alter table 表名 drop unique key;

alter table 表名 drop index 索引名字;

例子:alter table my_unique3drop index number;

索引的意义:

提升查询数据的效率

约束数据的有效性、唯一性等

MySQL中提供了多种索引

主键索引:primary key

唯一索引:unique key

全文索引:fulltext index

普通索引:index

创建

create [unique] index 索引名 on 表名(字段名(长度));

alter 表名 add [unique] index [索引名] on (字段名(长度));

删除:

drop index [索引名] on 表名;

根据索引查看表名

show index from 表名\G

使用alter命令添加数据表的索引

alter table 表名 add primary key (字段列表):添加一个主键,意味着索引值必须是唯一且不为空

alter table 表名 add unique 索引名 (字段列表):创建索引的值必须是唯一的,允许NULL,且NULL可能会出现多次

alter table 表名 add fulltext 索引名 (字段列表):添加全文索引

alter table 表名 add index 索引名 (字段列表):添加普通索引,索引值可出现多次

你可能感兴趣的:(主键冲突,更新主键 & 删除主键,主键分类,-- 自增长,-- 触发自增长,-- 在修改表选项的值,修改自增长,查看自增长对应的变量,-- 修改自增长步长,删除自增长,唯一键(unique ke...)