SQL SERVER T-SQL编程与高级查询
<1>.T-SQL语句的分类
1.变量声明:局部变量@和全局变量@@
2.数据定义语言(DDL):用来建立数据库及数据库对象,绝大部分以create开头,如create table等
3.数据控制语言(DCL):用来控制数据库组件的存取许可,授权等命令。
4.数据操作语言(DML):用来操作数据库中数据的命令。如select ,update等。
5.流程控制语言(FCL):用于控制应用程序流程的语句,如if,case等。
<2>.批处理语句
1.SQL批处理是一个或多个 Transact-SQL 语句的集合,由客户端一次性发送到SQL Server实以 完成执行。它表示用户提交给数据库引擎的工作单元。 同时,服务器将批处理语句编译成一个可执行单元,此单元称为执行计划。
2.GO是SQL Server中批处理的分隔符;
3. GO 的作用是什么?
整体提交
<3>. 输出
1.在c语言中,我们用printf() 方法输出。
2.在C#中我们用Console.WriteLine()输出。
3.在SQL里面我们用什么输出呢?
print:
(1) 以文本形式输出
(2)输出一个字符串,如果有多个变量或常量要输出,用+连接;
(3)如果类型不一致,用convert函数转换;
(4)输出的结果不易被java等应用程序直接得到
select:
(1)以结果集形式输出;
(2)可同时输出多个;
(3)输出的结果可以被java等应用程序直接得到;
<4>.变量
局部变量:
局部变量必须以标记@作为前缀 ,如@age
局部变量的使用也是先声明,再赋值
局部变量赋值用set或select
全局变量:
局部变量必须以标记@作为前缀 ,如@@age
全局变量必须以标记@ @作为前缀,如@@version
全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值
全局变量(全局变量都使用两个@标志作为前缀)
变量 含义
@@ERROR 最后一个T-SQL错误的错误号
@@IDENTITY 最后一次插入的标识值
@@LANGUAGE 当前使用的语言的名称
@@MAX_CONNECTIONS 可以创建的同时连接的最大数目
@@ROWCOUNT 受上一个SQL语句影响的行数
@@SERVERNAME 本地服务器的名称
@@TRANSCOUNT 当前连接打开的事务数
@@VERSION SQL Server的版本信息
<5>.逻辑控制语句(IF-ELSE语句)
SQL中的IF-ELSE语句
IF (条件)
BEGIN
语句1
语句2
……
END
ELSE
BEGIN
语句1;
语句2;
……
END
注释: ELSE是可选部分,如果有多条语句,才需要BEGIN-END语句块
逻辑控制语句(WHILE循环语句)
SQL中的WHILE语句
WHILE (条件)
BEGIN
语句1
语句2
……
BREAK
END
注释BREAK表示退出循环,如果有多条语句,才需要BEGIN-END语句块
逻辑控制语句(CASE-END多分支语句)
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
……
ELSE 其他结果
END
流程控制语句有哪些?
IF WHILE
<6>.什么是子查询
采用子查询实现
(1).子查询在WHERE语句中的一般用法:
(2).SELECT … FROM 表1 WHERE 字段1 >(子查询)
(3). 外面的查询称为父查询,括号中嵌入的查询称为子查询
(4).UPDATE、INSERT、DELETE一起使用,语法类似于SELECT语句
(5).将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个
<7>.使用子查询替换表连接
采用子查询
(1).一般来说,表连接都可以用子查询替换,但有的子查询却不能用表连接替换
(2).子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操纵一个表的数据
(3).表连接更适合于查看多表的数据
我们曾学习过的查询,合并多个表中的数据的方法有那些?
(1).联合(Union)-合并多个数据表中的行
(2).子查询-将一个查询包含到另一个查询中
(3).联接-合并多个数据表中的列
<8>. EXISTS子句有什么作用?
通过在子查询中使用EXISTS子句,可以对子查询中的行是否存在进行检查。
<9>.IN子查询有什么作用?
IN子查询后面可跟随返回多条记录的子查询,用于检测某列的值是否在某个范围。
<10>.变量的赋值有哪两种方式?输出结果有哪两种方式,有什么区别?
变量赋值使用SET语句或SELECT语句;输出结果print语句和SELECT语句,print语句输出方式是文本形式,select是网格形式。
<11>.T-SQL语句用什么来表示语句块?
语句块使用BEGIN…END
<12>.简单描述一下子查询可以如何划分?
使用比较运算符的子查询、IN和NOT IN子查询、EXISTS和NOT EXISTS子查询。子查询若按所处位置划分,可以为子查询在WHERE关键字之后,子查询在FROM关键字之后、子查询在SELECT关键字之后