diff --git "a/09\351\231\210\347\203\275\346\235\260/\344\275\234\344\270\232/9.5\344\275\234\344\270\232.md" "b/09\351\231\210\347\203\275\346\235\260/\344\275\234\344\270\232/9.5\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..acf9f71b4f2915946cc50cae816cec2d039db641 --- /dev/null +++ "b/09\351\231\210\347\203\275\346\235\260/\344\275\234\344\270\232/9.5\344\275\234\344\270\232.md" @@ -0,0 +1,71 @@ +# 第一题 找座位号 + +-2. 练习:要求根据座位号找出张翠山的前后同学? + +--声明变量 +declare @StuSeat int +--初始化变量 +--张翠山座号 +select @StuSeat=(select StuSeat from StuInfo where StuSeat=2) +--打印 +print @StuSeat +--张翠山前后座号信息 +select * from StuInfo +where StuSeat = @StuSeat+1 or StuSeat=@StuSeat-1 + +--2.练习:查询年龄最大的学生信息 +declare @StuAge int +select @StuAge = max(stuage) from StuInfo +select * from StuInfo where StuAge=@StuAge + + + +# 第二题 建筑公司 + +create database gs +use gs +create table yg( +ygid int PRIMARY KEY, +ygname nvarchar(10), +) +create table zw( +zwid int PRIMARY KEY, +zwname nvarchar(10), + +) +create table gc( +gcid varchar(10) not null PRIMARY KEY, +gcmc nvarchar(20) not null, +) +create table gz( +gcid varchar(10) references gc(gcid), +ygid int references yg(ygid), +q money, +sj int +) +insert yg values(1001,'齐光明'),(1002,'李思岐'),(1003,'鞠明亮'),(1004,'葛宇洪') +insert zw values(1,'工程师'),(2,'技术员'),(3,'律师'),(4,'工人') +insert gc values('A1','花园大厦'),('A2','立交桥'),('A3','临江饭店') +insert gz values ('A1',1001,65,13),('A1',1002,60,16),('A1',1004,60,19),('A2',1001,65,15), +('A2',1003,55,17),('A3',1002,60,18),('A3',1004,60,14) + +-- 单个工程里的单个人的总工资 +declare @a int + + select @a=(q*sj) from gz where gcid='A1' and ygid='1001' + + print @a +--单个工程总价 + + declare @b int + + select @b=(q*sj) from gz where gcid='A1' + + print @b + + --全部价格 + declare @c int + + select @c=sum(q*sj) from gz w + + print @c diff --git "a/09\351\231\210\347\203\275\346\235\260/\347\254\224\350\256\260/9.5\347\254\224\350\256\260.md" "b/09\351\231\210\347\203\275\346\235\260/\347\254\224\350\256\260/9.5\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..023579d333093f0ba3dcd303a282f7f10b9efa57 --- /dev/null +++ "b/09\351\231\210\347\203\275\346\235\260/\347\254\224\350\256\260/9.5\347\254\224\350\256\260.md" @@ -0,0 +1,106 @@ +### 一,局部变量(==declare==) + +#### 1,声明 + +* 使用declare语句定义,并且指定变量的数据类型 +* 使用set或select语句初始化变量 +* **局部变量必须以‘’@‘’开头,必须先声明后使用** + +#### 2,格式 + +```sql +declare @变量名 变量类型[,@变量名 变量类型...] + +``` + +* **变量类型可以是SQL Server支持的所有数据类型,但对于局部变量text,ntext,image数据类型无效** +* 局部变量是字符型,则一定要在变量类型中指明最大长度(否则系统认为其长度为1) +* 局部变量不能使用‘’变量‘’=‘’变量值‘’ + + + +##### (1)初始化;(==select或set==) + +```sql +select @局部变量=变量值 +set @局部变量=变量值 +``` + +* ==select可以同时为多个变量赋值== + + ```sql + declare @变量名1 变量类型1[,@变量名2 变量类型2,@变量名3 变量类型3...] + select @变量名1=变量值1,@变量名2=变量值2,@变量名3=变量值3.... + ``` + +* ==set一次只能给一个变量赋值== + + ```sql + declare @变量名1 变量类型1[,@变量名2 变量类型2,@变量名3 变量类型3...] + set @变量名1=变量值1 + set @变量名2=变量值2 + set @变量名3=变量值3.... + ``` + + + +##### (2)局部变量输出(==select或print==) + +```sql +select @局部变量[,局部变量...] +print @局部变量 +``` + +##### (3)局部变量作用域 + +* 可以引用该变量的Transact-SQL语句的范围,变量的作用域从声明变量的地方开始到声明变量的批处理或储存过程的结尾 +* 变量也可以作用于查询条件来完成对数据表的查询,修改和删除 + + + +### 二,全局变量 + +* 系统内部的变量,用户无法定义与赋值 +* 作用范围并不局限某一程序,任何程序均可随意调用 +* 通常储存一些SQL Server的配置设置值 +* **全局变量名字前要有两个‘’@@‘’** +* 不能定义与全局变量同名的局部变量 + +#### 1,全局变量的符号及其功能 + +| 全局变量 | 功能 | +| ----------------- | -------------------------------------------------------- | +| @@CONNECTIONS | 最近一次启动以来登录或试图登录的次数 | +| @@CPU_BUSY | 最近一次启动以来CPUServer的工作时间 | +| @@CURRSOR_ROWS | 返回在本次连接最新打开的游标中的行数 | +| @@DATEFIRST | 返回SETDATEFIRST参数的当前值 | +| @@DBTS | 当前数据库中Timestamp数据类型的当前值 | +| @@ERROR | 系统生成的最后一个错误,若为0则成功 | +| @@FETCH_STATUS | 最近一条FETCH语句的标志 | +| @@IDENTITY | 保存最近一次的插入行的标识列的列值 | +| @@IDLE 自CPU | 服务器最近一次启动以来的累计空闲时间 | +| @@IO_BUSY | 自CPU服务器最近一次启动以来服务器输入/输出操作的累计时间 | +| @@LANGID | 当前使用的语言的ID | +| @@LANGUAGE | 当前使用语言的名称 | +| @@LOCK TIMEOUT | 返回当前锁的超时设置 | +| @@MAX_CONNECTIONS | 同时与SQL Server相连的最大连接数量 | +| @@MAX_PRECISION | 十进制与数据类型的精度级别 | +| @@NESTLEVEL | 当前调用存储过程的嵌套级,范围为0~16 | +| @@OPTIONS | 返回当前SET选项的信息 | +| @@PACK RECEIVED | 所读的输入包数量 | +| @@PACKET_SENT | 所写的输出包数量 | +| @@PACKET_ERRORS | 读与写数据包的错误数 | +| @@RPOCID | 当前存储过程的ID | +| @@REMSERVER | 返回远程数据库的名称 | +| @@ROWCOUNT | 最近一次查询涉及的行数 | +| @@SERVERNAME | 本地服务器名称 | +| @@SERVICENAME | 当前运行的服务器名称 | +| @@SPID | 当前进程的ID | +| @@TEXTSIZE | 当前最大的文本或图像数据大小 | +| @@TIMETICKS | 每一个独立的计算机报时信号的间隔(ms)数 | +| @@TOTAL_ERRORS | 读写过程中的错误数量 | +| @@TOTAL_READ | 读磁盘次数 | +| @@TOTAL_WRITE | 写磁盘次数 | +| @@TRANCOUNT | 当前用户的活动事务处理总数 | +| @@VERSION | 当前SQL Server的版本号 | +