mysql建立不上外键,sql语句一运行完就会生成一条索引,但是外键却见不上

mysql建立不上外键,sql语句一运行完就会生成一条索引,但是外键却见不上,第1张

建立外键需要注意几点:

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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7284959.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存