SQL数据完整性
1.数据的完整性
1. 什么是数据的完整性
保证用户输入的数据保存到数据库中是正确的
2.添加数据完整性
在创建表的时候给表添加约束
3.完整性分类
实体完整性、域完整性、引用完整性
2.完整性的分类
1.实体完整性
表中的一行(一条记录)代表一个实体 (entity)
实体完整性的作用:标记每一行数据不重复。行级约束
约束类型:
主键约束(primary key):
每个表中要有一个主键,数据唯一,且不能为null
创建主键的方式:
create table pe(ID BIGINT PRIMARY key, name VARCHAR(50));
create table pe2(ID BIGINT, name VARCHAR(50), PRIMARY KEY(ID));
联合主键:两个字段数据同时相同时,才违反联合主键约束。
create table stu2(ID BIGINT,snum BIGINT, name VARCHAR(50), PRIMARY KEY(ID, snum));更改表结构,设置主键:
ALTER TABLE student ADD CONSTRAINT PRIMARY KEY(sid);
唯一约束 :
- 指定列的数据不能重复,可以为空值
CREATE TABLE table1(id int PRIMARY KEY, name VARCHAR(50) UNIQUE);name不能重复
自动增长列
指定列的数据自动增长,即使数据删除,依然继续增长
CREATE TABLE table1(
id int PRIMARY KEY auto_increment,
name varchar (20) UNIQUE
);
2.域完整性
使用:限制此单元格的数据正确,不对照此列的其他单元格比较
域,代表当前单元格
域完整性约束:
数据类型:数值、日期、字符串
非空约束(not null)
CREATE TABLE table1(id int PRIMARY KEY auto_increment,name varchar (20) UNIQUE not null);-- 默认值约束 (default)
CREATE TABLE table1(id int PRIMARY KEY auto_increment,name varchar (20) UNIQUE not null,sex char(1) default '男')
-- 设置默认值为 男
3. 参照完整性
什么是参照完整性
- 指表与表之间的一种对应关系
- 通常情况下可以通过设置两张表之间的主键、外键关系,或者编写两表的触发器来实现。
- 有对应参照完整性的两张表,在对他们进行数据插入、更新、删除的过程中,系统都会将被修改表格与另一张对应表格继续对照,从而阻止一些不正确的数据操作
数据库的主键和外键类型要一致
两个表必须是 InnoDB 类型
设置参照完整性后,外键当中的内值,必须得是主键当中的内容
-- 设置外键
CREATE TABLE score(
sid int PRIMARY KEY score int,
CONSTRAINT sc_st_fk FOREIGN KEY(sid) REFERENCES stu(id)
);
-- score 设置外键,score 里的sid 关联 stu 里的 id
-- 设置外键
alter table score add CONSTRAINT sc_st_fk FOREIGN KEY(sid) REFERENCES stu(id);
-- 多对多关系创建
CREATE TABLE teach(tid int PRIMARY KEY, name VARCHAR(50));
CREATE TABLE stu(sid int PRIMARY KEY, name VARCHAR(50));
CREATE TABLE tea_stu_rel(tid int, sid int);
ALTER TABLE tea_stu_rel ADD CONSTRAINT FOREIGN KEY(tid) REFERENCES teach(tid);
ALTER TABLE tea_stu_rel ADD CONSTRAINT FOREIGN KEY(sid) REFERENCES stu(sid);
为什么要将表拆分:避免冗余数据
SQL数据完整性的更多相关文章
- 你真的会玩SQL吗?三范式、数据完整性
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- SQL Server-数据库架构和对象、定义数据完整性(二)
前言 本节我们继续SQL之旅,本节我们如题来讲讲一些基本知识以及需要注意的地方,若有不妥之处,还望指出,简短的内容,深入的理解,Always to review the basics. 数据库架构和对 ...
- SQL server 数据库的数据完整性
存储在数据库中的所有数据值均正确的状态.如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性. 详细释义 数据库中的数据是从外界输入的,而数据的输入由于种种原因,会发生输入无效或 错误信息 ...
- SQL Server-数据库架构和对象、定义数据完整性
前言 本节我们继续SQL之旅,本节我们如题来讲讲一些基本知识以及需要注意的地方,若有不妥之处,还望指出,简短的内容,深入的理解,Always to review the basics. 数据库架构和对 ...
- SQL Server 数据完整性的实现——约束
SQL Server数据库采用的是关系数据模型,而关系数据模型本身的优点之一就是模型本身集成了数据完整性.作为模型一部分而实施的数据完整性(例如在创建数据表时的列属性定义)称作为声明式(Declara ...
- mysql使用基础 sql语句与数据完整性(二)
二.DML:Data Manipulation Language 数据操作语言 作用:操作表中的数据的. 关键:INSERT UPDATE DELETE 注意:日期或字符串.字符要使用单引号引起来. ...
- SQL Server 基础 02 确保数据完整性
本章总结目的: 为了巩固 约束.事务! 约 束 使用数据库约束就是保证数据库的完整性的方法,SQL Server 涉及的完整性有三个: 1.实体完整性 : (不能为空且重复,即唯一的,例如身份证 ...
- SQL Server 第四章 存储过程(Procedure),触发器(Trigger),数据完整性(Data Integrity)
use electric go --变量 --局部变量的声明格式 --declare @局部变量名 数据类型 --局部变量赋值 declare @littlepage int )) ) select ...
- T-SQL :SQL Server 定义数据完整性 6大约束(三)
1.创建一客户张表 IF OBJECT_ID('dbo.Employees', 'U') IS NOT NULL DROP TABLE dbo.Employees; CREATE TABLE dbo. ...
随机推荐
- [linux]解决DNS配置重启丢失
DNS配置重启丢失 每次重启后都修改DNS配置文件 /etc/resolv.conf从网上得知 /etc/resolv.conf中的DNS配置是从/etc/resolvconf/resolv.conf ...
- CMD 模块定义规范【转】
在 Sea.js 中,所有 JavaScript 模块都遵循 CMD(Common Module Definition) 模块定义规范.该规范明确了模块的基本书写格式和基本交互规则. 在 CMD 规范 ...
- Problem E: 积木积水 ——————【模拟】
Problem E: 积木积水 Description 现有一堆边长为1的已经放置好的积木,小明(对的,你没看错,的确是陪伴我们成长的那个小明)想知道当下雨天来时会有多少积水.小明又是如此地喜欢二次元 ...
- Javascript 对象Object
1.new构造函数法 2.对象字面量 对象字面量很好理解,使用key/value的形式直接创建对象,简洁方便. 这种方式直接通过花括号将对象的属性包起来,使用key/value的方式创建对象属性, ...
- 使用python简单创建一个用户和商城小程序
整体思路: 1.用户功能:购买.显示余额.列表清单.输入 2.商家功能:修改和添加商品 创建两个接口: 用户: #Author: Gordon #读取文档,生成goodsf = open('goods ...
- 位运算(5)——Power of Two
判断一个整数是不是2的幂. 关键是弄明白2的幂的二进制形式只有一个1. public class Solution { public boolean isPowerOfTwo(int n) { int ...
- 前端之CSS——属性和定位
一.字体属性 1.font-size(字体大小) p { font-size: 14px; } font-size 属性可设置字体的尺寸. px:像素,稳定和精确 %:把 font-size 设置为基 ...
- SQLAlchemy的使用---M2M多对多关系
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, Stri ...
- css浮动布局小技巧
父元素如何围住浮动的子元素的三种办法: 一.为父元素应用overflow:hidden. overflow真正用途是防止包含元素被大的内容撑开,设定了宽度之后,包含元素将超过容器的内容减掉:而它还有另 ...
- 有关background 背景图片不能显示
首先有两个概念 绝对路径,从根目录为起点到你所在的目录: 相对路径,从一个目录为起点到你所在的目录. 例如: ┍ A文件夹 C -| ...