数据库(三)

简介: 数据完整性是数据库管理中的关键概念,确保数据的准确和一致。主要包括:1. 实体完整性:通过主键(唯一且非空)来标识表中的每条记录,如创建`test2`表时设置`n1`为主键。2. 创建表`test3`时,`n1`和`n2`组合成为主键,确保多字段的唯一性。3. 唯一约束:用于保证列值的唯一性,如在`test1`中添加对`n2`的唯一约束,或创建`test4`时`n1`和`n2`的组合值唯一。4. 引用完整性:通过外键约束实现,如`emp`表的`dept_id`引用`dept`表的`id`,确保数据间的关联合法性。外键可以有级联操作,如`on delete cascade`和`o

数据完整性

  1. 实体完整性
  1. 主键(主码):唯一且非空
  1. create table test1

(n1 int,

n2 int,

n3 int);

允许出现重复元组

  1. 创建 test2,并将n1设为主键

//约束的列级形式

Create table test2

(n1 int primary key,

n2 int,

n3 int);

创建主键后,DBMS会自动创建索引

  1. 创建 test3,并将n1,n2设为主键

//约束的表级形式

Create table test3

(n1 int,

n2 int,

n3 int,

primary key(n1, n2));

  1. 给test1表添加主键

Alter table test1

Add 主键的表级形式

  1. 唯一约束(Unique):唯一。唯一约束的用法与主键相同,只需将关键词换成Unique。当创建唯一约束时,系统会自动创建索引
  1. 创建 test4,并要求n1和n2的组合值唯一

Create table test4

(n1 int

n2 int,

n3 int,

Unique(n1, n2));

  1. 给test1的n2属性定义唯一约束

Alter table test1

Add 唯一的表级形式

  1. 唯一索引

Create index 索引名 on 表名(属性名列表)

  1. 自增属性
  1. 参照完整性
  1. 员工表的dept_id属性引用部门表的id属性

Alter table 表名

Add 外键的表级形式

alter table emp add FOREIGN key (dept_id) REFERENCES dept(id);

  1. 列级形式

create table emp0

(id int,

   dept_id int FOREIGN KEY REFERENCES dept(id) ,

     salary NUMERIC(5,2));

  1. 当创建外键后,被参照表的删除、修改受限制,添加不受限;参照表的修改、添加受限,删除不受限

create table emp0

(id int,

dept_id smallint,

FOREIGN KEY (dept_id) REFERENCES dept(id)

On delete cascade

On update cascade ,

     salary NUMERIC(5,2));

  1. 用户定义完整性
  1. 触发器
  2. Enum,Set
  3. Check(mysql 8.0.16版本之前无效)
  1. Check(条件表达式),条件表达式的写法与查询相同。

create table  stu

  (name varchar(10),

   sex  varchar(1) check(sex in ('男','女')),

   birth datetime,

     join_date datetime);

alter table stu

     add check(name like '张%');

  1. 约束名的定义

Constraint 约束名 约束定义

Constraint pk_emp primary key(id)

Constraint fk_emp foreign key (dept_id) references dept(id)

  1. 删除约束

Alter table  表名

Drop Constraint 约束名

--MySql

--删主键

Alter table  表名

Drop  Primary Key

--删唯一约束

Alter table  表名

Drop index 约束名

--删外键

Alter table  表名

Drop Foreign Key 约束名数据完整性

  1. 实体完整性
  1. 主键(主码):唯一且非空
  1. create table test1

(n1 int,

n2 int,

n3 int);

允许出现重复元组

  1. 创建 test2,并将n1设为主键

//约束的列级形式

Create table test2

(n1 int primary key,

n2 int,

n3 int);

创建主键后,DBMS会自动创建索引

  1. 创建 test3,并将n1,n2设为主键

//约束的表级形式

Create table test3

(n1 int,

n2 int,

n3 int,

primary key(n1, n2));

  1. 给test1表添加主键

Alter table test1

Add 主键的表级形式

  1. 唯一约束(Unique):唯一。唯一约束的用法与主键相同,只需将关键词换成Unique。当创建唯一约束时,系统会自动创建索引
  1. 创建 test4,并要求n1和n2的组合值唯一

Create table test4

(n1 int

n2 int,

n3 int,

Unique(n1, n2));

  1. 给test1的n2属性定义唯一约束

Alter table test1

Add 唯一的表级形式

  1. 唯一索引

Create index 索引名 on 表名(属性名列表)

  1. 自增属性
  1. 参照完整性
  1. 员工表的dept_id属性引用部门表的id属性

Alter table 表名

Add 外键的表级形式

alter table emp add FOREIGN key (dept_id) REFERENCES dept(id);

  1. 列级形式

create table emp0

(id int,

   dept_id int FOREIGN KEY REFERENCES dept(id) ,

     salary NUMERIC(5,2));

  1. 当创建外键后,被参照表的删除、修改受限制,添加不受限;参照表的修改、添加受限,删除不受限

create table emp0

(id int,

dept_id smallint,

FOREIGN KEY (dept_id) REFERENCES dept(id)

On delete cascade

On update cascade ,

     salary NUMERIC(5,2));

  1. 用户定义完整性
  1. 触发器
  2. Enum,Set
  3. Check(mysql 8.0.16版本之前无效)
  1. Check(条件表达式),条件表达式的写法与查询相同。

create table  stu

  (name varchar(10),

   sex  varchar(1) check(sex in ('男','女')),

   birth datetime,

     join_date datetime);

alter table stu

     add check(name like '张%');

  1. 约束名的定义

Constraint 约束名 约束定义

Constraint pk_emp primary key(id)

Constraint fk_emp foreign key (dept_id) references dept(id)

  1. 删除约束

Alter table  表名

Drop Constraint 约束名

--MySql

--删主键

Alter table  表名

Drop  Primary Key

--删唯一约束

Alter table  表名

Drop index 约束名

--删外键

Alter table  表名

Drop Foreign Key 约束名

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
|
云安全 安全 网络安全
|
17天前
|
JSON 程序员 数据格式
最新版Notepad++下载、安装、配置保姆级教程(附官网安装包)
Notepad++ 是一款免费开源、轻量快速的 Windows 文本编辑器,支持多标签、语法高亮、代码折叠与宏录制,体积小、启动快、资源占用低,兼容 x64/x32/ARM 架构,是程序员和文字工作者的高效利器。
4136 1
|
16天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
2752 47
|
10天前
|
JavaScript 安全 前端开发
Nodejs Brotli decoder 代码执行漏洞 (CVE-2026-111497)10629
Node.js发布安全更新修复Brotli解码器高危RCE漏洞(CVE-2026-111497),建议受影响版本用户立即升级。
2068 2
|
9天前
|
人工智能 JSON Linux
【保姆级】ComfyUI部署教程(下载+安装+配置+工作流,2026最新)
ComfyUI 是一款开源节点式AI生成工具,支持图像、视频、音频及3D内容创作。通过拖拽连线组合模型加载、提示词、采样等节点,构建可复用、易修改的工作流,兼容SD1.5、SDXL、Flux、Qwen Image等主流模型。
|
13天前
|
Web App开发 人工智能 前端开发
2026 年 AI 浏览器怎么选?Ego Lite、Tabbit、Chrome DevTools MCP 深度对比,开发者到底该用哪个?
2026年AI浏览器选型指南:Ego Lite专注多Agent协同(Mac优先),Tabbit国产首选,原生支持Windows与Codex控制;Chrome DevTools MCP非浏览器而是开发者利器,深度集成Console/Network/Performance调试能力,让AI真正“看懂并验证”前端代码。
1537 3
|
11天前
|
开发者 索引
DeepSeekHarness大肥鱼自带插件市场了?加个地址就能用
Open Plugin Market 是一个开放插件索引平台,收录800+优质DSH插件,支持分类浏览、智能推荐与随机发现。无需安装市场,粘贴索引地址即可一键接入,网页版直访 dshopen.org,助力小开发者被看见。(239字)
2156 1
DeepSeekHarness大肥鱼自带插件市场了?加个地址就能用