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关键字之后。