首页 > 其他 > 详细

多表设计及查询

时间:2020-07-31 17:26:30      阅读:79      评论:0      收藏:0      [点我收藏+]

表约束

唯一约束:unique,声明该字段是唯一的

非空约束:not null,声明该字段非空

主键约束:primary key,声明某一列为主键,具有唯一性、非空性和被引用的特性

主键的自增长 auto_increment

create table stu(

       id int primary key auto_increment,

       username varchar(20)

       );

插入语句时,主键可以写null,也可以自定义

insert into stu values(null,‘meimei‘);

insert into stu values(null,‘xiaofeng‘);

insert into stu values(4,‘xiaofeng‘);

 技术分享图片  

多表约束(外键)

外键约束的目的:保证数据的完整性。

技术分享图片

 

  外键语法:foreigh key(外键字段) references 表名(主键);

多表的设计

表结构设计的三种方式:一对一、一对多(重点)、多对多(重点)

一对多:部门和员工/用户和订单

结构设计:两张表,主表(一方)  从表(多方)

建表原则:在多方表中添加字段,把该字段设置为外键,指向一方表的主键

技术分享图片

多对多:用户和角色,一个用户可以有多个角色,一个角色可以被多个用户所拥有。

建表原则:三张表,用户表、角色表、中间表(存储数据关系)

技术分享图片

 

 多对多可以拆分成两个一对多的场景

用户表(一) ----中间表(多)

角色表(一) ----中间表(多)

多表查询

内链接

内链接有普通内链接和隐士内链接两种,通常使用隐士内链接。

语法:select * from tablename1, tablename2 where tid = gid;

或者 select * from tablename1 t, tablename2 s where t.tid = s.gid;

外链接

外连接分左外链接和右外链接两种。

左外链接:select * from tablename1 t left (outer) join tablename2 s on t.tid = s.gid;

右外链接:select * from tablename1 t right (outer) join tablename2 s on t.tid = s.gid;

 

内链接和外链接的区别

内链接查询的是2张表交集数据,主外键关联的数据;

左外链接查询的是左表中所有的数据和2张表主外键关联的数据;

右外链接查询的是右表中所有的数据和2张表主外键关联的数据;

 技术分享图片 

子查询

包含多个select语句的查询叫子查询,即把查询语句的结果作为另一个查询条件。

例如:查询英语成绩大于英语平均分的学员和分数

select name,English from stu where English > (select avg(English) from stu);

多表设计及查询

原文:https://www.cnblogs.com/like1824/p/13410807.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!