数据表查询及关系(五)
一、表与表的对应关系
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、全连接
                    
                
                
            
        
浙公网安备 33010602011771号