SQL server——基础篇之数据完整性
定义:保证数据库中的数据在逻辑上的一致性、正确性和可靠性。
作用:防止无效数据或错误数据进入数据库
数据完整性包括:实体完整性、域完整性和参照完整性
实体完整性
规定表的每一行记录在表中是唯一的
实体完整性的实现方式包括:主键约束、自增约束、唯一约束
- 主键约束(Primary Key,PK)用于识别每一条记录,添加主键【右击>设置主键】或者【 alter table表名 add constraint 约束名 primary key(字段名)】;每个数据表只有一个主键,字段内容不能又重复值且不能为空
- 自增约束(IDENTITIY):【列属性>标识规范】
- 注意:
- 有一定的增长规则
- 只能对整形数据进行设置
- 不能对自有增约束的字段内容进行输入删除
- 通常在整型数据的主键上设置自增约束,每次报错都会有一次自增值
- 唯一约束(Upique):【右击>索引/键>添加】或者【alter table 表名 add constraint 约束名 unique(字段名)】。在一个字段或一组字段中的数据与表中的其他数据想比试唯一的。
注意:主键约束一定是唯一的,而唯一约束不一定是唯一的
域完整性
保证指定列的数据具有正确的数据类型喝有效的数据范围
域完整性的实现方式包括:是否为空、CHECK约束、默认约束
- 是否为空:not null。保证列中所有数据不能为空
- CHECK约束:限制字段值的范围【右击>CHECK约束>添加>表达式】或者【alter table 表名 add constraint 约束名 check(内容)】
- 默认值约束:【列属性>常规>默认值或绑定】或者【alter table 表名 add constraint 约束名 default(默认值) for 字段名】
参照完整性
两表之间的约束,要求一张表的某些列受到另一张表的某列的限制
主表:被参照的表 从表:参照表
主键:主表中被参照的列 外键:从表中的参照列
设置外键:【从表列>右击>关系>添加>表和列规范>设置主键表和外键表>确定】或者【alter table 表名 add constraint 约束名 foreign key(外键字段名) referencese 主表 (关联主键列)】主键表的列名可以和外键表的列名不同)
MYSQL
MySQL不支持检查约束
1.建表时添加约束
CREATE TABLE EMP(
ID INT PRIMARY KEY auto increment, --主键约束,auto increment:主键自动增长(当列是数字类型且是唯一约束)
NAME VACHER(10) NOT NULL UNIQUE, --不为空且唯一,唯一约束
BIRTHDAY DATE NOT NULL, --不为空
SALARY DOUBLE(7,2) NOT NULL, --不为空,非空约束
BONUS DOUBLE(7,2) DEFAULE 0 --如果没有则默认为0,默认约束
)
外键约束
建立两表的数据之间建立链接,保证数据的一致性和完整性
建表时添加约束:CATEATE TABLE 表名(列明 数据类型,...CONSTRAINT 外键名称 FOREIGN KEY 外键列名 REFERNCES 主表列名)
建表后添加约束:alter table 表名 add constraint 约束名 foreign key(外键字段名) referencese 主表 (关联主键列)
2.建表后添加约束
ALTER TABEL 表名 MODIFY 字段名 数据类型 NOT NULL;
3.删除约束
删除非空约束:ALTER TABLE 表名 MODIFY 字段名 数据类型;
删除唯一约束:ALTER TABLE 表名 DROP INDEX 字段名;
删除默认约束:ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;
删除外键约束:ALTER TABEL 表名 DROP FOREIGN KEY 外键名称;
SQL server——基础篇之数据完整性的更多相关文章
- SQL Server 基础 02 确保数据完整性
本章总结目的: 为了巩固 约束.事务! 约 束 使用数据库约束就是保证数据库的完整性的方法,SQL Server 涉及的完整性有三个: 1.实体完整性 : (不能为空且重复,即唯一的,例如身份证 ...
- 【SQL Server】SQL Server基础之存储过程
SQL Server基础之存储过程 阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储 ...
- SQL server基础知识(表操作、数据约束、多表链接查询)
SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...
- 数据库开发基础-SQl Server 基础
SQL Server 基础 1.什么是SQL Server SQL:Structured Query Language 结构化查询语言 SQL Server是一个以客户/服务器(c/s)模式访问.使 ...
- Sql Server 基础知识
Sql Server 基础知识: http://blog.csdn.net/t6786780/article/details/4525652 Sql Server 语句大全: http://www.c ...
- Sql Server 基础语法
来自:http://www.cnblogs.com/AaronYang/archive/2012/04/24/2468093.html Sql Server 基础语法 -- 查看数据表 select ...
- 【目录】sql server 进阶篇系列
随笔分类 - sql server 进阶篇系列 sql server 下载安装标记 摘要: SQL Server 2017 的各版本和支持的功能 https://docs.microsoft.com/ ...
- 【目录】sql server 架构篇系列
随笔分类 - sql server 架构篇系列 sql server 高可用镜像 摘要: 一.什么是数据库镜像 基本软件的高可用性解决方案 快速的故障转移恢复(3秒转移),低硬件成本 基于数据库级别的 ...
- 《SQL Server基础——SQL语句》
SQL Server基础--SQL语句 一.创建和删除数据库: 1.创建数据库(默认化初始值) 格式: CREATE DATABASE 数据库名称 例如: CREATE DATABASE ...
- SQL Server基础之索引
索引用于快速找出在某个列中有某一特定值的行,不使用索引,数据库必须从第一条记录开始读完整个表,直到找出相关的行.表越大,查询数据所花费的时间越多,如果表中查询的列有一个索引,数据库能快速到达一个位置 ...
随机推荐
- go语言学习教程
go语言学习教程 集合了连接go routine.go连接redis.go连接kafka等示例 https://github.com/fastbpmn/go-study TRANSLATE with ...
- mybatis-plus 时间查询
QueryWrapper userquery= new QueryWrapper<>(); user.and(true,wrapper -> wrapper.ge("CRE ...
- 超强大的PS汉化插件Specs 一键尺寸标注
尺寸标注是大多数设计师必不可少的细节工作,特别是在一些特定的设计图中,标注至关重要.大部分设计大大都直接用CAD标注,其实借助插件,PS也是完全可以搞定常见的尺寸标注的. 插件介绍 这是一款超级强大的 ...
- 关于windows更新时间,设置更新时间段
https://jingyan.baidu.com/article/bad08e1eda412f09c85121c6.html https://www.dadighost.com/help/39372 ...
- FileZilla链接centos虚拟机不显示问题
这段时间因为不是很忙,一直想学习一下网络安全方面的技术,准备考个信安中级,网络安全方面经常用到虚拟机,所以及用vm新建虚拟机后,一直发现连不上FileZilla,于是就在网上搜了一下,有一些参考问题, ...
- 读后笔记 -- Python 全栈测试开发 Chapter8:接口测试
8.1 接口测试 1. 市场分布 UI(web.app)自动化:10% 接口自动化:20% 单元测试:70% -- 测开 2. 接口类型: 1)结构划分:模块间(系统间)的接口称为内部接口:系统与第三 ...
- 网络-6 IPV6(上)
一.iPv4与ipv6对比 1.ipv4与ipv6优缺点 1.1 Ipv4与ipv6对比,ipv4中的切片使用的三个字段:identification flags fragment offse ...
- JS——如果数组中的信息存在多个相同的属性,那么则将这些相同的信息放到同一个children中。
var arr = [ {name: '张三', age: 10, sex: '男'}, {name: '李四', age: 10, sex: '男'}, {name: '钱五', age: 11, ...
- iOS线程 - GCD在开发中的常见问题
GCD 在开发中的常见问题 1 - 主线程中调用方法 ① 执行 testONE 后的输出结果:1 5 2 4 3 1 -(void)testONE{ 2 3 // 并发队列 4 dispatc ...
- 爬qqhentai
import requestsfrom bs4 import BeautifulSoupimport timeimport reimport osimport randomagentlist = [& ...