SQL 约束,事务,触发器,存储引擎,多表查询

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介:

SQL约束

SQL约束主要有以下几种:

NOT NULL: 用于控制字段的内容一定不能为空(NULL)。    

UNIQUE: 控件字段内容不能重复,一个表允许有多个 Unique 约束。

PRIMARY KEY:也是用于控件字段内容不能重复,但它在一个表只允许出现一个。

FOREIGN KEY: FOREIGN KEY 约束用于预防破坏表之间连接的动作,FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

CHECK: 用于控制字段的值范围。

DEFAULT: 用于设置新记录的默认值。

j_0012.gif用法用例:

1、not null : 用于控制字段的内容一定不能为空(NULL)。      用法 :

1
2
3
4
5
CREATE TABLE MyTable(    
     ID VARCHAR(16) NOT NULL,
      NAME VARCHAR (32) NOT NULL,
      ...
);

2、Unique :控件字段内容不能重复,一个表允许有多个 Unique 约束。

1
2
3
4
5
CREATE TABLE MyTABLE(
     ID VARCHAR(16) NOT NULL UNIQUE,
     NAME VARCHAR(32) NOT NULL,
     ...
);

  在Sql Server、 My Sql 支持的添加 Unique 语法:可同时添加几个字段为约束 如: unique (id,name)     

1
2
3
4
5
6
CREATE TABLE MyTable(
     ID VARCHAR(16) NOT NULL,
     NAME VARCHAR(32) NOT NULL,
     UNIQUE(ID,NAME),
     ...
);

3、Primary Key :也是用于控件字段内容不能重复,但它在一个表只允许出现一个。    
      在Sql Server、Orcale、MS Access 支持的添加Primary Key语法:

1
2
3
4
5
6
7
CREATE TABLE MyTable(
     ID VARCHAR(16) NOT NULL,
     NAME VARCHAR(32) NOT NULL,
     ...
     PRIMARY KEY(ID),
     ...
)

4、Foreign Key :FOREIGN KEY 约束用于预防破坏表之间连接的动作,FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。 

1
2
3
4
5
6
7
CREATE TABLE MyTable1(
     ID VARCHAR(16) NOT NULL,
     NAME VARCHAR(32) NOT NULL,
     ...
     PRIMARY KEY(ID),FOREIGN KEY(ID) REFERENCES MyTable2(ID);
     ...
)

 请注意,"MyTable1" 中的 "Id" 列指向 "MyTable1" 表中的 "Id" 列。

"MyTable2" 表中的 "ID" 列是 "MyTable2" 表中的 PRIMARY KEY。

"MyTable1" 表中的 "Id" 列是 "MyTable1" 表中的 FOREIGN KEY。


5、Check :用于控制字段的值范围。

1
2
3
4
5
6
7
8
CREATE TABLE MyTable(
     ID VARCHAR(16) NOT NULL,
     NAME VARCHAR(32) NOT NULL,
     UNIQUE(ID,NAME),
     PRIMARY KEY(ID),
     CHECK(ID > 0),
     ...
);

6、Default :用于设置新记录的默认值。

1
2
3
4
5
6
7
CREATE TABLE MyTable(
     ID VARCHAR(16) NOT NULL,
     NAME VARCHAR(32) NOT NULL,
     CITY VARCHAR(32) DEFAULT  'BEIJING' ,
     PRIMARY KEY(ID),
     ...
);


SQL事务

1. 概念

事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。

2. 事务属性
事务4大属性:

  • 原子性(Atomicity): 事务是一个完整的操作。

  • 一致性(Consistency):当事务完成时,数据必须处于一致状态。

  • 隔离性(Isolation): 对数据进行修改的所有并发事务是彼此隔离的。

  • 持久性(Durability): 事务完成后,它对于系统的影响是永久性的。

3. 创建事务
T-SQL中管理事务的语句:

  1. 开始事务: begin transaction

  2. 提交事务:commit transaction

  3. 回滚事务: rollback transaction


SQL触发器

