sql基础知识-----主外键、参照完整性
2016-05-04 17:06
471 查看
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="font-size:18px;">1.主键、外键------参照完整性</span></span>
表A 的主键是表B 的中的字段,这个字段就是表B 的外键,而参照完整性也是由此而来。
其实很好理解,字需要去建两张表,按照上面的条件
<span style="font-size:18px;">CREATE TABLE Stores ( StoreCode char(4) NOT null primary key, Name varchar(40) not null , Address varchar(40) null, City varchar(40) not null, State char(2) not null, zip char(5) not null ); CREATE TABLE Sales ( OrderNumber varchar(20) not null, StoreCODE CHAR(4) NOT NULL FOREIGN KEY REFERENCES Stores(StoreCode), OrderDate date not null, Quantity int not null , terms varchar(12) not null, TitleID int NOT NULL, ); INSERT INTO Stores VALUES ('TEST ','TEST Store','1234 Anywhere street','here','NY','00319'); INSERT INTO Stores (StoreCode ,Name ,City ,State ,zip ) values ('TET2','Test Store ','Here','NY ','00319');</span>代码到这里是没错的,可以运行!
但是可以发现,这两个表有一列共同的数据,不仅仅是列名相同,连列中的数据也是相同的,那么如果列中的数据不同会出现上面情况呢?下面我们来看一下:
<span style="font-size:18px;">INSERT INTO Sales values('TESTORDER','TET3',GETDATE(),10,'NET 30 ',1234567)</span>我们向从表Sales 中在加入一行数据,发现报如下错误了:
<span style="font-size:18px;">消息 547,级别 16,状态 0,第 1 行 INSERT 语句与 FOREIGN KEY 约束"FK__Sales__StoreCODE__04E4BC85"冲突。该冲突发生于数据库"DatabasePractice",表"dbo.Stores", column 'StoreCode'。 语句已终止。 </span>这里我们不难发现:因为主表Stores 中没有我们新加的这一行数据中的此表的外键,所以就报错了,这就是数据的参照完整性。
相关文章推荐
- SQL 养成一个好习惯是一笔财富
- 数据库事务的隔离级别
- java连接oracle数据库简单实例
- java读取Excel数据,然后写入到txt文件,并批量保存到oracle数据库中
- 谈谈如何从本质上理解sql语句, 存储过程,ORM之间的联系和取舍
- SYBASE & ORACLE自增主键
- pycharm中的Django操作数据库
- MYSQL必知必会读书笔记 第十和十一章 使用函数处理数据
- 数据库设计三大范式
- MYSQL必知必会读书笔记 第九章 使用正则表达式过滤数据
- java批量插入数据到Oracle
- 11个重要的数据库设计规则
- PHP7安装Memcache+Memcached缓存加速WordPress教程
- sql 传递多个ID
- oracle 截取字符(substr),检索字符位置(instr)
- oracle数据表结构和存储过程导出为word文档
- MYSQL必知必会读书笔记 第八章 使用通配符进行过滤
- 数据库原理
- MySQL 5.7.12源码安装实例
- 数据库查询(主键作为条件)