diff --git "a/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\344\272\213\345\212\2412022-09-19.md" "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\344\272\213\345\212\2412022-09-19.md" new file mode 100644 index 0000000000000000000000000000000000000000..aef8a0d0b2a95135d52e831be7e843371e2c75fe --- /dev/null +++ "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\344\272\213\345\212\2412022-09-19.md" @@ -0,0 +1,48 @@ +## 事务 + + + +#### 一、什么是事务 + +**事务( Transaction)由一次或者多次基本操作构成,或者说,事务由一条或者多条 SQL 语句构成。** + +**事务中的所有 SQL 语句是一个整体,共同进退,不可分割,要么全部执行成功,要么全部执行失败。** + + + +#### 二、事务的属性(ACID) + +一般来说,事务具有四个标准属性,分别是原子性(**A**tomicity,或称不可分割性)、一致性(**C**onsistency)、隔离性(**I**solation,又称独立性)、持久性(**D**urability),简称 **ACID**。具体说明如下: + +1、原子性 + 保证任务中的所有操作都执行完毕;否则,事务会在出现错误时终止,并回滚之前所有操作到原始状态。 + +2、一致性 + +​ 事务必须使数据库从一个一致性状态变换到另一个一致性状态。 + +3、隔离性 + +​ 保证不同的事务相互独立、透明的执行。 + +4、持久性 + +事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。 + +#### 三、事务分类 + +1、显式事务 + 用 begin transaction 明确指定事务的开始,由 commit transaction 提交事务、rollback transaction 回滚事务到事务结束。 + +2、隐式事务 + + 通过设置 set implicit_transactions on 语句,将隐式事务模式设置为打开。当以隐式事务模式操作时,不必使用 begin transaction 开启事务,当一个事务结束后,这个模式会自动启用下一个事务。只需使用 commit transaction 提交事务或 rollback transaction 回滚事务即可。 + +3、自动提交事务 + +​ SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交,否则回滚。 + + + + + diff --git "a/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\346\270\270\346\240\2072022-09-20.md" "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\346\270\270\346\240\2072022-09-20.md" new file mode 100644 index 0000000000000000000000000000000000000000..2b0b56ee6d1acbd9be18da2db1d4c064751ea914 --- /dev/null +++ "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\346\270\270\346\240\2072022-09-20.md" @@ -0,0 +1,58 @@ +# 游标 + +游标的概念 + 游标是一种能从包含多个元组的集合中每次读取一个元组的机制。游标总是和一段SELECT语句关联,SELECT语句查询出的结果集就作为集合,游标能每次从该集合中读取出一个元组进行不同操作。 + +#### 游标的作用 + +将游标定位在结果集特定元组。 +将游标指定结果集中的元组数据读出。 +利用循环读取结果集中的多个元组数据。 +对游标指定结果集的元组进行数据修改。 + +#### 游标分类: + +(1)静态游标(Static):在操作游标的时候,数据发生变化,游标中数据不变 +(2)动态游标(Dynamic):在操作游标的时候,数据发生变化,游标中数据改变,默认值。 +(3)键集驱动游标(KeySet):在操作游标的时候,被标识的列发生改变,游标中数据改变,其他列改变,游标中数据不变。 + +#### 游标的使用 + +**创建游标:** + +```sql +--1.创建游标(Scroll代表滚动游标,不加Scroll则是只进的,只能支持fetch next) +declare <游标名> cursor scroll for select stuname from stuinfo +``` + +**打开游标:** + +```sql +open <游标名> +``` + +**关闭游标:** + +``` +close <游标名> +``` + +**删除游标:** + +``` +deallocate <游标名> +``` + + + +**提取数据操作:** + +```sql +fetch first from <游标名> --结果集的第一行 +fetch last from <游标名> --最后一行 +fetch absolute 1 from <游标名> --从游标的第一行开始数,第n行。 +fetch relative 3 from <游标名> --从当前位置数,第n行。 +fetch next from <游标名> --当前位置的下一行 +fetch prior from <游标名> --当前位置的上一行 +``` + diff --git "a/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\350\247\206\345\233\2762022-9-15.md" "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\350\247\206\345\233\2762022-9-15.md" index d9fb04fe0fd91749b81b5a71f65c6cbfbdc33715..4dd829db2eb2738e6dd74be14682031fe3cf1ea8 100644 --- "a/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\350\247\206\345\233\2762022-9-15.md" +++ "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/\350\247\206\345\233\2762022-9-15.md" @@ -1,65 +1,38 @@ -#### 基于视图的操作 - -##### 定义视图 - -```sql ---建立视图 -create view <视图名> [(<列名>[,<列名>]...)] - as <子查询> [with check option] -``` - -##### 常见的视图形式 - -- 行列子集视图:去掉了某些行和某些列,但保留了主键 - -```sql ---建立信息学院学生的视图 -``` - -- with check option 视图 - -```sql ---建立信息学院学生的视图,并要求通过该视图进行的更新操作只涉及信息学院的学生 -``` - - +## 视图 -- 带表达式的视图 +#### 关系(Relations) -```sql ---定义一个反映学生年龄的视图 -``` +三种类型关系: +- 表(Table)--基表,存储关系(Base Tables,Sorted relations) +- 视图(Views)--虚拟关系(Virtual relations)(不是物理存在的是虚拟的) +- 临时结果(Temporary results)--用于构建**子查询**的结果 -- 基于多个基表的视图:可以进行连表检索 -```sql ---建立信息学院学生的特长属于艺术特长视图 -``` +#### 什么是视图 +- 视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上 +- 视图中并不存放数据,而是存放在视图所引用的原始表(基表)中,即基本中的数据发生变化,从视图中查询的数据也随之改变。 +- 同一张原始表,根据不同用户的不同需求,可以创建不同的视图 +**视图的作用** -- 基于视图的视图:视图可作为另一视图建立的表 - -```sql ---建立信息学院->数据科学与大数据技术专业的学生视图 -``` - +- 视图能够简化用户的操作 +- 视图使用户能以多种角度看待同一数据 +- 视图对重构数据库提供了一定的逻辑独立性 +- 视图能够对机密数据提供安全保护 +#### 基于视图的操作 -- 分组视图:使用group by 建立视图 +##### 定义视图 ```sql ---建立各个生源地学生的荣誉总数视图 +--建立视图 +create view <视图名> [(<列名>[,<列名>]...)] + as <子查询> [with check option] ``` - - -##### 查询视图 - -##### 更新视图 - ##### 删除视图 ```sql @@ -69,10 +42,6 @@ drop view <视图名> --删除基表时,由该基表导出的所有视图定义都必须显示删除 ``` - - - - #### 视图的设计原则 - 以 select * 方式创建的视图:可扩充性差,应尽可能避免