有趣的网站网址,html5和html的区别,-邵阳网络公司-邵阳网站建设|邵阳网站制作,搜索网站排行多表查询和外键关联
实际开发中#xff0c;一个项目通常需要很多张表才能完成。例如#xff0c;一个商城项目就需要分类表#xff0c;商品表#xff0c;订单表等多张表。且这些表的数据之间存在一定的关系#xff0c;接下来我们将在单表的基础上#xff0c;一起学习多表…多表查询和外键关联
实际开发中一个项目通常需要很多张表才能完成。例如一个商城项目就需要分类表商品表订单表等多张表。且这些表的数据之间存在一定的关系接下来我们将在单表的基础上一起学习多表方面的知识。 多表关系
MySQL多表之间的关系可以概括为
一对一关系 一个学生只有一张身份证一张身份证只能对应一学生。 在任一表中添加唯一外键指向另一方主键确保一对一关系。 一般一对一关系很少见遇到一对一关系的表最好是合并表。 一对多/多对一关系 部门和员工 分析一个部分有多个员工一个员工只能对应一个部门实际原则在多的一方建立外键指向一的一方。 多对多关系
学生和课程
分析一个学生可以选择很多门课程一个课程也可以被很多学生选择原则多对多关系实际需要借助第三张中间表。中间表至少包含两个字段将多对多的关系拆成一对多的关系中间表至少要有两个外键这两个外键分别指向原来的那张两张表的主键 外键约束
介绍
MySQL外键约束FOREIGN KEY是表的一个特殊字段经常与主键约束一起使用。对于两个具有关联关系的表而言相关联字段中主键所在的表就是主表父表外键所在的表就是从表子表。
外键用来建立主表与从表的关联关系为两个表的数据简历连接约束两个表中数据的一致性和完整性。比如一个水果摊只有苹果桃子李子西瓜等4种水果那么你来到水果摊要买水果只能选择苹果桃子李子和西瓜其它的水果都是不能购买的。 特点
定义一个外键时需要遵循下列规则 主表必须已经存在于数据库中或者是当前正在创建的表。 必须为主表定义主键。 主键不能包含空值但允许在外键中出现空值。也就是说只有外键的每个非空值出现在指定的主键中这个外键的内容就是正确的。 在主键的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。 在外键中的数目必须和主键的主键中列的数目相同。 外键中列的数据类型必须和主表主键中对应列的数据类型相同。 创建外键约束-第一种方式
方式一在创建表时设置外键约束
在create table语句中通过foreign key关键字来指定外键具体的语法格式如下 [constraint外键名] foreign key 字段名[,字段名2,...] references主键名 主键列1 [,主键列2,...] 实现 create database mydb3; use mydb3; -- 创建部门表 create table if not exists dept( depton varchar(20) primary key, -- 部门号 name varchar(20) --部门名字 ); 方式1-在创建表时设置外键约束 create table if not exists emp( eid varchar(20) primary key,-- 员工编号 ename varchar(20), -- 员工名字 age int,-- 员工年龄 dept_id varchar(20), --员工所属部门 constaraint emp_fk foreign key(dept_id) references dept(deptno) -- 外键约束 ); 代码实现 外键约束 create database mydb3; use mydb3; 创建部门表 create table if not exists dept( deptno varchar(20) primary key, -- 部门编号 name varchar(20) -- 部门名字 ); 创建员工表并创建外键约束 -方式1 [constraint外键名 ] foreign key 字段名 [,字段名2,...] references主表名 主键列1[,主键列2...] create table if not exists emp( eid varchar(20) primary key, -- 员工编号 ename varchar(20),-- 员工姓名 age int ,-- 员工年龄 dept_id varchar(20), -- 员工所属部门 constraint emp_fk foreign key (dept_id) references dept(deptno) ); 创建外键约束-第二种方式
外键约束也可以在修改表时添加但是添加外键约束的前提是才表中外键列中的数据必须与主表中主键列中的数据一致或者是没有数据。 alter table 数据表名 add constarint 外键名 foreign key(列名) references 主表名(列名); 在外键约束下的数据操作 删除外键约束 多对多关系 多表联合查询 内连接查询 外连接查询 子查询 ①基本子查询 ②all关键字 ③Any和some ④in ⑤Exists 自关联查询