《SQL Server 二零零六从入门到精晓》–20180703

发布时间:2019-02-22  栏目:SQL  评论:0 Comments

1.4.1.1.种类全局变量

系统全局变量分为两大类,一类是与自然SQL
Server连接或与目前处理有关的全局变量,如@@Rowcount意味着如今叁个说话影响的行数。@@error意味着保留近期施行操作的谬误状态。一类是与一切SQL
Server系统有关的全局变量,如@@Version表示近年来SQL Server的版本新闻。

SELECT @@VERSION AS 当前版本;--查看当前SQL Server的版本信息

结果如图所示
图片 1

本来连接

须求连接条件是千篇一律的属性组,且用等号连接,并在结果中把重复的习性列去掉。自然连接是去掉重复属性列的等值连接。
在SQL Server 二零零六中,不协助NATURAL
JOIN关键字,在其他数据库中得以行使主要字NATURAL JOIN进行连接。

SELECT * FROM Vendors NATURAL JOIN Products;

地点的三个两次三番示例中,示例1是本来连接,示例2因为有重新列vend_id由此不满足自然连接的定义。示例3因为老是条件不是用等号连接,且两次三番条件属性列不同,由此不满足自然连接的概念。

注:对等值连接和自然连接的概念不是很清晰,后续弄精晓了会有补充。

重点难题
1.贰个连接满足等值连接全部规则,唯独查询结果中不带有被连接表的富有列,而只含有部分列,是或不是是等值连接。
2.等值连接是不是必须含有重复列,不分包重复列但满意等值连接其他标准,是不是就不是等值连接?网上说本来连接是特殊的等值连接,根据自然连接不分包重复列的定义,那么等值连接也得以不带有重复列。
3.理所当然连接是或不是需求连接条件的属性列列名和数据类型都相同?如若仅列名差别,其他条件都知足自然连接,是或不是可以判明为本来连接。百度当然连接的定义说列名不自然相同,但网上也有人说列名必须一致。(答案是列名必须一律。自然连接会活动匹配列名相同列,假使列名相同,数据类型不一致,能进行隐式转换就能匹配成功,不可以开展隐式转换就会报错)
Natural Join: Guidelines

  • The associated tables have one or more pairs of identically named
    columns.
  • The columns must be the same data type.
  • Don’t use ON clause in a natural join.

    注:关于两表中富含七个相同列,怎么样挑选一些列作为连接字段举行自然连接,在其它小说中再详述。

    ##### 外连接

    与内接连的分别在于,假如表中有多少在另一张表中找不到连年对象,内接连的做法是在结果中忽视这几个多少不打印,而外连接的做法是打印那个数据,而这个数量在另一张表中的连接对象则打印成NULL。
    涉足外接连的表有主从之分,依照表的地方和讲话中内定的第壹字,外接连可分为左外连接,右外连接,完全连接。

    ###### 左外连接(LEFT OUTE翼虎 JOIN)

    再次回到JOIN左侧表全部行,且再次来到JOIN左侧表中能匹配上的行并对八个表的行进行匹配。

    ###### 右外接连(景逸SUVIGHT OUTRE JOIN)

    回来JOIN右边表全体行,且再次回到JOIN右侧表中能匹配上的行并对三个表的行开展匹配。

    ###### 完全连接(FULL OUTEGL450 JOIN)

    回到JOIN左右两侧表全部能合营的行和不可以合营的行。
    上面依次举例
    示例4:Student表和Stu_Grade表
    Student表数据如下
    图片 2
    Stu_Grade表数据如下
    图片 3

    ###### 对Student表和Stu_Grade表的左外连接

SELECT* FROM Student--左外连接,Student表为主,Stu_Grade表为从
LEFT OUTER JOIN Stu_Grade
ON Student.stu_id=Stu_Grade.stu_id;

询问结果如图所示
图片 4
图中显示了主表(Student)的全体行和从表(Stu_Grade)的片段行。

3.6.RETUHavalN无条件退出语句

该语句表示无条件截至查询,批处理或存储过程的实践。存储进程和批处理RETU奥迪Q3N语句前面的言辞都不再举行。当在储存进度中行使该语句时,可以内定重回给调用应用程序、批处理或进程的整数值。即便RETULX570N未指定再次回到值,则存储进度的再次来到值是0

JOIN连接

先是大家先来看一下最简易的两次三番。Products表和Vendors表的一连
示例1
Products表数据如下
图片 5
Vendors表数据如下
图片 6
将那两张表经过以下语句连接

