# *****70_主键约束(冲突)*****
"""
-- 向pri1、2表中插入数据
insert into my_pri1
values('古天乐','bc20190001'),
('蔡康永','bc20190002');
insert into my_pri2
values('bc20190001','bc25890001',90),
('bc20190001','bc25890002',85),
('bc20190002','bc25890001',92);
-- 主键冲突(重复)
insert into my_pri1
values('刘涛','bc20190002');
-- 错误: 主键冲突
insert into my_pri2
values('bc20190001','bc25890001',100);
"""
# *****71_自增长*****
"""
-- 删除主键
alter table my_pri3 drop primary
key;
-- 自增长
create table my_auto(
id int primary key auto_increment
comment '自动增长',
name varchar(10) not null
);
-- 触发自增长
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, '杨颖');
"""
# *****72_自增长的修改和删除*****
"""
-- 修改表选项的值
alter table my_auto
auto_increment=4;
-- 向下修改(改小) 不生效
alter table my_auto
auto_increment=10;
-- 向上修改(改小)
-- 查看自增长变量
show variables like
'auto_increment%';
-- 修改自增长步长
set auto_increment_increment=5;
-- 一次自增5
-- 插入记录
insert into my_auto values(null,
'杨紫');
insert into my_auto values(null,
'张一山');
-- 删除自增长
alter table my_auto modify id int
primary key;
-- 错误: 主键理论上是单独
存在的(系统会认为我们要再加一个主键)
alter table my_auto modify id int;
有主键的时候,千万不要再加主键
"""
# *****73_添加唯一键*****
"""
-- 创建唯一键
create table my_unique1(
number char(10) unique comment
'学号: 唯一, 允许为空',
name varchar(20) not null
)charset utf8;
create table my_unique2(
number char(10) not null comment
'学号',
name varchar(20) not null,
-- 增加唯一键
unique key(number)
);
create table my_unique3(
id int primary key auto_increment,
number char(10) not null,
name varchar(20) not null
);
-- 追加唯一键
alter table my_unique3 add unique
key(number);
"""
# *****74_唯一键约束与删除*****
"""
-- 插入数据
insert into my_unique1
values(null, '大雄'),
('bc20190001', '胖虎'),
(null,'静香');
insert into my_unique1
values('bc20190001','哆啦A梦');
-- 删除唯一键
alter table my_unique3 drop index number;
"""
# *****75_索引*****
"""
索引:系统根据某种算法,将已有的数据,或未来可能新增的数据,
单独建立一个文件,文件能够实现快速的匹配数据,
并且能够快速地找到对应表中的记录
索引的意义:
提升查询数据的效率
约束数据的有效性、唯一性等
MySQL中提供了多种索引
主键索引:primary key
唯一索引:unique key
全文索引:fulltext index
普通索引:index
"""
# *****76_表关系*****
"""
一对一:一张表的一条记录一定只能与另外一张
表的一条记录进行对应,反之亦然
一对多:一张表中有一条记录可以对应另外一张表中的多条记录,
但是反过来,另外一张表的一条记录只能对应第一张表的一条记录
多对多:一张A表中的一条记录,能够对应B表中的多条记录,
同时B表中的一条记录也能对应A表中的多条记录
"""