mysql 查看表约束怎么约束与表中其他关联

MySQL为关联表添加数据 - CSDN博客
MySQL为关联表添加数据
在student表和grade表中,添加外键约束,建立两个表的关联关系。
可以看到,student表的外键约束已经添加成功,此时,表student和表grade之间,就是多对一的关系
因为,外键列只能插入参照列中存在的值,所以,如果要为两个表添加数据,需要先为主表grade添加数据
由于,student表的外键与grade表的主键关联,因此,为student表添加数据,gid的值,只能是1或者2,不能使用其他的值
查询软件一班有哪些学生
首先,查询软件一班的id,然后根据这个id查询student表中的查询该班级有哪些学生
可以看出,软件一班的id为1
可以看出,软件一班有两个学生
本文已收录于以下专栏:
相关文章推荐
Real example:
/*************************by garcon1986*******************************************...
/*************************************by Jiangong SUN***********************************************...
问题描述:进行update某个表数据的时候,需要关联查询若干表进行筛选过滤.
UPDATE t_order_thirdchild AS t
INNER JOIN t_order_at...
数据库如何给含有外键的表中插入数据?
数据库有三个表格:
Table: orderdetail
id int(11) AI PK
orders_id int(11)
只向表的部分字段添加数据,而其他字段的值为表定义时的默认值
INSERT INTO 表名(字段1,字段2,……)
VALUES(值1,值2,……);参数说明字段1,字段2,……表示数据表中的字段名...
在工作中遇到了一个这样的问题,:更新一个表中的数据, 但是这个表的数据 是根据 多个表 才能查到, 即通过 select 查询出结果后,在通过查询出的结果 修改 或者添加 数据:
1 基础数据:
...
本章目录一、插入insert:方法一:insert标准插入数据写法方法二:set插入数据写法方法三:请看本章最后一个案例二、插入update:方法一:单表更新记录方法二:多表更新记录三、删...
目录数据准备一、单表写入,insert…select案例:获取goods的分类,写入到新的数据表二、多表更新、表关系join案例一:我们使用内链接,链接goods数据表和goods_two数据表,然后...
将要存储的信息分类存储在不同的表中,不同的表之间通过主键和外键关联,这样就构成了关系型数据库。
例如,建立两个表,一个存储供应商信息,另外一个存储产品信息。vendors表包含供应商信息,每个供应商占...
1、多表关系多表关系1、一对多/多对一:
在多的一方加入另一方的外键2、多对多: 使用中间表,分别引用两方的ID
如下图:学生s1有两个老师,而老师t1,有两个学生t1,t2对应关系如下
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)MySQL主外键表关联表数据的同时删除_数据库技术_Linux公社-Linux系统门户网站
你好,游客
MySQL主外键表关联表数据的同时删除
来源:Linux社区&
作者:huanghualiang
今天做了实验,要求将满足某个条件的主表和相关联的几个子表的数据全部删除,其实这个要求很简单,如果子表在创建外键的时候指定了ON DELETE CASCADE,则直接从主表中删除相关记录,子表中数据也会一起删除。但是现在的子表外键创建时候没有加此语句,如何来实现呢?
条件:p(父表)没有ON DELETE CASCADE
c(子表)&&
mysql& delete a,b from p a,c b where a.id=b.
ERROR ): Cannot delete or update a parent row: a foreign key constraint fails (`hhl`.`c`, CONSTRAINT `FK_P_ID` FOREIGN KEY (`id`) REFERENCES `p` (`id`))
+----------+------------+------------------------------------------+
| Query_ID | Duration | Query |
+----------+------------+------------------------------------------+
| 1 | 0. | delete a,b from p a,c b where a.id=b.id |
| 2 | 0. | delete a,b from p a,c b where a.id=b.id |
+----------+------------+------------------------------------------+
mysql& show profile for query 2 ;
+--------------------------+----------+
| Status | Duration |
+--------------------------+----------+
| starting | 0.000314 |
| checking permissions | 0.000026 |
| checking permissions | 0.000014 |
| checking permissions | 0.000009 |
| checking permissions | 0.000010 |
| init | 0.000033 |
| Opening tables | 0.000082 |
| System lock | 0.000047 |
| init | 0.000050 |
| deleting from main table | 0.000016 |
| optimizing | 0.000019 |
| statistics | 0.000056 |
| preparing | 0.000042 |
| executing | 0.000054 |
| Sending data | 0.005026 |
| end | 0.000050 |
| query end | 0.003456 |
| closing tables | 0.000143 |
| freeing items | 0.003430 |
| logging slow query | 0.000047 |
| cleaning up | 0.000021 |
+--------------------------+----------+
21 rows in set (0.00 sec)
看出上面没有删除子表的操作。
mysql& delete a,b from c a,p b where a.id=b.
Query OK, 6 rows affected (0.04 sec)
from 后面 子表在前,删除成功!!
mysql& show profile for query 3 ;
+--------------------------------+----------+
| Status | Duration |
+--------------------------------+----------+
| starting | 0.000307 |
| checking permissions | 0.000019 |
| checking permissions | 0.000017 |
| checking permissions | 0.000009 |
| checking permissions | 0.000010 |
| init | 0.000021 |
| Opening tables | 0.000091 |
| System lock | 0.000036 |
| init | 0.000047 |
| deleting from main table | 0.000016 |
| optimizing | 0.000125 |
| statistics | 0.000084 |
| preparing | 0.000042 |
| executing | 0.000013 |
| Sending data | 0.000572 |
| deleting from reference tables | 0.000103 |
| end | 0.000015 |
| Waiting for query cache lock | 0.000009 |
| end | 0.000010 |
| Waiting for query cache lock | 0.000008 |
| end | 0.000160 |
| end | 0.000022 |
| query end | 0.030033 |
| closing tables | 0.000081 |
| freeing items | 0.001465 |
| logging slow query | 0.000052 |
| cleaning up | 0.000011 |
+--------------------------------+----------+
27 rows in set (0.00 sec)
另一种方式: 先删除最外层的子表,一层一层向里删除,最后删除父表。
相关资讯 & & &
& (08/01/:58)
& (12/13/:37)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款MySql二(多表关系和操作) - CSDN博客
MySql二(多表关系和操作)
1、多表关系
1、一对多/多对一:
在多的一方加入另一方的外键
2、多对多: 使用中间表,分别引用两方的ID
如下图:学生s1有两个老师,而老师t1,有两个学生t1,t2对应关系如下
3、一对一:
两个表中有关系的记录id一致
在一方加入 另一方的外键
在另一方加入外键
2、外键和外键完事性约束
外键能够使多表关联,起到联合查询使用。外键的完事性关系到查询数据的完整性。外键的修改和删除可能对别的表产生影响,因此要对外键进行约束。比如当我们删除第二个表中计算机的时候,第一个表中有对它的引用,造成表的不完整。
下面两张表
1、增加一个外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键标识 FOREIGN KEY (表中字段) REFERENCES 表名(表中字段);
ALTER TABLE `t_student` ADD CONSTRAINT `fk_sclass` FOREIGN KEY (`sclass`) REFERENCES `t_teacher`(`sclass`);
2、删除一个外键约束
ALTER TABLE 库名.表名 DROP FOREIGN KEY 外键名;
ALTER TABLE `student`.`t_student` DROP FOREIGN KEY `fk_sclass`;
3、多表查询
1、笛卡尔积:把两表的列合并,很多无效数据。
SELECT * FROM t_student,t_
select * from t_student,t_teacher
where t_student.sclass = t_teacher.
左外链接:左外连接就是在左边信息显示全的情况下与右边的表链接。能连接上就显示右边的信息,连接不上显示左这表的信息。
INSERT INTO t_student(sid,sname,sage,sclass)
VALUES('0011','s11',20,NULL) ;
假如在t_student表中有一个学生专业的空。那么如果有内链接,这个同学信息应该查询不到。因此有了,左外连接和右外连接
右外连接与左外连接相似
当一个查询是另一个查询的条件时,称之为子查询。
comparison 一个表达式及一个比较运算符,将表达式与子查询的结果作比较。
expression 用以搜寻子查询结果集的表达式。
sqlstatement SELECT 语句,遵从与其他 SELECT 语句相同的格式及规则。它必须括在括号之中。
示例1 :全部单价比任何以 25% 或更高的折扣卖出的产品高的产品:
SELECT * FROM Products
WHERE UnitPrice & ANY
(SELECT UnitPrice FROM OrderDetails
WHERE Discount &= .25);
示例2、查出年龄大于s2的学生
SELECT * FROM t_student WHERE sage&= (SELECT sage FROM t_student WHERE sname='s2');
查询结果:
本文已收录于以下专栏:
相关文章推荐
1、MySQL概述MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最...
nysql多表关联及左右连接、全相乘简单介绍
昨天在自己做的一个系统中使用mysql,折腾了半天始终无法建立外键,通过查找文档最终将问题解决,原来mysql中默认建立的表所使用的存储引擎为MyISAM类型,在这种类型的table中建立...
主表,从表,关联表,父表,子表
博客分类:
DataBase Design
在数据库设计中,Hibernate,iBatis等OR...
说起前端框架,我个人主张有框架不如无框架,这个观点要先从框架和库的区别说起。
  我所理解的库,解决的是代码或是模块级别的复用或者对复杂度的封装问题;而框架,更多的是对模式级别的复用和对程序组织...
本文实现cookie的自动获取,及cookie过期自动更新。
社交网站中的很多信息需要登录才能获取到,以微博为例,不登录账号,只能看到大V的前十条微博。保持登录状态,必须要用到Cookie。以登录w...
mysql相互关联的表之间存在一对一,一对多(多对一),多对多的关系。
1,一对一的关系
这种关系即多个表具有相同的主键,实际中用的并不多,因为完全可以将这种关系的合并为同一张表。
2,一对多(多对一...
非常感谢你能看到这篇文章,也希望你能继续看下去……
关注公众号
在公众号里回复“”秘密“”两个字
http://task.csdn.net/m/task/home?task_id=398 领取奖励
提示:根据公众号里的自动回复,完成...
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 mysql建库建表建约束 的文章

 

随机推荐