USE test
SELECT prod_name,Products.vend_id,vend_name
FROM Products,Vendors
WHERE Products.vend_id=Vendors.vend_id;
--连接条件为两张表的vend_id相同

连接结果如下
图片 7
当用户所需数据不在二个表中,而在七个表中,就须求采取多表连接,将多少个表中的数额整合到联合,使数据更直观地浮现出来。在上述语句中,通过JOIN我们得以从结果中很显然地了然产品及其供应商。

2.运算符

SELECT操作多表数据

有关连接的标题,在《SQL必知必会》学习笔记中已经讲到过,可是并未领会完全,所以再学一下。

3.8.TMuranoY CATCH错误处理语句

设若T中华VY块内部暴发错误,会将决定传递给CATCH块内的语句组。T凯雷德Y
CATCH构造捕捉全数严重级别大于10但不会告一段落数据库连接的荒唐。
示例15:TRY CATCH的示例
实施下列语句

BEGIN TRY
SELECT * FROM Student
SELECT 120/0 FROM Student
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS '错误信息'
END CATCH

进行结果如图所示
图片 8
语句中一个select语句全体都履行了。如果把报错的select语句放到正常的select语句前边,符合规律的select语句还是可以不只怕执行吗?执行下列语句

BEGIN TRY
SELECT 120/0 FROM Student
SELECT * FROM Student
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS '错误信息'
END CATCH

结果如图所示
图片 9
不荒谬select语句不能推行。TXC60Y
CATCH语句的逻辑是,一旦T景逸SUVY语句块中冒出难点讲话,立时跳转到CATCH语句块,TSportageY语句块接下去的言辞不再实施。

接力连接

穿插连接将扭转来自四个基表全部可能的三结合。不接纳WHERE子句,交叉连接的结果是三个基表全体行的笛Carl积,使用WHERE子句,交叉连接的结果满意WHERE子句条件的多少行数的笛Carl积
示例5:Student表和Course表演示交叉连接
Student表如图所示,为了更直观地看出数据,作者压缩了有的Student表的多寡
图片 10
Course表如图所示
图片 11

2.1.算数运算符

在SQL Server
二零零六中,算数运算包涵加(+)减(-)乘(*)除(/)取模(%)。举2个大约的例证。
示例1:在Student表中添加一列,列名为stu_age,根据Student表的stu_birthday列计算stu_age列并插入数据。(演示插入整列数据的措施)
Student表数据如图所示
图片 12
执行上边的话语

ALTER TABLE Student
ADD stu_age int;--在Student表中添加stu_age列
CREATE TABLE #agetemp(stu_no varchar(8),age int);--新建一个临时表
INSERT INTO #agetemp(stu_no,age)--在临时表中插入学号和计算出来的年龄
SELECT Student.stu_no,YEAR(GETDATE())-YEAR(stu_birthday)--利用函数和运算符计算年龄
FROM Student;
UPDATE Student
SET Student.stu_age=#agetemp.age--将临时表中的age列数据整个复制到Student表的stu_age列
FROM #agetemp
WHERE Student.stu_no=#agetemp.stu_no--条件是两个表的stu_no列值相等
GO
SELECT * FROM Student

结果如图所示
图片 13

内连接

内连接是一种相比较常用的数码连接查询格局,上述语句就是内接连。上面将送交另一种内连接的语法。两者的询问结果是一致的。

--内连接INNER JOIN
USE test
SELECT prod_name,Products.vend_id,vend_name
FROM Products INNER JOIN Vendors--和上面语句差异之处
ON Products.vend_id=Vendors.vend_id;

注:使用INNEENCOREJOIN时,关键字INNE中华V可省略,可是接连条件必须用ON连接,不可以用FROM了。

内延续分为等值连接,非等值连接和自然连接三种。

3.1.BEGIN END语句块

BEGIN END可以定义SQL
Server语句块,使那一个讲话作为一组语句执行,允许语句嵌套。举例请见示例4

对Student表和Stu_Grade表的右外接连
SELECT* FROM Student--右外连接,Student表为从,Stu_Grade表为主
RIGHT OUTER JOIN Stu_Grade
ON Student.stu_id=Stu_Grade.stu_id;

查询结果如图所示
图片 14
图中浮现了主表(Stu_Grade)的全数行和从表(Student)的某些行。

4.常用函数

