sql example 3 -- foreign_key

sql example 3 – foreign_key

sql example 3 – foreign_key

优点:
保持数据一致性, 完整性
实现一对一或者一对多的关系

要求:
必须使用相同的存储引擎 – InnoDB /etc/my.cnf
数字长度, 是否是 unsigned 的属性相同
字符长度可以不同
必须有索引, 没有的话自动创建

drop table if exists test1;
create table test1 (
id int auto_increment primary key,
name varchar(20) NOT NULL
);
drop table if exists test2;
create table test2 (       # error 150, 错误 类型不同
id2 smallint primary key auto_increment,
name2 varchar(10) not null,
foreign key (id2) references test1 (id)
);
drop table if exists test2;
create table test2 (
id2 int auto_increment primary key,
name2 varchar(10) not null,
foreign key (id2) references test1 (id)
);

父表: test1
子表: test2

foreign key 默认: 父表和子表的行为

on delete -—

cascade 从父表删除或者更新且 自动删除或者更新子表 中匹配的行
set null 从父表删除或者更新行, 并设置子表中的外键列为 NULL
restrict 拒绝对父表的删除或者更新操作
no action 标准 sql 关键字, 和 restrict (mysql 特有) 相同 (是默认值)
create table test3 (
id3 int primary key auto_increment,
name3 varchar(10) not null,
foreign key (id3) references test1 (id) on delete cascade
);
drop table test3, test2, test1;
时间: 2024-11-05 13:52:47

sql example 3 -- foreign_key的相关文章

python:sql建表语句转换为json

第一种sql格式: 1 CREATE TABLE 2 prpcitem_car 3 ( 4 proposalno CHAR(22) NOT NULL, 5 itemno DECIMAL(8,0) NOT NULL, 6 riskcode CHAR(3) NOT NULL, 7 insuredtypecode CHAR(2), 8 carinsuredrelation CHAR(1), 9 clausetype CHAR(3), 10 licenseno VARCHAR(20), 11 licen

INNER JOIN与LEFT JOIN在SQL Server的性能

我创建了INNER JOIN 9桌,反正需要很长的(超过五分钟).所以,我的民歌改变INNER JOIN来LEFT JOIN LEFT JOIN的性能较好,在首次尽管我所知道的.之后我变了,查询的速度显著提高. 我想知道为什么LEFT JOIN的速度比INNER JOIN? 我的样子如下:SELECT * FROM A INNER JOIN B ON ... INNER JOIN C ON ... INNER JOIN D因此没有 更新: 这是我的简单架构的. FROM sidisaleshdr

MySQL and Sql Server:Getting metadata using sql script (SQL-92 standard)

MySQL: use sakila; -- show fields from table_name; -- show keys from table_name; SELECT `REFERENCED_TABLE_NAME` FROM `information_schema`.`KEY_COLUMN_USAGE` WHERE `TABLE_NAME` = '[table_containing_foreign_key]' AND `COLUMN_NAME` = '[foreign_key]'; SH

SQL查询字段添加括号报错:Operand should contain 1 column(s)

SQL语句:查询连个字段的信息 SELECT (menu_id,menu_captions) FROM bsdb.menulist a WHERE a.menu_id like ('2_'); 然后,因为这是在存储过程中的一个语句所以,在执行存储过程的时候编译不会报错,但是执行的时候却汇报错:Operand should contain 1 column(s):原因不好解释: 下面是官方发解释(MYSQL):https://dev.mysql.com/doc/refman/5.0/en/row-

SQL Server 2008的MSSQLSERVER 请求失败或服务未及时响应

我的是SQL server 2008R2, 以前可以正常的启动SQL server(SQLEXPRESS).SQL server(MSSQLSERVER),有几天没有打开了,就在昨天 开机之后就无法启动MSSQLSERVER了,提示的信息如下图: 快速解决办法如下: 第一步:打开事件查看器,查看windows日志,点击应用程序,查看windows错误日志 http://product.pconline.com.cn/itbk/software/win8/1211/3060037.html 第二步

【Kettle】4、SQL SERVER到SQL SERVER数据转换抽取实例

1.系统版本信息 System:Windows旗舰版 Service Pack1 Kettle版本:6.1.0.1-196 JDK版本:1.8.0_72 2.连接数据库 本次实例连接数据库时使用全局变量. 2.1 创建新转换:spoon启动后,点击Ctrl+N创建新转换 2.2 在新转换界面中,右键点击DB连接,系统会弹出[数据库连接]界面. windows系统环境下,可用${}获取变量的内容. 说明: 连接名称:配置数据源使用名称.(必填) 主机名称:数据库主机IP地址,此处演示使用本地IP(

sql常用格式化函数及字符串函数

一.常用格式化函数 1.日期转字符串 select to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS') //2017-09-18 22:41:50 YYYY:年(4和更多位) MM:月份号(01-12) DD:一个月里的日(01-31) HH24:一天的小时数(00-23) MI:分钟(00-59) SS:秒(00-59) 2.字符串转日期 select to_date('2017-09-18','YYYY-MM-DD') //2017-09-

Bootstrap + AngularJS+ Ashx + SQL Server/MySQL

去年年底12月,为适应移动端浏览需求,花了1个月时间学习Bootstrap,并将公司ASP网站重构成ASP.NET. 当时采取的网站架构: Bootstrap + jQuery + Ashx + SQL Server 时间紧,没人带,只能硬着头皮,最后如期完成,但是也遗留了几个问题. 问题: 1.页面查询条件太复杂,太多的checkbox,jQuery操作DOM虽然方便,但是组合成json提交给后端还是比较麻烦,有没有天然支持json的前端框架或者脚本语言? html控件做的任何修改,都自动保存

Spark SQL 之 Join 实现

原文地址:Spark SQL 之 Join 实现 Spark SQL 之 Join 实现 涂小刚 2017-07-19 217标签: spark , 数据库 Join作为SQL中一个重要语法特性,几乎所有稍微复杂一点的数据分析场景都离不开Join,如今Spark SQL(Dataset/DataFrame)已经成为Spark应用程序开发的主流,作为开发者,我们有必要了解Join在Spark中是如何组织运行的. SparkSQL总体流程介绍 在阐述Join实现之前,我们首先简单介绍SparkSQL