精华内容
下载资源
问答
  • 查询数据库外键和外键关联的表名

    业务需求:获取指定数据库中所有表的外键以及外键关联的表名

    SELECT
    	O.TABLE_SCHEMA,
    	O.TABLE_NAME,
    	O.COLUMN_NAME,
    	O.REFERENCED_TABLE_SCHEMA,
    	O.REFERENCED_TABLE_NAME,
    	T.CONSTRAINT_TYPE 
    FROM
    	(
    	SELECT
    		K.CONSTRAINT_SCHEMA,
    		K.CONSTRAINT_NAME,
    		K.TABLE_SCHEMA,
    		K.TABLE_NAME,
    		K.COLUMN_NAME,
    		K.REFERENCED_TABLE_SCHEMA,
    		K.REFERENCED_TABLE_NAME,
    		K.REFERENCED_COLUMN_NAME,
    		R.UPDATE_RULE,
    		R.DELETE_RULE,
    		R.UNIQUE_CONSTRAINT_NAME 
    	FROM
    		information_schema.KEY_COLUMN_USAGE K
    		LEFT JOIN information_schema.REFERENTIAL_CONSTRAINTS R ON K.CONSTRAINT_NAME = R.CONSTRAINT_NAME 
    	) AS O
    	INNER JOIN Information_schema.TABLE_CONSTRAINTS T ON O.Table_Name = T.TABLE_NAME 
    	AND o.TABLE_SCHEMA = upper( '{database}' ) 
    	AND T.CONSTRAINT_NAME = O.CONSTRAINT_NAME 
    	AND T.CONSTRAINT_TYPE = 'FOREIGN KEY' 
    WHERE
    	O.CONSTRAINT_SCHEMA != 'mysql' 
    	AND O.CONSTRAINT_SCHEMA != 'sys'
    

    备注

    TABLE_SCHEMA:数据库名
    TABLE_NAME:表名
    COLUMN_NAME:外键所在的列名
    REFERENCED_TABLE_SCHEMA:外键关联的数据库
    REFERENCED_TABLE_NAME:外键关联的表名

    展开全文
  • MySQL数据库外键问题

    2019-04-23 17:12:01
    MySQL的两种存储引擎中,MYISAM不支持外键,InnoDB支持外键,两张表必须都是InnoDB表才可以建立外键。 缺点 外键会影响大型系统的性能,因为外键约束会导致插入删除更新时频繁检验外键约束,对于大型系统,可以把...

    今天面试被问到使用外键会导致什么问题?
    在MySQL的两种存储引擎中,MYISAM不支持外键,InnoDB支持外键,两张表必须都是InnoDB表才可以建立外键。

    缺点

    外键会影响大型系统的性能,因为外键约束会导致插入删除更新时频繁检验外键约束,对于大型系统,可以把外键约束逻辑写在程序中。
    进行删除是要先删除外键关联,才能正常删除。

    对于大型系统,不要使用外键,而中小型系统,使用外键可以使E-R图更有可读行,是业务逻辑操作更简单。

    展开全文
  • Mysql 数据库外键设置方式

    千次阅读 2015-10-03 14:33:56
    Mysql数据库5.5以后默认的表类型就是INNOB的,默认支持外键设置,现以学生选课表为例说明外键的设置格式。 第一张学生表: create table student (sid int primary key , sname varchar(45) not null, ssex ...

    Mysql数据库5.5以后默认的表类型就是INNOB的,默认支持外键设置,现以学生选课表为例说明外键的设置格式。

    第一张学生表:

    create table student
    (sid int primary key , 
    sname varchar(45) not null, 
    ssex  varchar(2) not null,
    sdept varchar(10) not null, 
    sage  int(3) ,
    sadss varchar(45) 
    )

    第二张课程表:

    create table course
    (
    cid int primary key ,
    cname varchar(50) not null,
    ccredit int(3) 
    )
    第三张选课表:


    create table studCourse
    (
    stuCourseId int primary key  AUTO_INCREMENT,
    sid int,
    cid int ,
    grade int not null,
     INDEX (sid), FOREIGN KEY (sid) REFERENCES student(sid),
     INDEX (cid), FOREIGN KEY (cid) REFERENCES course(cid)
    )
    其中选课表中有两个外键分别指向学生表和课程表。

    展开全文
  • MySQL数据库外键使用

    千次阅读 2018-09-14 14:04:20
    --5.1 向goods表里插入任意一条数据 insert into goods (name,cate_id,brand_id,price) values('联想固态硬盘',10,10,1200);... --5.2 添加外键约束 foreign key -- alter table goods add foreign key ...
    --5.1 向goods表里插入任意一条数据
                 insert into goods (name,cate_id,brand_id,price) values('联想固态硬盘',10,10,1200);
    
                --5.2 添加外键约束 foreign key
                -- alter table goods add foreign key (brand_id) references goods_brands(id);
                  alter table goods add foreign key(cate_id) references goods_cates(id);
                  alter table goods add foreign key(brand_id) references goods_brands(id);
    
                -- 失败原因 ,因为'联想固态硬盘'这行的数据不满足外键约束 delete
                -- delete from goods where name="联想固态硬盘";       
                  delete from goods where id=22;
    
                --5.3 创建表的同时设置外键 (注意 goods_cates 和 goods_brands 两个表必须事先存在)
                create table goods(
                    id int primary key auto_increment not null,
                    name varchar(40) default '',
                    price decimal(5,2),
                    cate_id int unsigned,
                    brand_id int unsigned,
                    is_show bit default 1,
                    is_saleoff bit default 0,
                    foreign key(cate_id) references goods_cates(id),
                    foreign key(brand_id) references goods_brands(id)
                );
    
    
                --5.4 如何取消外键约束
                   alter table goods drop foreign key goods_ibfk_1;
                   alter table goods drop foreign key goods_ibfk_2;
    
    
                -- 需要先获取外键约束名称,该名称系统会自动生成,可以通过查看表创建语句来获取名称
                   show create table goods ;
    
                -- 获取名称之后就可以根据名称来删除外键约束
                --alter table goods drop foreign key goods_ibfk_1;
    
                --5.5 涉及外键的面试
                   在目前主流的数据库设计中,越来越少使用到外键约束
                    原因: 会极大的降低表更新的效率
                    如何替代 '通过外键约束实现数据有效性验证'
                    解决思想: 可在数据录入时验证(表示层,ui层),或者在业务层面(python代码)去验证,而不要数据库层面去验证。
    
    展开全文
  • mySql数据库外键约束条件

    千次阅读 2014-05-12 14:42:05
    MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持); 2.外键列必须建立了索引,...
  • MySql数据库外键关联

    2016-08-24 22:21:08
    设置外键关联是可以设置在删除时和在更新时的操作,其中有三个比较重要的。 (1)层叠(级联):cache (2)设为null:set null (3)无动作:no action(1)层叠,当主表删除一条记录,那么从表对应的引用了被...
  • mysql设置外键的好处阻止执行 从表插入新行,其外键值不是主表的主键值便阻止插入; 从表修改外键值,新值不是主表的主键值便阻止修改; 主表删除行,其主键值在从表里存在便阻止删除(要想删除,必须先删除从表的...
  • Mysql数据库外键约束(foreign key)

    千次阅读 2017-04-09 21:19:01
    备注: 外键约束中,被约束字段的值必须来自父键的参考字段FR:海涛高软(QQ技术交流群:386476712)
  • 首先定义主表的主键 选择SQL Server Management Studio目录树中数据库目录下的数据库关系图 在快捷菜单中选择新建数据库关系图选项 进入添加表界面从可用表中选择要添加到关系图中的表 单击添加按钮然后单击关闭 在...
  • 关系型数据库中,表与表之间存在关联,是很常见的,因此也得名关系型数据库。其中,外键是一个重要特性。主从之间存在一对多、多对多的关系。 经常遇到这样的业务需求。删除一条订单时,要删除该条订单相关联的所有...
  • 外键的名字是一个已经存在的一个键值了,这个时候,你应该检查你的数据库以确保外健名字是唯一的,或者你在键名后面加上几个随机的字符以测试是否是这个原因。   4, 其中一个或者两个表是MyISAM引擎的表,...
  • 2,用外键要适当,不能过分追求 3,不用外键而用程序控制数据一致性和完整性时,应该一层来保证,然后个个应用通过这个层来访问数据库。 需要注意的是:MySQL允许使用外键,但是为了完整性检验的目的,在...
  • MySql数据库主键外键与数据库设计

    千次阅读 2019-05-20 01:38:57
    MySql数据库主键外键与数据库设计
  • 即阻止非法数据的存入,例如A表中的b列是外键,来源是B表的主键b列,此时在向A表存入数据时数据库会自动检查A表的b列的值在B表的b列中是否存在。 方便、简单、直观。 可以设置级联操作,外键来源删除和修改时数据库...
  • 查看外键名称查看数据库外键名字

    千次阅读 2019-10-29 12:46:35
    我们要进行删除外键时,需要知道外键的名字,那么如何查看数据库外键呢?有2种方式查看: 1.过查看表的方式查看外键名字; 2.通过mysql自带的系统表查看外键。 更多精彩请访问本文源地址: ...
  • mysql数据库-外键

    2017-04-24 10:17:05
     所有的外键都必须在innodb表中使用,而mysqlisam表中是无法使用外键的  什么是innodb表,mysqlisam表?  mysqlisam表不支持事务处理,而innodb表支持事务处理,  什么是事务处理?  请看
  • mysql 外键查询(mysql数据库多表联查)2020-07-24 11:51:00共10个回答查看方式主要是通过第三方工具或者是sql语句,主要有以下三种方式1:使用Navicateformysql,打开数据库、查看数据库表、查看设计表、选择外键选项卡,...
  • MySQL数据库——外键约束

    千次阅读 2019-05-06 16:47:23
    文章目录方案一:单张表方案二:两张表方案三:两张表并添加外键约束 把用户信息及其收货地址保存在数据中 方案一:单张表 创建表 create table user_info( id char(36) primary key, user_name varchar(30) not ...
  • 为什么需要数据库外键

    千次阅读 2019-01-09 15:59:26
    MySQL数据库使用外键条件:两个表存储引擎必须是InnoDB,MyISAM暂时不支持外键外键列必须建立索引,MySQL4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显式建立;外键关系的两表的列的...
  • 数据库外键约束

    2020-05-17 09:00:29
    数据库外键约束 1.RESTRICT(mysql默认):拒绝更新或删除(是拒绝更新还是删除看外键的具体设置)主表被外键引用的列。 2.NO ACTION:同RESTRICT 3.SET NULL:更新或删除主表对应列,会使子表对应列的值变成NULL...
  • mysql数据库创建外键

    千次阅读 2019-01-09 17:02:04
    创建外键注意的地方 必须是innodb引擎 注意外键字段类型和另一张表主键字段类型一致否则报“cannot add foreign key constraint“ 创建 create table class(cid int not null auto_increment, caption ...
  • mysql数据库创建外键老是失败? 可能原因: 1、这是建外键的列与要关联的列类型不匹配造成的; 2、一个表用powerdesigner导入的整型长度为11,另一个直接在mysql中建立的表默认整型长度是10; 3、外键...
  • 数据库外键设计

    2018-10-17 13:31:21
    数据库外键设计时,一般会遇到两个问题,无法创建外键,一个是联动删除。 拿班级表(t_class)和学生表(t_student)来说吧,t_class是父表,t_student是子表。t_student表的class_id关联着t_class表的id。 无法创建外键...
  • 不过使用数据库外键也是有好处的,就是可以保证数据的一致性,不太可能出现垃圾数据,这几年开发下来,感觉使用Mysql数据库的公司大概率是不太喜欢用外键的,而使用Oracle的公司则相反。个人也是体会了一把外键删...
  • mysql数据库_外键

    2016-03-03 17:24:31
    回顾一下存储引擎 innoDB:支持事务,支持外键 myISAM:不支持事务,不支持外键 ...1.去除数据库垃圾数据 2.连带更新 举例: 部门表: department 班级表 :classes 学生表: student department(主表) id name 1
  • 还有十五分钟图书馆关闭,赶紧来把今天的关于MySQL外键修改的内容记录一下。 背景: 在作业的时候必要的建立了两个数据表。 users表和records表修改前如下所示: 可以看出开始的情况是: records的user_id是外键...
  • mysql数据库解除外键

    2013-04-15 15:17:45
    magento的数据库导入导出要处理外键的问题。 经过测试,只要加上这段话便可顺利解除外键。 头部 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=...
  • mysql外键约束和oracle的外键约束有点不一样, mysql外键约束示例代码如下: [code="java"] create table student( id int primary key , name varchar(20), class_id int , foreign key(class...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 101,231
精华内容 40,492
关键字:

mysql数据库外键怎么写

mysql 订阅