对Student和Course表进行无WHERE子句的穿插连接
SELECT * FROM Student
CROSS JOIN Course;

查询结果如图所示
图片 15
共24条数据,正是Student表和Course表的笛Carl积。

3.说了算语句

非等值连接

三番五次条件中接纳除等号以外的相比较运算符来相比较连接列的列值。例如利用>,<,>=,<=,<>等,也足以接纳范围运算符BETWEEN。下边用stu表和class表来示范非等值连接
示例3
新建stu表并插入数据,stu表用来表示学生和该学生的年级总成绩

    CREATE TABLE stu(
    sto VARCHAR(8) NOT NULL,
    stname VARCHAR(20) NOT NULL,
    stsex CHAR(2),
    stgrade FLOAT,
    CONSTRAINT pk_sto PRIMARY KEY(sto),
    CONSTRAINT ck_stsex CHECK(stsex in('男','女'))
    );
    INSERT INTO stu(sto,stname,stsex,stgrade)
    VALUES('20180101','李华','男','568'),
    ('20180102','张三','男','627'),
    ('20180103','孙丽','女','339'),
    ('20180104','袁康','男','482'),
    ('20180105','王婷','女','761'),
    ('20180106','赵四','男','568'),
    ('20180107','周其','女','348.5'),
    ('20180108','吴伟','男','528.5'),
    ('20180109','甄诚','女','702');
    SELECT * FROM stu;

stu表数据如下
图片 16
新建class表并插入数据,class表用来表示分班意况和年级总分之间的涉嫌

    CREATE TABLE class(
    cla_no CHAR(2),
    cl CHAR(1),
    flag CHAR(6),
    gradelevel_h INT,
    gradelevel_l INT,
    CONSTRAINT pk_cla_no PRIMARY KEY(cla_no),
    CONSTRAINT ck_cl CHECK(cl in('A','B','C','D'))
    );
    INSERT INTO class(cla_no,cl,flag,gradelevel_l,gradelevel_h)
    VALUES('01','A','创新班','700','750'),
    ('02','B','重点','650','700'),
    ('03','B','重点','600','650'),
    ('04','C','提高','500','600'),
    ('05','C','提高','400','500'),
    ('06','D','补习','300','400'),
    ('07','D','补习','0','300');
    SELECT * FROM class;

Cla表数据如下
图片 17
前几日要透过查询直观反映出学生分班情状

    SELECT sto,stname,cla_no,flag,stgrade
    FROM stu INNER JOIN class
    ON stu.stgrade<=class.gradelevel_h AND stu.stgrade>class.gradelevel_l
    ORDER BY sto;

结果如图所示
图片 18

2.3.位运算符

位运算符包蕴与运算(&),或运算(|)和异或运算(^),可以对多个表达式举行位操作,那八个表明式可以是整型数据或二进制数据。Transact-SQL首先把整型数据转换为二进制数据,然后按位运算。举个简单的事例。
示例3:注脚三个int型变量@num1,@num2,对那四个赋值且做与或异或运算。
实施上面的语句

DECLARE @num1 int,@num2 int
SET @num1=5 
SET @num2=6
SELECT @num1&@num2 AS 与,
@num1|@num2 AS 或,
@num1^@num2 AS 异或

结果如图所示
图片 19
壮大示例4:写1个十进制转换为二进制的函数

CREATE FUNCTION Bin_con_dec(@dec int)--定义十进制转换为二进制函数
RETURNS varchar(20)
AS
BEGIN
DECLARE @quo int,@remainder varchar(20),@quo1 int
SET @quo=@dec
SET @remainder=''
WHILE @quo<>0
BEGIN
SET @quo1=@quo/2
SET @remainder=CAST(@quo%2 AS varchar(20))+@remainder
SET @quo=@quo1
END
RETURN @remainder
END

实施上边的函数后,运转下列语句验证函数正确性

PRINT dbo.Bin_con_dec(42)

结果为101010,函数定义正确。

对Student表和Course表进行有WHERE子句的陆续连接
SELECT * FROM Student
CROSS JOIN Course
WHERE Student.stu_id='20180101';

询问结果如图所示
图片 20
Student表中满意WHERE子句的唯有1条数据,查询结果正是那条数据和Course表的笛Carl积。

4.1.数据类型转换函数

