一、表与表的对应关系
1、一对多
主键对应多个外键,外键则不受限制
2、一对一
主键对应一个外键,外键列约束为唯一
create table unserinfo1(
id int auto_increment primary key,
name char(10),
gender char(10),
email varchar(64)
)engine=innodb default charset=utf8;
create table admin(
id int not null auto_increment primary key,
username varchar(64) not null,
password varchar(64) not null,
uer_id int not null,
unique uq_u1(user_id),
constraint fk_admin_u1 foreign key (user_id) references userinfo1(id)
)engine=innodb default charset=utf8;
3、多对多
应通过第三个关系表建立两个表的对应关系,关系表则可以使用联合唯一以确定两表之间的关系唯一性
create table userinfo2(
id int auto_increment primary key,
name char(10),
gender char(10),
email varchar(64)
)engine=innodb default charset=utf8;
create tale host(
id int auto_increment primary key,
hostname char(64)
)engine=innodb default charset=utf8;
#联合唯一,外键 多对多
create table user2host(
id int auto_increment primary key,
userid int not null,
hostid int not null,
unique uq_uer_host(userid,hostid),
constraint fk_u2h_user foreign key (userid) references userinfo2(id),
constraint fk_u2h_host foreign key (hostid) references host(id)
)engine=innodb default charset=utf8;
二、SQL基本查询
1、In、Not In
2、Between ... and ...
3、通配符 %、-
4、Is nul、Is Not Null
5、desc、asc
6、Limit
SELECT * from student LIMIT n1,n2; 表示从n1+1起开始查询n2条数
SELECT * from student LIMIT n1 OFFSET n2; 表示从n2+1开始查询n1的条数
7、聚合函数
sum
max
min
avg
count
使用count(1)、count(主键)效率高
8、Group By
用于查询唯一值相比Distinct更效率
9、子查询
三、表连接
1、left join ... on ...
2、right join ... on ...
3、inner join ... on ...
4、全连接