
1,必须使用innodb表引擎
2,两个表的字符编码必须一致
3,被引用的typeid,即父表中的typeid必须是主键或者唯一建
满足以上几点,sql如下:
--------------------------------
create table father (typeid int primary key,name varchar(10)) engine=innodb
create table son (id int,typeid int ,foreign key (typeid) references father(typeid)) engine=innodb
如果你的意思只是说两个表做关联,你的sql可以这么写
select * from father ,son where son.typeid=father.typeid
那就需要先删除主表里的记录,再删除子表里的记录。比如有如下数据:A表uid name1张三2李四B表uid 科目 分数1 数学 901 语文 802 数学 702 语文 60现在要删除A表里张三的记录,如果有外键,直接delete from A where uid=1这样是删除不了的。所以要先删除B表里uid=1的记录再执行上边这句delete from B where uid=1然后再执行delete from A where uid=1就可以了查看mysql外键方式主要是通过第三方工具或者是sql语句,主要有以下三种方式
1、使用Navicateformysql,打开数据库、查看数据库表、查看设计表、选择外键选项卡,就可以查看外键
2、使用sql语句
showcreatetable表名;这个命令可以查看表的所有信息,包括一些字段类型,字段的约束,外键,主键,索引,字符编码等等。
3、查看某个表或者某个列的外键信息
selectTABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME from KEY_COLUMN_USAGE where REFERENCED_TABLE_NAME = '<table>'
如果需要查看某一列上的外键关系,需要添加列的条件REFERENCED_COLUMN_NAME.xx=xx
方法一比较直观,方法三比较准确!
扩展资料:
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
由于MySQL是开放源代码的,因此任何人都可以在GeneralPublicLicense的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
参考资料来源:百度百科——mySQL
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)