1. 概念及作用

  触发器属于一种特殊的存储过程,可以在其中包含复杂的SQL语句。触发器与存储过程的区别在于触发器能够自动执行并且不含参数。通常可以在触发器内编写一段自动执行的程序,用于保证数据操作的完整性,从而扩展了对默认值,约束和规则的完整性检查。对表进行包括填加数据,删除数据,更新数据中的一种或多种操作时,触发器就会自动执行。

2. 使用触发器的主要优点

  1. 触发器是自动执行的,在数据库中定义了某个对象后,或对表中的数据做了某种修改后立即被激活;

  2. 触发器可以实现比约束更复杂的完整性要求,比如CHECK约束中不能引用其他表中的列,而触发器可以引用;CHECK约束只是由逻辑符号连接的条件表达式,不能完成复杂的逻辑判断功能;

  3. 触发器可以根据表数据修改前后的状态,根据其差异采取相应的措施;

  4. 触发器可以防止恶意的或错误的INSERT,UPDATE和DELETE操作。

3. 触发器的种类

SQL Server 2008提供三种类型的触发器:DML 触发器, DDL 触发器, DDL 触发器和登录触发器。

不做详细介绍


SQL存储引擎

  MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。


  存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。

  在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。

MySQL有多种存储引擎(目前不做详细介绍):

MyISAMInnoDBMERGEMEMORY(HEAP)BDB(BerkeleyDB)EXAMPLEFEDERATEDARCHIVECSVBLACKHOLE


参考: 

《数据库原理及应用教程 第三版》----------------------------------------陈志泊,王春玲等



本文转自 七十七快 51CTO博客,原文链接:http://blog.51cto.com/10324228/1837099

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
SQL 数据库 数据安全/隐私保护
SQL Server数据库Owner导致事务复制log reader job无法启动的解决办法
【8月更文挑战第14天】解决SQL Server事务复制Log Reader作业因数据库所有者问题无法启动的方法:首先验证数据库所有者是否有效并具足够权限;若非,使用`ALTER AUTHORIZATION`更改为有效登录名。其次,确认Log Reader使用的登录名拥有读取事务日志所需的角色权限。还需检查复制配置是否准确无误,并验证Log Reader代理的连接信息及参数。重启SQL Server Agent服务或手动启动Log Reader作业亦可能解决问题。最后,审查SQL Server错误日志及Windows事件查看器以获取更多线索。
|
3月前
|
SQL 数据库
如何应用SQL约束条件?
【10月更文挑战第28天】如何应用SQL约束条件?
116 11
|
3月前
|
SQL 存储 Oracle
sql约束条件
【10月更文挑战第28天】sql约束条件
61 8
|
4月前
|
SQL 存储 数据库
SQL学习一:ACID四个特性,CURD基本操作,常用关键字,常用聚合函数,五个约束,综合题
这篇文章是关于SQL基础知识的全面介绍,包括ACID特性、CURD操作、常用关键字、聚合函数、约束以及索引的创建和使用,并通过综合题目来巩固学习。
101 1
|
3月前
|
SQL Oracle 关系型数据库
[SQL]事务
本文介绍了事务处理的基本概念,包括事务的四大特性(原子性、一致性、隔离性、持久性)及生命周期。文章还详细解释了事务的保存点、四种事务隔离级别及其异常读现象,并提供了设置事务隔离级别的方法。最后,作者建议读者深入学习相关理论以更好地理解事务隔离级别。
68 0
|
4月前
|
数据库
SQL_语句常见的操作创建,使用,删除表和表级约束
SQL_语句常见的操作创建,使用,删除表和表级约束
47 0
|
5月前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
265 0
|
6月前
|
SQL 监控 供应链
|
6月前
|
SQL 存储 数据管理
深入理解SQL中的触发器
【8月更文挑战第31天】
184 0
|
7月前
|
SQL Oracle 关系型数据库
CREATE TABLE 时的 SQL FOREIGN KEY 约束
【7月更文挑战第24天】CREATE TABLE 时的 SQL FOREIGN KEY 约束。
65 5