From 7ac2276396a560b975b901cb2816144d9700175d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E8=B4=B5=E6=A3=AE?= <3032059138@qq.com> Date: Thu, 6 Oct 2022 01:33:34 +0000 Subject: [PATCH 1/3] =?UTF-8?q?=E8=A2=81=E8=B4=B5=E6=A3=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 袁贵森 <3032059138@qq.com> --- ...0\346\240\207\344\275\234\344\270\232.sql" | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 "28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-0930-\346\270\270\346\240\207\344\275\234\344\270\232.sql" diff --git "a/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-0930-\346\270\270\346\240\207\344\275\234\344\270\232.sql" "b/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-0930-\346\270\270\346\240\207\344\275\234\344\270\232.sql" new file mode 100644 index 0000000..658cd91 --- /dev/null +++ "b/28\350\242\201\350\264\265\346\243\256/\344\275\234\344\270\232/2022-0930-\346\270\270\346\240\207\344\275\234\344\270\232.sql" @@ -0,0 +1,92 @@ + +use STUDENTS +go +select * from tb_bibliography +select * from tb_book +select * from tb_inf_student +select * from tb_record +select * from tb_student +--ѧα꣬α(ѧ,Ȥ,Դأ) +declare cur_getstu cursor scroll +for select t.name ѧ,s.hobby Ȥ,s.ori_loca Դ,s.prize +from tb_student t join tb_inf_student s on s.stu_num=t.stu_num + +open cur_getstu +declare @xuehao char(8),@aihao varchar(20),@loca varchar(20),@rongyu int +fetch first from cur_getstu into @xuehao,@aihao,@loca,@rongyu +while (@@FETCH_STATUS=0) +begin + print @xuehao+@aihao+@loca+@rongyu + +end + +close cur_getstu +--ѭ161ͷѧϢ +declare cur_infstu cursor scroll for select * from tb_student group by stu_num + +open cur_infstu +declare @num char(10) +fetch first cur_infstu into @num +while (@@FETCH_STATUS=0) +begin + declare @inf varchar =(select * from tb_student where stu_num like '161%%') + fetch next cur_infstu into @num +end + +close cur_infstu +-- ʹαͳԴΪ +declare cur_sum cursor scroll +for select ori_loca,count(prize) from tb_inf_student where ori_loca='' group by ori_loca + +open cur_sum +declare @sum int +fetch first cur_sum into @sum +print @sum + +close cur_sum + +create table A( + id int primary key, + Province varchar(20), + City varchar(20) +) + +create table B( + id int primary key, + Province varchar(20), + City varchar(20) +) + +insert into A values(1,'','') +insert into A values(2,'㶫','') +insert into A values(3,'','') +insert into A values(4,'','') + +insert into B values(1,'','ϲ') +insert into B values(3,'','Ͼ') +insert into B values(5,'','人') +insert into B values(7,'','ɳ') +``` + +--Ҫʹα ʵ:ABIDֵֶͬôBеʡݣ ޸ijAеijһ£ +select * from A +union +select * from B + +declare cur_pro cursor scroll +for select id from A union select * from B group by id + +open cur_pro +declare @a int =(select id from A group by id) +declare @b int=(select id from B group by id) +declare @a1 varchar(10)=(select Province,City from A group by Province,City) +declare @b1 varchar(10)=(select Province,City from B group by Province,City) +fetch first cur_pro into @a,@b +if(@a=@b) +begin + update B set @a=@b where @a1=@b1 + fetch next cur_pro into @a1,@b1 +end + +close cur_pro + -- Gitee From 428d3d187779ca9858f052c5450ba08130044e87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E8=B4=B5=E6=A3=AE?= <3032059138@qq.com> Date: Thu, 6 Oct 2022 01:33:56 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=E8=A2=81=E8=B4=B5=E6=A3=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 袁贵森 <3032059138@qq.com> --- ...3\345\212\241\347\254\224\350\256\260.txt" | 56 +++++++++++++++++ ...0\346\240\207\347\254\224\350\256\260.txt" | 61 +++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 "28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-0929\344\272\213\345\212\241\347\254\224\350\256\260.txt" create mode 100644 "28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-0930\346\270\270\346\240\207\347\254\224\350\256\260.txt" diff --git "a/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-0929\344\272\213\345\212\241\347\254\224\350\256\260.txt" "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-0929\344\272\213\345\212\241\347\254\224\350\256\260.txt" new file mode 100644 index 0000000..0982df6 --- /dev/null +++ "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-0929\344\272\213\345\212\241\347\254\224\350\256\260.txt" @@ -0,0 +1,56 @@ +## 事务 + + +#### 什么是事务 + +**事务( Transaction)由一次或者多次基本操作构成,或者说,事务由一条或者多条 SQL 语句构成。** + +**事务中的所有 SQL 语句是一个整体,共同进退,不可分割,要么全部执行成功,要么全部执行失败。** + + +#### 事务的属性(ACID) + +一般来说,事务具有四个标准属性,分别是原子性(**A**tomicity,或称不可分割性)、一致性(**C**onsistency)、隔离性(**I**solation,又称独立性)、持久性(**D**urability),简称 **ACID**。具体说明如下: + +##### 1) 原子性 + +一个事务中的所有 SQL 语句,要么全部执行成功,要么全部执行失败,不会结束在中间的某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 + +##### 2) 一致性 + +在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的数据必须完全符合所有的预设规则,其中包含数据的精确度、串联性以及后续数据库可以自发性地完成预定的工作。 + +##### 3) 隔离性 + +数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。 死锁 操作系统 + +##### 4) 持久性 + +事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。 + + +#### 事务分类 + +**自动提交事物**: 是SQL Server默认的一种事务模式,每条Sql语句都被看成一个事务进行处理。 + +**显式事务**: T-sql标明,由Begin Transaction开启事务开始,由Commit Transaction 提交事务、Rollback Transaction 回滚事务结束。 + +**隐式事务**:使用Set IMPLICIT_TRANSACTIONS ON 将将隐式事务模式打开,不用Begin Transaction开启事务,当一个事务结束,这个模式会自动启用下一个事务,只用Commit Transaction 提交事务、Rollback Transaction 回滚事务即可。 + +TIPS: + +**事物回滚**: + +xact_abort on/off : 为on时如果当前sql出错,回滚整个事务,为off时如果sql出错回滚当前sql语句,其它语句照常运行读写数据库。 + + +**事务执行流程** + +BEGIN 或者 START TRANSACTION:开始事务; +COMMIT:提交事务; +ROLLBACK:回滚事务; +SAVEPOINT:在事务内部设置回滚标记点; +RELEASE SAVEPOINT:删除回滚标记点; +ROLLBACK TO:将事务回滚到标记点(ROLLBACK 命令的一种变形写法)。 + +一个事务要么提交(Commit),要么回滚(Rollback),提交意味着成功,回滚意味着失败。编写事务代码时,以 BEGIN 命令开头,后跟一条或者多条 SQL 语句,最后书写 COMMIT 或者 ROLLBACK 命令;COMMIT 和 ROLLBACK 对应事务的两种状态,只能出现一个。 \ No newline at end of file diff --git "a/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-0930\346\270\270\346\240\207\347\254\224\350\256\260.txt" "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-0930\346\270\270\346\240\207\347\254\224\350\256\260.txt" new file mode 100644 index 0000000..ccaf91f --- /dev/null +++ "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-0930\346\270\270\346\240\207\347\254\224\350\256\260.txt" @@ -0,0 +1,61 @@ +## 游标 + +#### 什么是游标 + +游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集。使用游标(cursor)的一个主要的原因就是把集合操作转换成**单个记录处理方式**。用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在SQL server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。 + +游标分类: + +(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 <游标名> --当前位置的上一行 +``` + +**静态游标: +静态游标的结果集,在游标打开的时候建立在TempDB中,不论你在操作游标的时候,如何操作数据库,游标中的数据集都不会变。 +例如你在游标打开的时候,对游标查询的数据表数据进行增删改,操作之后,静态游标中select的数据依旧显示的为没有操作之前的数据。如果想与操作之后的数据一致,则重新关闭打开游标即可。 +**动态游标: +这个则与静态游标相对,滚动游标时,动态游标反应结果集中的所有更改。结果集中的行数据值、顺序和成员在每次提取时都会变化。 +所有用户做的增删改语句通过游标均可见。如果使用API函数或T-SQL Where Current of子句通过游标进行更新,他们将立即可见。在游标外部所做的更新直到提交时才可见。 +**只进游标: +只进游标不支持滚动,只支持从头到尾顺序提取数据,数据库执行增删改,在提取时是可见的,但由于该游标只能进不能向后滚动,所以在行提取后对行做增删改是不可见的。 \ No newline at end of file -- Gitee From 306d1550a09fa75e4b4c29c7520437ddd4e57f3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E8=B4=B5=E6=A3=AE?= <3032059138@qq.com> Date: Thu, 6 Oct 2022 01:35:34 +0000 Subject: [PATCH 3/3] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2028?= =?UTF-8?q?=E8=A2=81=E8=B4=B5=E6=A3=AE/=E7=AC=94=E8=AE=B0/2022-0929?= =?UTF-8?q?=E4=BA=8B=E5=8A=A1=E7=AC=94=E8=AE=B0.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...3\345\212\241\347\254\224\350\256\260.txt" | 56 ------------------- 1 file changed, 56 deletions(-) delete mode 100644 "28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-0929\344\272\213\345\212\241\347\254\224\350\256\260.txt" diff --git "a/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-0929\344\272\213\345\212\241\347\254\224\350\256\260.txt" "b/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-0929\344\272\213\345\212\241\347\254\224\350\256\260.txt" deleted file mode 100644 index 0982df6..0000000 --- "a/28\350\242\201\350\264\265\346\243\256/\347\254\224\350\256\260/2022-0929\344\272\213\345\212\241\347\254\224\350\256\260.txt" +++ /dev/null @@ -1,56 +0,0 @@ -## 事务 - - -#### 什么是事务 - -**事务( Transaction)由一次或者多次基本操作构成,或者说,事务由一条或者多条 SQL 语句构成。** - -**事务中的所有 SQL 语句是一个整体,共同进退,不可分割,要么全部执行成功,要么全部执行失败。** - - -#### 事务的属性(ACID) - -一般来说,事务具有四个标准属性,分别是原子性(**A**tomicity,或称不可分割性)、一致性(**C**onsistency)、隔离性(**I**solation,又称独立性)、持久性(**D**urability),简称 **ACID**。具体说明如下: - -##### 1) 原子性 - -一个事务中的所有 SQL 语句,要么全部执行成功,要么全部执行失败,不会结束在中间的某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 - -##### 2) 一致性 - -在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的数据必须完全符合所有的预设规则,其中包含数据的精确度、串联性以及后续数据库可以自发性地完成预定的工作。 - -##### 3) 隔离性 - -数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。 死锁 操作系统 - -##### 4) 持久性 - -事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。 - - -#### 事务分类 - -**自动提交事物**: 是SQL Server默认的一种事务模式,每条Sql语句都被看成一个事务进行处理。 - -**显式事务**: T-sql标明,由Begin Transaction开启事务开始,由Commit Transaction 提交事务、Rollback Transaction 回滚事务结束。 - -**隐式事务**:使用Set IMPLICIT_TRANSACTIONS ON 将将隐式事务模式打开,不用Begin Transaction开启事务,当一个事务结束,这个模式会自动启用下一个事务,只用Commit Transaction 提交事务、Rollback Transaction 回滚事务即可。 - -TIPS: - -**事物回滚**: - -xact_abort on/off : 为on时如果当前sql出错,回滚整个事务,为off时如果sql出错回滚当前sql语句,其它语句照常运行读写数据库。 - - -**事务执行流程** - -BEGIN 或者 START TRANSACTION:开始事务; -COMMIT:提交事务; -ROLLBACK:回滚事务; -SAVEPOINT:在事务内部设置回滚标记点; -RELEASE SAVEPOINT:删除回滚标记点; -ROLLBACK TO:将事务回滚到标记点(ROLLBACK 命令的一种变形写法)。 - -一个事务要么提交(Commit),要么回滚(Rollback),提交意味着成功,回滚意味着失败。编写事务代码时,以 BEGIN 命令开头,后跟一条或者多条 SQL 语句,最后书写 COMMIT 或者 ROLLBACK 命令;COMMIT 和 ROLLBACK 对应事务的两种状态,只能出现一个。 \ No newline at end of file -- Gitee