-- 向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 索引名 (字段列表):添加普通索引,索引值可出现多次