From 1b9b6bdbfcd93d93c4b79af957b2d047bb12a4f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98=E8=B5=B5=E6=B5=A9=E6=95=8F=E2=80=99?= <3127104562@qq.com> Date: Fri, 23 Sep 2022 12:49:49 +0800 Subject: [PATCH 1/3] 9-23 --- ...73\350\276\221\346\216\247\345\210\266.md" | 226 ++++++++++++++++++ ...346\234\21023\344\275\234\344\270\232.sql" | 73 ++++++ 2 files changed, 299 insertions(+) create mode 100644 "27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9-23\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221\346\216\247\345\210\266.md" create mode 100644 "27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9\346\234\21023\344\275\234\344\270\232.sql" diff --git "a/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9-23\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221\346\216\247\345\210\266.md" "b/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9-23\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221\346\216\247\345\210\266.md" new file mode 100644 index 0000000..50e14c0 --- /dev/null +++ "b/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9-23\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221\346\216\247\345\210\266.md" @@ -0,0 +1,226 @@ + + +## 回顾 + +设计数据库的步骤为 + +1. 建模:信息收集、绘制E-R图 +2. 模型转换:用数据模型建表 +3. 规范化:运用三范式 + 1. 第一范式(1NF):确保列的原子性 + 2. 第二范式(2NF):使每列都和主键关联 + 3. 第三范式(3NF):使每列都和主键直接关联 + +## 变量与逻辑控制 + +- 掌握变量的定义和使用 +- 掌握输出语句 +- 掌握逻辑控制语句 +- 理解批处理的概念 + +### 变量 + +#### 局部变量 + +局部变量必须以标记@作为前缀 ,如@age +局部变量的使用是先声明,再赋值 +局部变量只在定义它的局部范围内有效 + + + +声明一个局部变量:**declare @变量名 数据类型** + +```sql +--例: + declare @id int --声明一个名为id的整型变量 + declare @name varchar(50) --声明一个可变长度为50的存放姓名的字符串变量 + +``` + +赋值: + +- set @变量名 = 值 + +- select @变量名 = 值 + +```sql +--例: + select @id = 1001 + set @name = '周飘' +``` + +set与select赋值的区别: + +set赋值给变量指定的值,select一般用于表中查询出的数据赋值给变量,如果查询结果有多条,取最后一条赋值给变量 + + + +练习:要求根据座位号找出张无忌的前后同学? + +![1662309889066](1662309889066.png) + + + + + + + +#### 全局变量 + +全局变量必须以标记@@作为前缀,如@@version +全局变量由**系统定义和维护**,我们**只能读取,不能修改全局变量的值** +全局变量在整个SQL环境下都可以被访问或调用 + +```sql +--@@ERROR:返回执行的上一个语句的错误号 +--@@IDENTITY:返回最后插入的标识值 +--@@MAX_CONNECTIONS:返回允许同时进行的最大用户连接数 +--@@ROWCOUNT:返回受上一语句影响的行数 +--@@SERVERNAME:返回运行 SQL Server 的本地服务器的名称 +--@@SERVICENAME:返回 SQL Server 正在其下运行的注册表项的名称 +--@@TRANCOUNT:返回当前连接的活动事务数 +--@@LOCK_TIMEOUT:返回当前会话的当前锁定超时设置(毫秒) +``` + + + + + + + +## 输出语句 + +1. print变量或表达式 +2. select变量或表达式 + +```sql +--例: + print '数据库服务器名:' + @@servicename + select 15*8 +``` + + + +#### 使用convert函数 + +​ 由于PRINT 命令向客户端返回一个结果的字符串的信息。如果变量值不是字符串的话必须先用数据类型转换函数 CONVERT 将其转换为字符串。 + +```sql +--显示自动编号 +print '当前自动编号的值:' + convert(varchar(10),@@IDENTITY) +``` + +**cast(字段名 as 数据类型)** + +## 逻辑控制语句 + +#### if条件分支 + +![1662377697247](1662377697247.png) + +问题: +统计分析本班男生的平均成绩和女生的平均成绩,如果男生的平均成绩高于女生则输出“男生成绩优于女生”,并显示男生第一名的信息。否则输出“女生成绩优于男生”,并显示女生第一名的信息。 +分析: +第一步,分别统计男生和女生的平均成绩并存入局部变量中。 +第二步,用IF-ELSE结构判断,输出结果。 + + + + + + + +#### 循环控制语句 + +![1662377859010](1662377859010.png) + +##### while:可以通过break和continue控制循环语句中的执行。 + +​ 练习:在 StuScore 表中如果学生的平均成绩没有达到80分,便给每位同学的数学成绩加1分,然后再次判断平均成绩是否达到80分,否则继续加分,这样反复加分,直到其平均成绩超过80分。 + +​ 思路: + +​ 第一步,计算 StuScore 表中学生的平均成绩。 +​ 第二步,如果平均成绩没有达到80分,执行加分操作。 +​ 第三步,循环判断。 + +#### 逻辑控制语句 switch case + +![1662377940867](1662377940867.png) + +##### case 多分支语句 + +​ 练习:将StuScore成绩表中的学生成绩用五分制显示。 +​ 5分:80分以上 +​ 4分:60~79分 +​ 3分:40~59分 +​ 2分:20~39分 +​ 1分:0~19分 + +## 批处理语句 + +go语句特点: + +1. 等待go语句前的代码执行完成后,再执行go后面的代码。 +2. 批处理语句的结束标志。 + +```sql +--下面的@num变量作用域为全局 +--declare @num int +--set @num = 0 + +--下面的@num变量的作用域是局部,只在两个go之间可以使用,最后一行代码会报错 +--.........sql代码 +--go +--declare @num int +--set @num = 0 +--go +--set @num = 1 +``` + + + + + +## 总结 + +变量的使用。要先用DECLARE 关键字声明,然后用SET或SELECT赋值。局部变量前必须有 “@” 作前缀,全局变量必须有 “@@” 作前缀。 +变量的输出可以用:PRINT或SELECT语句。 +逻辑控制语句提供了条件操作所需的顺序和逻辑。 +了解T-SQL编写工具。 +批处理可以提高语句执行的效率,使用“GO”作为结束标志。 + + + + + +## 作业 + +#### 变量 + +1. 为赵云此人进行开户开卡操作,赵云身份证:420107199904054233 +2. 需要求出张飞的银行卡卡号和余额,张飞身份证:420107199602034138 (1.使用连接查询,2.使用变量) + +#### 逻辑控制 + +##### 条件分支if-else + +​ 3.某用户银行卡号为“6225547854125656”,该用户执行取钱操作,取钱5000元,余额充足则进行取钱操作,并提示"取钱成功",否则提示“余额不足”。 + +##### 条件分支:case-when + +​ 4.查询银行卡信息,将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”,并且根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户", + +--显示列分别为卡号,身份证,姓名,余额,用户等级,银行卡状态。 + +##### **while** + +​ 5.循环打印1-10。 + +​ 6.打印99乘法表 + +**备注** + +(1)特殊字符:制表符 CHAR(9);换行符 CHAR(10);回车 CHAR(13); + +(2)循环中若出现break和CONTINUE,作用与Java,C#等语言一致。 \ No newline at end of file diff --git "a/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9\346\234\21023\344\275\234\344\270\232.sql" "b/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9\346\234\21023\344\275\234\344\270\232.sql" new file mode 100644 index 0000000..22b58d4 --- /dev/null +++ "b/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9\346\234\21023\344\275\234\344\270\232.sql" @@ -0,0 +1,73 @@ +-ѡ֧ϰ +select * from AccountInfo +select * from BankCard +select * from CardExchange +select * from CardTransfer +--ijûпΪ6225547854125656ûִȡǮȡǮ5000ԪȡǮʾ"ȡǮɹ"ʾ㡱 +--1.ǰпŵ +declare @balance money +select @balance = CardMoney from BankCard where CardNo='6225547854125656' +print @balance +--2.ж +if @balance>5000 + begin + --ȡǮ: + --BankCard + update BankCard set CardMoney = @balance - 5000 where CardNo = '6225547854125656' + --CardExchange + insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) values('6225547854125656',0,5000,getdate()); + end +else + begin + print '' + end + +print @balance + + + +--ѯпϢп״̬1,2,3,4ֱתΪ֡,ʧ,,עҸпʾпȼ 30Ϊͨû,30Ϊ"VIPû" +--ʾзֱΪţ֤ûȼп״̬ +select CardNo ,AccountCode ֤,RealName , CardMoney , +case + when CardMoney>300000 then 'VIPͻ' + else 'ͨû' +end ûȼ, + +case + when CardState=1 then '' + when CardState=2 then 'ʧ' + when CardState=3 then '' + else 'ע' +end п״̬״̬ + + +from BankCard +inner join AccountInfo on AccountInfo.AccountId = BankCard.AccountId + + + +--ѭṹϰ +--ѭӡ1-10 +declare @a int = 1 +while @a < 10 + begin + print @a + set @a = @a + 1 + end +print @a +--ѭӡžų˷ +declare @i int = 1 +while @i <= 9 + begin + declare @j int = 1 + declare @result varchar(200) = '' + while @j <= @i + + begin + set @result = @result + cast(@i as varchar(1))+ ' * ' + cast(@j as varchar(1)) + ' = '+ cast(@i*@j as varchar(2)) + char(9) + set @j = @j + 1 + end + print @result + set @i = @i + 1 + end \ No newline at end of file -- Gitee From 0d084a135d91d6ff0ce0c98262e790846db16c2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=B5=A9=E6=95=8F?= <3127104562@qq.com> Date: Fri, 23 Sep 2022 05:49:58 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2027?= =?UTF-8?q?=E5=8F=B7=E8=B5=B5=E6=B5=A9=E6=95=8F/=E7=AC=AC=E4=BA=94?= =?UTF-8?q?=E6=AC=A1=E7=AC=94=E8=AE=B0/9-23=E5=8F=98=E9=87=8F=E4=B8=8E?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E6=8E=A7=E5=88=B6.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...73\350\276\221\346\216\247\345\210\266.md" | 226 ------------------ 1 file changed, 226 deletions(-) delete mode 100644 "27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9-23\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221\346\216\247\345\210\266.md" diff --git "a/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9-23\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221\346\216\247\345\210\266.md" "b/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9-23\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221\346\216\247\345\210\266.md" deleted file mode 100644 index 50e14c0..0000000 --- "a/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9-23\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221\346\216\247\345\210\266.md" +++ /dev/null @@ -1,226 +0,0 @@ - - -## 回顾 - -设计数据库的步骤为 - -1. 建模:信息收集、绘制E-R图 -2. 模型转换:用数据模型建表 -3. 规范化:运用三范式 - 1. 第一范式(1NF):确保列的原子性 - 2. 第二范式(2NF):使每列都和主键关联 - 3. 第三范式(3NF):使每列都和主键直接关联 - -## 变量与逻辑控制 - -- 掌握变量的定义和使用 -- 掌握输出语句 -- 掌握逻辑控制语句 -- 理解批处理的概念 - -### 变量 - -#### 局部变量 - -局部变量必须以标记@作为前缀 ,如@age -局部变量的使用是先声明,再赋值 -局部变量只在定义它的局部范围内有效 - - - -声明一个局部变量:**declare @变量名 数据类型** - -```sql ---例: - declare @id int --声明一个名为id的整型变量 - declare @name varchar(50) --声明一个可变长度为50的存放姓名的字符串变量 - -``` - -赋值: - -- set @变量名 = 值 - -- select @变量名 = 值 - -```sql ---例: - select @id = 1001 - set @name = '周飘' -``` - -set与select赋值的区别: - -set赋值给变量指定的值,select一般用于表中查询出的数据赋值给变量,如果查询结果有多条,取最后一条赋值给变量 - - - -练习:要求根据座位号找出张无忌的前后同学? - -![1662309889066](1662309889066.png) - - - - - - - -#### 全局变量 - -全局变量必须以标记@@作为前缀,如@@version -全局变量由**系统定义和维护**,我们**只能读取,不能修改全局变量的值** -全局变量在整个SQL环境下都可以被访问或调用 - -```sql ---@@ERROR:返回执行的上一个语句的错误号 ---@@IDENTITY:返回最后插入的标识值 ---@@MAX_CONNECTIONS:返回允许同时进行的最大用户连接数 ---@@ROWCOUNT:返回受上一语句影响的行数 ---@@SERVERNAME:返回运行 SQL Server 的本地服务器的名称 ---@@SERVICENAME:返回 SQL Server 正在其下运行的注册表项的名称 ---@@TRANCOUNT:返回当前连接的活动事务数 ---@@LOCK_TIMEOUT:返回当前会话的当前锁定超时设置(毫秒) -``` - - - - - - - -## 输出语句 - -1. print变量或表达式 -2. select变量或表达式 - -```sql ---例: - print '数据库服务器名:' + @@servicename - select 15*8 -``` - - - -#### 使用convert函数 - -​ 由于PRINT 命令向客户端返回一个结果的字符串的信息。如果变量值不是字符串的话必须先用数据类型转换函数 CONVERT 将其转换为字符串。 - -```sql ---显示自动编号 -print '当前自动编号的值:' + convert(varchar(10),@@IDENTITY) -``` - -**cast(字段名 as 数据类型)** - -## 逻辑控制语句 - -#### if条件分支 - -![1662377697247](1662377697247.png) - -问题: -统计分析本班男生的平均成绩和女生的平均成绩,如果男生的平均成绩高于女生则输出“男生成绩优于女生”,并显示男生第一名的信息。否则输出“女生成绩优于男生”,并显示女生第一名的信息。 -分析: -第一步,分别统计男生和女生的平均成绩并存入局部变量中。 -第二步,用IF-ELSE结构判断,输出结果。 - - - - - - - -#### 循环控制语句 - -![1662377859010](1662377859010.png) - -##### while:可以通过break和continue控制循环语句中的执行。 - -​ 练习:在 StuScore 表中如果学生的平均成绩没有达到80分,便给每位同学的数学成绩加1分,然后再次判断平均成绩是否达到80分,否则继续加分,这样反复加分,直到其平均成绩超过80分。 - -​ 思路: - -​ 第一步,计算 StuScore 表中学生的平均成绩。 -​ 第二步,如果平均成绩没有达到80分,执行加分操作。 -​ 第三步,循环判断。 - -#### 逻辑控制语句 switch case - -![1662377940867](1662377940867.png) - -##### case 多分支语句 - -​ 练习:将StuScore成绩表中的学生成绩用五分制显示。 -​ 5分:80分以上 -​ 4分:60~79分 -​ 3分:40~59分 -​ 2分:20~39分 -​ 1分:0~19分 - -## 批处理语句 - -go语句特点: - -1. 等待go语句前的代码执行完成后,再执行go后面的代码。 -2. 批处理语句的结束标志。 - -```sql ---下面的@num变量作用域为全局 ---declare @num int ---set @num = 0 - ---下面的@num变量的作用域是局部,只在两个go之间可以使用,最后一行代码会报错 ---.........sql代码 ---go ---declare @num int ---set @num = 0 ---go ---set @num = 1 -``` - - - - - -## 总结 - -变量的使用。要先用DECLARE 关键字声明,然后用SET或SELECT赋值。局部变量前必须有 “@” 作前缀,全局变量必须有 “@@” 作前缀。 -变量的输出可以用:PRINT或SELECT语句。 -逻辑控制语句提供了条件操作所需的顺序和逻辑。 -了解T-SQL编写工具。 -批处理可以提高语句执行的效率,使用“GO”作为结束标志。 - - - - - -## 作业 - -#### 变量 - -1. 为赵云此人进行开户开卡操作,赵云身份证:420107199904054233 -2. 需要求出张飞的银行卡卡号和余额,张飞身份证:420107199602034138 (1.使用连接查询,2.使用变量) - -#### 逻辑控制 - -##### 条件分支if-else - -​ 3.某用户银行卡号为“6225547854125656”,该用户执行取钱操作,取钱5000元,余额充足则进行取钱操作,并提示"取钱成功",否则提示“余额不足”。 - -##### 条件分支:case-when - -​ 4.查询银行卡信息,将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”,并且根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户", - ---显示列分别为卡号,身份证,姓名,余额,用户等级,银行卡状态。 - -##### **while** - -​ 5.循环打印1-10。 - -​ 6.打印99乘法表 - -**备注** - -(1)特殊字符:制表符 CHAR(9);换行符 CHAR(10);回车 CHAR(13); - -(2)循环中若出现break和CONTINUE,作用与Java,C#等语言一致。 \ No newline at end of file -- Gitee From 521fddbfbdde1dd2b40279f2860dd2a1189d02fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=B5=A9=E6=95=8F?= <3127104562@qq.com> Date: Fri, 23 Sep 2022 05:50:15 +0000 Subject: [PATCH 3/3] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2027?= =?UTF-8?q?=E5=8F=B7=E8=B5=B5=E6=B5=A9=E6=95=8F/=E7=AC=AC=E4=BA=94?= =?UTF-8?q?=E6=AC=A1=E7=AC=94=E8=AE=B0/9=E6=9C=8823=E4=BD=9C=E4=B8=9A.sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...346\234\21023\344\275\234\344\270\232.sql" | 73 ------------------- 1 file changed, 73 deletions(-) delete mode 100644 "27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9\346\234\21023\344\275\234\344\270\232.sql" diff --git "a/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9\346\234\21023\344\275\234\344\270\232.sql" "b/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9\346\234\21023\344\275\234\344\270\232.sql" deleted file mode 100644 index 22b58d4..0000000 --- "a/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\344\272\224\346\254\241\347\254\224\350\256\260/9\346\234\21023\344\275\234\344\270\232.sql" +++ /dev/null @@ -1,73 +0,0 @@ --ѡ֧ϰ -select * from AccountInfo -select * from BankCard -select * from CardExchange -select * from CardTransfer ---ijûпΪ6225547854125656ûִȡǮȡǮ5000ԪȡǮʾ"ȡǮɹ"ʾ㡱 ---1.ǰпŵ -declare @balance money -select @balance = CardMoney from BankCard where CardNo='6225547854125656' -print @balance ---2.ж -if @balance>5000 - begin - --ȡǮ: - --BankCard - update BankCard set CardMoney = @balance - 5000 where CardNo = '6225547854125656' - --CardExchange - insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) values('6225547854125656',0,5000,getdate()); - end -else - begin - print '' - end - -print @balance - - - ---ѯпϢп״̬1,2,3,4ֱתΪ֡,ʧ,,עҸпʾпȼ 30Ϊͨû,30Ϊ"VIPû" ---ʾзֱΪţ֤ûȼп״̬ -select CardNo ,AccountCode ֤,RealName , CardMoney , -case - when CardMoney>300000 then 'VIPͻ' - else 'ͨû' -end ûȼ, - -case - when CardState=1 then '' - when CardState=2 then 'ʧ' - when CardState=3 then '' - else 'ע' -end п״̬״̬ - - -from BankCard -inner join AccountInfo on AccountInfo.AccountId = BankCard.AccountId - - - ---ѭṹϰ ---ѭӡ1-10 -declare @a int = 1 -while @a < 10 - begin - print @a - set @a = @a + 1 - end -print @a ---ѭӡžų˷ -declare @i int = 1 -while @i <= 9 - begin - declare @j int = 1 - declare @result varchar(200) = '' - while @j <= @i - - begin - set @result = @result + cast(@i as varchar(1))+ ' * ' + cast(@j as varchar(1)) + ' = '+ cast(@i*@j as varchar(2)) + char(9) - set @j = @j + 1 - end - print @result - set @i = @i + 1 - end \ No newline at end of file -- Gitee