数据库(三)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 数据完整性是数据库管理中的关键概念,确保数据的准确和一致。主要包括: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 
相关文章
|
7月前
|
人工智能 API UED
即刻拥有DeepSeek-R1满血版
阿里云推出基于R1满血版DeepSeek的AI解决方案,助您高效学习与工作!访问专属链接进入详情页,按指引免费体验。具体步骤包括:注册阿里云账号、开通百炼模型服务、获取API-KEY、配置Chatbox客户端并测试对话功能。通过简单操作,即可调用DeepSeek-R1模型,实现智能化交互。快速上手,开启AI新体验!
400 7
|
SQL 关系型数据库 MySQL
MySQL中外键的使用及外键约束策略
这篇文章讨论了MySQL中使用外键的重要性,包括外键的概念、不使用外键可能导致的问题、如何设置外键约束以及不同的外键约束策略(如CASCADE和SET NULL),并通过示例演示了这些概念。
MySQL中外键的使用及外键约束策略
|
11月前
|
运维 测试技术 持续交付
代码管理的艺术:你的团队是否还在为 Git 分支管理头疼?
本文回顾了作者从2~3人初创团队到百人技术团队的经历,分享了代码管理工具从无到SVN再到Git的演变。重点介绍了Git Flow和GitHub Flow两种常用的Git分支管理模型,分析了它们的适用场景和优缺点。Git Flow适合中大型项目,而GitHub Flow则更适合小型团队和Web应用开发。
342 0
|
文字识别 安全 API
iOS Crash 治理:淘宝VisionKitCore 问题修复(下)
iOS Crash 治理:淘宝VisionKitCore 问题修复(下)
414 0
|
SQL 监控 供应链
|
存储 程序员 C语言
堆和栈之间有什么区别
【9月更文挑战第1天】堆和栈之间有什么区别
2751 0
|
机器学习/深度学习 算法 数据挖掘
|
机器学习/深度学习 数据采集 算法
Python技术应用案例——基于机器学习的信用评分模型
【2月更文挑战第11天】机器学习作为当下最热门的技术之一,已经在各个领域获得了广泛的应用。本文将介绍一个基于Python机器学习算法的信用评分模型,通过对数据集的处理和模型训练,实现对客户信用评级的自动化判定,提高了银行的工作效率和准确性。
949 4
|
Dart 数据处理 开发者
【Flutter前端技术开发专栏】Flutter是谷歌的开源移动框架,以其高性能和跨平台能力受开发者青睐。
【4月更文挑战第30天】Flutter是谷歌的开源移动框架,以其高性能和跨平台能力受开发者青睐。本文聚焦Flutter开发关键知识点:1) Dart语言和Flutter框架基础,如Widget和State;2) 路由管理,包括基本和命名路由,以及路由传值;3) 使用http、dio等库进行网络请求和数据处理;4) ThemeData定义应用主题,实现样式主题化。掌握这些技能将提升Flutter开发效率和应用质量。
301 0
|
机器学习/深度学习 TensorFlow API
ModelScope部署到trt-llm
ModelScope部署到trt-llm
457 3
下一篇
oss云网关配置