默许景况下SQL
Server会对某些数据类型举行机动转换,这种转移称为隐式转换。遭逢不可以自动转换,则须求用CAST()函数和CONVERT()函数转换,那种转移称为显式转换。CAST()函数和CONVERT()函数的功效是同等的,CAST函数更易于采用,CONVECR-VT函数的优点是足以钦赐日期和数值格式。
示例16:将Student表中的学号转换为日期格式
下边两句语句的意义是同样的,执行下列语句

SELECT stu_name,CAST(stu_no AS DATE) AS 学号转换成日期,stu_enter_score,stu_birthday FROM Student
SELECT stu_name,CONVERT(DATE,stu_no) AS 学号转换成日期,stu_enter_score,stu_birthday FROM Student

结果如图所示
图片 21
示例17:用CONVERT()函数将stu_birthday转化成钦点格式的日子
进行下列语句

SELECT stu_name,CONVERT(VARCHAR(20),stu_birthday,101) FROM Student
--CONVERT函数将DATE类型的stu_birthday字段转化为字符串,并限定了样式,代码101

结果如图所示
图片 22

注:在上述代码中,CONVEQashqaiT(DATE,stu_birthday,101)这么写是没用的。101格式码只对日期格式转化为字符串有效,其他格式转化为日期格式是于事无补的。

别的常用函数太简单了此处不写了,略。

自连接

3个表与作者相连接的询问。首若是用于处理列与列之间的涉及。以PCourse表为例,CNumber代表该科目标科目号,PCNumber代表该课程的先修课课程号。
示例6:PCourse表的自连接查询
PCourse表的数额如图所示
图片 23
对PCourse表举办自连接查询

SELECT A.PCNumber,A.PCName,B.CNumber,B.CName
FROM PCourse A,PCourse B
WHERE A.CNumber=B.PCNumber;

询问结果如图所示
图片 24

2.6.连接运算符

加号(+)是字符串连接运算符,可以用它把字符串串连起来,在示例4的十进制转二进制函数中,就用上了加号。
示例7:将Student表的stu_name列和stu_enter_score列放在同样列显示,列名为score
Student表的数额如图所示
图片 25
实施下列语句

SELECT stu_name+CAST(stu_enter_score AS VARCHAR(3)) AS score FROM Student

实践结果如图所示
图片 26

注:stu_enter_score列数据类型为int,加号只对字符串类型数据有效,因而要用CAST函数将stu_enter_score的数据类型转换为varchar(3),这样才能落到实处字符串拼接。

等值连接

老是条件用等号相连,查询结果中列出被连接表中的全部列,包罗重复列。为了特别形象地反映“列出重复列”这一个个性,接下去或然用Products和Vendors表来比喻。逻辑是:一种产品方可对应多个供应商,二个供应商能够生育二种产品。
示例2
Products表数据如下
图片 27
Vendors表数据如下
图片 28
下一场实施等值连接的代码

SELECT * FROM Vendors,Products
WHERE Vendors.vend_id=Products.vend_id;

结果如图所示
图片 29
可以观望,在结果中vend_id列重复。

注:等值连接要满意1个尺码,连接条件用=号,查询结果中隐含被接连表中负有列,包括重复列。

目录

对Student表和Stu_Grade表的完全连接
SELECT* FROM Student--完全连接
FULL OUTER JOIN Stu_Grade
ON Student.stu_id=Stu_Grade.stu_id;

询问结果如图所示
图片 30
图中突显了Student表和Stu_Grade表的富有行。

2.5.逻辑运算符

逻辑运算符的效应是对规格进行测试。ALL,AND,ANY,BETWEEN,EXISTS,IN,LIKE,NOT,ALL,SOME。上边用SOME来比喻。SOME的法力是一旦在一组相比中,有个别为true那就为true。
示例6:查询Student表中是不是留存入学成绩超乎平均分的学生,借使存在,输出true,不设有输出false。
Student表的stu_enter_score列(入学成绩)数据如图所示
图片 31
实施下边的口舌

USE test
IF (SELECT AVG(stu_enter_score) FROM Student)<=SOME(SELECT stu_enter_score FROM Student)
PRINT 'true'
ELSE
PRINT 'false'
GO

结果如图所示
图片 32

1.1.多少定义语言DDL

是最基础的Transact-SQL语言类型,用来成立数据库和创办,修改,删除数据库中的各类对象,为任何语言的操作提供对象。例如数据库,表,触发器,存储进度,视图,函数,索引,类型及用户等都以数据库中的对象。常见的DDL语句包涵

CREATE TABLE--创建表
DROP TABLE--删除表
ALTER TABLE--修改表

