3、鍵
1、主鍵
1、什麽是主鍵?
就是用來唯一標識一行數據的屬性
也就是保證數據的唯一性
2、外鍵
1、什麽是外鍵?
就是一張表和另外一張表的關係。
2、爲什麽要用外鍵?
- 節省空間
- 減少數據的耦合性
3、什麽時候用?
==當我們某個數據是用下拉框的時候我們一般是用外鍵鏈接到另一張表
用法:
create table t3(
id int primary key auto_increment,
name varchar(10),
tid int not null,
constraint stu_tercher foreign key(tid) references teacher(tid)
)engine=innodb charset=utf8;
3、補充:
1、外鍵:
constraint stu_tercher foreign key(tid,····) references teacher(tid,···);
但是帶括號的都可以是多個,但是必須和另外一張表的主鍵相關
2、主鍵
一張表的主鍵是唯一的,但是主鍵可以由多個列組成!
3、唯一索引
索引的作用:
- 加速查找
- 约束
create table user(
id int primary key aotu_increment,
uid int,
xx int
unique u1 (uid,xx··)
)engine=innodb default charset=utf8;
唯一標識和主鍵的區別:
主鍵不能爲空,唯一索引可以,
1 1
1 1 不能是唯一索引
1 1
1 2 可以
4、關於自增Auto_increment 的補充
1、查看自增起步
查看表的創建語句
show create table 表名:
2、修改自定起步位置:
alter table 表名 auto_increment=10;
3、設置步長:
-
MySQL基於會話:
- 什麽是基於會話:就是一次登錄共享的 其實也就相當於全局變量
怎麽修改?
show session variables like 'auto_inc%'; 查看全局变量
set session auto_increment_increment=2; 设置会话步长設置起始位置:# set session auto_increment_offset=10;
-
Sql serve 基於表:
可以在創建表的時候直接指定
CREATE TABLE `t5` (
`nid` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) NOT NULL,
`num` int(11) DEFAULT NULL,
PRIMARY KEY (`nid`,`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=4, 步长=2 DEFAULT CHARSET=utf8
4、關係
1、一對多
我們只需要在對的多的那張表設置外鍵管理一個的那張表就行
2、一對一
用户表:
1 alex
2 root
3 egon
4 laoyao
博客表:
FK() + 唯一
1 /yuanchenqi/ 4
2 /alex3714/ 1
3 /asdfasdf/ 3
4 /ffffffff/ 2
3、多對多
兩張表都是一對多,就變成了多對多,我們需要在創建一張關係表,
兩個外鍵,外鍵是否唯一看具體業務!