外键只是一种 完整性的约束。
创新互联公司是一家专注于做网站、网站设计与策划设计,奎屯网站建设哪家好?创新互联公司做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:奎屯等地区。奎屯做网站价格咨询:028-86922220
从 SQL 语句上面来说, 有没有外键,查询语句的 写法差不多都是一样的。
SELECT
d.name
FROM
business AS b
JOIN employee AS e
ON (b.employee_id = e.id)
JOIN department AS d
ON (e.department_id = d.id)
WHERE
d.code = '编号'
AND b.upDate = '日期'
AND b.downDate = '日期'
一种是关联,其中xxx和yyy你自己替换吧
select c.* from student a,lecture b,record c where a.id=c.sid and b.id=c.lid and a.name='xxx' and b.name='yyy'
另一种是嵌套
select * from record where sid in(select sid from student where name='xxx') and lid in (select lid from lecture where name='yyy')
通过工具NAVICAT 设计表时进行设计
打开NAVICAT,连接数据库
右键目标表,选择设计表
打开后选择外键菜单,具体如图:
分别设置外键名,字段,关联数据库、表、字段,以及删除时操作,更新时操作方式然后点击保存按钮即可
也可以通过SQL方式完成对表外键的添加,如:
语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
#查看数据库所有表
SELECT tba.TABLE_NAME FROM information_schema.TABLES tba WHERE tba.TABLE_SCHEMA= '你要查的数据库名字'
#查看某个库中的一个表是哪些表的外键
SELECT TABLE_NAME FROM KEY_COLUMN_USAGE WHERE CONSTRAINT_NAME='FK_PRODUCT_ID' AND REFERENCED_TABLE_NAME ='表的名字'AND REFERENCED_TABLE_SCHEMA='表的的数据名字'
求采纳良心sql啊
information_schema数据库又称为信息架构,数据表保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。
performance_schema数据库主要用于收集数据库服务器性能参数,以便优化mysql数据库性能。
mysql数据库是存储着已MySQL运行相关的基本信息等数据管理的数据库。
sys 数据库是mysql5.7增加的,通过这个库可以快速的了解系统的元数据信息
1、只有InnoDB类型的表才可以使用外键。mysql默认是MyISAM,这种类型不支持外键约束
2、外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作。
3、外键的作用:
保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值。
4、建立外键的前提:
两个表必须是InnoDB表类型。
使用在外键关系的域必须为索引型(Index)。
使用在外键关系的域必须与数据类型相似。
5、创建的步骤
指定主键关键字: foreign key(列名)。
引用外键关键字: references 外键表名(外键列名)。
6、事件触发限制:on delete和on update , 可设参数cascade(跟随外键改动)。
restrict(限制外表中的外键改动),set
Null(设空值),set Default(设默认值)。
[默认]no action
7、举例
outTable表 主键 id 类型 int
创建含有外键的表:
代码如下:
create table temp(
id int,
name
char(20),
foreign key(id) references outTable(id) on delete cascade on update
cascade);
说明:把id列 设为外键 参照外表outTable的id列 当外键的值删除 本表中对应的列筛除 当外键的值改变 本表中对应的列值改变。
代码如下:
create table temp( id int, name char(20),
foreign key(id) references outTable(id) on delete cascade on update
cascade);