1.2.数据操纵语言DML

是用来操纵表和视图中的数据的说话,例如查询数据(SELECT),插入数据(INSERT),更新数据(UPDATE)和删除数据(DELETE)等。

3.4.WHILE语句

用以安装双重执行T-SQL语句或语句块的规格。
示例11:用“*”在屏幕上输出1个肥瘦为9的菱形。
推行下列语句

DECLARE @width int,@j int
SET @width=9--@width为菱形的最大宽度
SET @j=1--@j表示每行打印的“*”符号的个数
WHILE @j<=@width
BEGIN
PRINT SPACE((@width-@j)/2)+REPLICATE('*',@j)--SPACE函数打印n个空字符,REPLICATE打印n个特定字符串
SET @j=@j+2
END
SET @j=@width-2
WHILE @j>0
BEGIN
PRINT SPACE((@width-@j)/2)+REPLICATE('*',@j)
SET @j=@j-2
END

结果如图所示
图片 33

3.3.CASE分支语句

示例10:将Student表的学生,性别和原籍打印出来,须要籍贯只可以展现省里,省里或自治区。
Student表的数据如图所示
图片 34
推行下列语句

SELECT stu_name AS 姓名,stu_sex AS 性别,
(CASE stu_native_place
WHEN '浙江' THEN '省内'
WHEN '内蒙古' THEN '自治区'
WHEN '西藏' THEN '自治区'
WHEN '宁夏' THEN '自治区'
WHEN '新疆' THEN '自治区'
WHEN '广西' THEN '自治区'
ELSE '省外'
END) AS 籍贯 
FROM Student

结果如图所示
图片 35

1.4.Transact-SQL言语功底

2.7.一元运算符

一元运算符只对二个表明式执行操作,该表达式可以是数字数据类型中的任何一种数据类型。SQL
Server 二〇〇九提供的一元运算符包涵正(+),负(-),位反(~)。
示例8:声飞鹤个int数据类型变量@num并赋值,对该变量做正负位反操作。
施行下列语句

DECLARE @num INT
SET @num=45
SELECT +@num AS 正,-@num AS 负,~@num AS 位反
GO

结果如图所示
图片 36

注:位反操作符用于取一个数的补数,只好用于整数。

2.2.赋值运算符

即等号(=),将表明式的值赋予另七个变量。举贰个不难易行的例证。
示例2:总结Student表中学生的平分入学成绩并打印。
Student表的多寡如图所示,stu_enter_score列存放了学生的入学成绩
图片 37
履行下边的说话

DECLARE @average int--声明@average变量
SET @average=(--将计算出的平均值赋值给@average
SELECT AVG(stu_enter_score)
FROM Student)
PRINT @average--打印@average的值

结果如图所示
图片 38

3.7.GOTO跳转语句

该语句使T-SQL批处理的举办跳转至内定标签。由于该语句破坏结构化语句的构造,尽量少用
示例13:将GOTO作为分支机制
实施下边语句

DECLARE @Counter int;  
SET @Counter = 1;  
WHILE @Counter < 10  
BEGIN   
    SELECT @Counter  
    SET @Counter = @Counter + 1  
    IF @Counter = 4 GOTO Branch_One --Jumps to the first branch.  
    IF @Counter = 5 GOTO Branch_Two  --This will never execute.  
END  
Branch_One:  
    SELECT 'Jumping To Branch One.'  
    GOTO Branch_Three; --This will prevent Branch_Two from executing.  
Branch_Two:  
    SELECT 'Jumping To Branch Two.'  
Branch_Three:  
SELECT 'Jumping To Branch Three.';

结果如图所示
图片 39
当Counter=4时,执行GOTO语句输出Branch
One,执行完那些讲话之后就打破了WHILE循环,接着执行Branch_One语句中的GOTO,输出Branch
Three,停止。

注:在WHILE循环中采纳GOTO会打破循环。

示例14:用GOTO语句完结示例11中打印菱形的法力
实践下列语句

DECLARE @width int,@j int,@i int
SET @width=9--@width为菱形的最大宽度
SET @j=1--@j表示每行打印的“*”符号的个数
SET @i=1--@i表示下一行打印第i行
Set3:PRINT SPACE((@width-@j)/2)+REPLICATE('*',@j)--SPACE函数打印n个空字符,REPLICATE打印n个特定字符串
SET @i=@i+1
IF @i<=(@width+1)/2
GOTO Set1
ELSE
GOTO Set2
Set1:
SET @j=@j+2
GOTO Set3
Set2:
SET @j=@j-2
IF @j>=1
GOTO Set3

