T-SQL编程与高级查询
一、相关回顾
(1)建库的语法:
CREATE DATABASE <数据库名>
(2)建表的语法:
CREATE TABLE <表名> 字段名 字段数据类型 ……)
(3)T-SQL中是怎样添加注释的:
单行注释--,多行注释/**/
(4)T-SQL中定义变量用哪个关键字:
declare
(5)T-SQL中的全局变量和和局部变量的标识分别是:
全局变量@@,局部变量@
(6)T-SQL中用什么表示一个代码块:
begin开始,end结束
二、T-SQL编程与高级查询
(1)SQL批处理是一个或多个 Transact-SQL 语句的集合,由客户端一次性发送到SQL Server实例以完成执行。它表示用户提交给数据库引擎的工作单元。
同时,服务器将批处理语句编译成一个可执行单元,此单元称为执行计划。
(2)GO是SQL Server中批处理的分隔符
(3)在SQL里面我们用什么输出呢?
答:1、print:
1、以文本形式输出;
2、输出一个字符串,如果有多个变量或常量要输出,用+连接;
3、如果类型不一致,用convert函数转换;
4、输出的结果不易被java等应用程序直接得到
2、select:
1、以结果集形式输出;
2、可同时输出多个;
3、输出的结果可以被java等应用程序直接得到;
(4)变量的分类:
1、局部变量:
<1>局部变量必须以标记@作为前缀 ,如@age
<2>局部变量的使用也是先声明,再赋值
<3>局部变量赋值用set或select
DECLARE @变量名 数据类型
例如:DECLARE @name varchar(8)
DECLARE @seat int
2、全局变量:
<1>局部变量必须以标记@作为前缀 ,如@age
<2>全局变量必须以标记@ @作为前缀,如@@version
<3>全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值
赋值 SET @ 变量名 =值 或SELECT @变量名 = 值
SET @name=‘张三’SELECT @name=UserName FROM UserInfo WHERE UserId=1
(5)全局变量都使用两个@标志作为前缀
变量 含义
@@ERROR 最后一个T-SQL错误的错误号
@@IDENTITY 最后一次插入的标识值
@@LANGUAGE 当前使用的语言的名称
@@MAX_CONNECTIONS 可以创建的同时连接的最大数目
@@ROWCOUNT 受上一个SQL语句影响的行数
@@SERVERNAME 本地服务器的名称
@@TRANSCOUNT 当前连接打开的事务数
@@VERSION SQL Server的版本信息
(6)IF-ELSE语句:
SQL中的IF-ELSE语句
IF (条件)
BEGIN
语句1
语句2
……
END
ELSE
BEGIN
语句1;
语句2;
……
END
(7)WHILE循环语句:
SQL中的WHILE语句
WHILE (条件)
BEGIN
语句1
语句2
……
REAK
END
(8)CASE-END多分支语句:
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
……
ELSE 其他结果
END
三、小结:
(1)GO 的作用是什么?
整体提交
(2)流程控制语句有哪些?
IF WHILE
(3)子查询:
1、子查询在WHERE语句中的一般用法:
SELECT … FROM 表1 WHERE 字段1 >(子查询)
2、外面的查询称为父查询,括号中嵌入的查询称为子查询
UPDATE、INSERT、DELETE一起使用,语法类似于SELECT语句
将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个
例如:SELECT * FROM stuInfo
WHERE stuAge>( SELECT stuAge FROM
stuInfo where stuName='李斯文')
GO
子查询的优点:一般来说,表连接都可以用子查询替换,但有的子查询却不能用表连接替换
子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操纵一个表的数据
表连接更适合于查看多表的数据
(4)数据库的存在检测:
IF EXISTS(SELECT * FROM
sysDatabases WHERE name=’stuDB’)
DROP DATABASE stuDB
CREATE DATABASE stuDB
…….—建库代码略
(5)EXISTS子查询的语法:IF EXISTS (子查询)语句
备注:1、如果子查询的结果非空,即记录条数1条以上,则EXISTS (子查询)将返回真(true),否则返回假(false)
2、EXISTS也可以作为WHERE 语句的子查询,但一般都能用IN子查询替换
(6)合并多个表中的数据的方法有那些?
联合(Union)-合并多个数据表中的行
子查询-将一个查询包含到另一个查询中
联接-合并多个数据表中的列
(7)EXISTS子句有什么作用?
通过在子查询中使用EXISTS子句,可以对子查询中的行是否存在进行检查。
(8)IN子查询有什么作用?
IN子查询后面可跟随返回多条记录的子查询,用于检测某列的值是否在某个范围。
(9)变量赋值使用SET语句或SELECT语句;输出结果print语句和SELECT语句,print语句输出方式是文本形式,select是网格形式
(40)简单描述一下子查询可以如何划分?
使用比较运算符的子查询、IN和NOT IN子查询、EXISTS和NOT EXISTS子查询。子查询若按所处位置划分,可以为子查询在WHERE关键字之后, 子查询在FROM关键字之后、子查询在SELECT关键字之后。