结果如图所示
图片 40

1.3.数量控制语言DCL

提到到权力管理的语言称为数据控制语言,主要用以实践有关安全治本的操作。如授予权限(GRANT),收回权限(REVOKE),拒绝授予主体权限,并预防主体通过组或角色成员持续权限(DENY

2.4.相比运算符

也称关系运算符,用于相比多个值的涉及,常见的有等于(=),大于(>),小于(<),大于等于(>=),小于等于(<=),不对等(<>或!=)
示例5:从Student表中询问入学战绩在平均分以上的学员音信
Student表的数额如图所示
图片 41
施行下列语句

DECLARE @ave int
SET @ave=(SELECT AVG(stu_enter_score) FROM Student)
SELECT *FROM Student
WHERE stu_enter_score>=@ave;

结果如下图所示
图片 42

注:不或然直接把代码写成上面的情势

SELECT * FROM Student
WHERE stu_enter_score>=AVG(stu_enter_score)

消息147,级别15,状态1,第2 行
集合不应出现在WHERE 子句中,除非该聚合位于HAVING
子句或选取列表所包罗的子查询中,并且要对其开展联谊的列是外部引用。

因为AVG是聚合函数。

3.5.WAITFO奇骏推迟语句

WAITFO福特Explorer延迟语句可以让在它以后的说话在2个内定的每一日或许时间距离后实施,可以悬挂起批处理,存储进程或作业的实施。
示例12:在有些时刻点查询Student表学号为20180101的学童消息

BEGIN
WAITFOR TIME '15:03'--在15点03分查询
SELECT * FROM Student
WHERE stu_no='20180101'
END

示例13:在3分钟后查询Student表学号为20180102的学员音信

BEGIN
WAITFOR DELAY '00:03'--在3分钟后查询
SELECT * FROM Student
WHERE stu_no='20180102'
END

图片 43

3.2.IF ELSE语句块

用以内定T-SQL语句的履行规范,若条件为真,则执行尺度表明式后边的话语,条件为假时,可以试用ELSE关键字内定要进行的T-SQL语句。举例请见示例4

1.4.1.常量与变量

常量不多说。在SQL Server
二零零六中,存在二种变量。一种是系统定义和护卫的全局变量,一种是用户定义用来保存中间结果的一部分变量。

2.8.运算符的优先级

优先级 运算符
1 ~(位反)
2 *(乘),/(除),%(取模)
3 +(正),-(负),+(加),+(连接),-(减),&(位与)
4 =,>,<,>=,<=,<>,!=,!>,!<(比较运算符)
5 ^(位异或),位或(符号打不出来,前面有,自己翻)
6 NOT
7 AND
8 ALL,ANY,BETWEEN,IN,LIKE,ALL,SOME
9 =(赋值)

当表达式中的运算符有相同的先行级时,根据它们在表明式中的地点,一元运算符按从右往左运算,二元运算符(对多个表达式功效的运算符)按从左往右运算。
示例9:验证运算符优先级
实践下列语句

DECLARE @result INT,@num INT
SET @num=45
SET @result=@num+(~@num)*4-@num/(~@num)
SELECT @result AS result
GO

结果如图所示
图片 44
计量代码中的表明式
@result=@num+(~@num)4-@num/(~@num)
=@num+(-46)
4-@num/(-46)
=45+(-46)4-45/(-46)
=45+(-46)
4
=-139

1.行使Transact-SQL语言编程

尽管SQL Server
二零零六提供了图形化界面,但只有一种Transact-SQL语言可以直接与数据库引擎举行互动。依照实施效用特色可以将Transact-SQL语言分成3大类:数据定义语言DDL,数据操纵语言DML,数据控制语言DCL。

1.4.1.2.局地变量

局地变量可以享有一定数据类型,有早晚的成效域,一般用于充当计数器计算或控制循环执行次数,大概用于保存数据值。局地变量前唯有三个@符,用DECLARE语句评释局地变量。

USE test
DECLARE @StudentId varchar(20)
SET @StudentId=(
SELECT Student.stu_no
FROM Student
WHERE stu_enter_score='603')
SELECT @StudentId AS 入学分数为603的学生学号
GO

结果如图所示
图片 45

留下评论

网站地图xml地图