T-SQL
T---SQL
SQL: 通用的SQL语言
T-SQL: 微软对SQL的扩展 (流程控制 存储过程 事物 触发器 错误处理 等)
注释:-- 单行注释 /**/ 多行注释
数据定义语言(DDL):建立数据库及数据库对象 create
数据控制语言 (DCL):控制数据库组件的存取许可 权限等命令
数据操作语言(DML):操作数据库 select update
流程控制语言 (FCL):控制流程的语句
批处理 : GO SQL批处理是一个或多个 Transact-SQL 语句的集合,由客户端一次性发送到SQL Server实例以完成执行
定义变量: declare ( 先声明,再赋值 )
局部变量 标识: @ 全局变量:@@
例: declare @name varchar(10)
declare @age int
变量赋值 :
set @age=10 只能单个(set @age=10,@name=’张三’ 错 )
select @age=10 配合查询 (set @age=10,@name=’张三’ 对 )
输出方式:
print:
1、以文本形式输出;
2、输出一个字符串,如果有多个变量或常量要输出,用+连接;
3、如果类型不一致,用convert函数转换;
4、输出的结果不易被java等应用程序直接得到
select:
1、以结果集形式输出;
2、可同时输出多个;
3、输出的结果可以被java等应用程序直接得到;
变量 |
含义
|
@@ERROR |
最后一个T-SQL错误的错误号
|
@@IDENTITY
|
最后一次插入的标识值 |
@@LANGUAGE |
当前使用的语言的名称
|
@@MAX_CONNECTIONS
|
可以创建的同时连接的最大数目 |
@@ROWCOUNT |
受上一个SQL语句影响的行数
|
@@SERVERNAME |
本地服务器的名称
|
@@TRANSCOUNT |
当前连接打开的事务数
|
@@VERSION |
SQL Server的版本信息
|
@@ CONNECTION |
连接数 |
@@SERVICENAME |
注册表名称 |
条件控制语句:
(1) if-else
if(判断条件)
begin
语句1
语句2
end
else
begin
语句1
语句2
end
(2) case
-- 简单格式
select pcid,
case PCUse
when 0 then '空闲'
when 1 then '忙碌'
end as 'pcuse'
,pcnote from pcinfo
-- 搜索格式
select pcid,
case
when PCUse = 0 then '空闲'
when PCUse = 1 then '忙碌'
end as 'pcuse'
,pcnote from PCInfo
(3) while
while (循环成立的条件)
语句xxx
[break]
[continue]
declare @count int
while(1=1)
begin
select @count = COUNT(*) from cardInfo where cardBalance < 20
if (@count > 0)
update cardInfo set cardBalance = cardBalance + 1 where cardBalance < 20
else
break
end
语句块 begin 开始 end 结束
查询方式:
使用比较运算符的子查询、IN和NOT IN子查询、EXISTS和NOT EXISTS子查询。子查询若按所处位置划分,可以为子查询在WHERE关键字之后,子查询在FROM关键字之后、子查询在SELECT关键字之后。
In 查询
select * from course where cNO in (select cNO from score where grade is not null)
连接查询
select distinct cname,cteacher from course a inner join score b on a.cNo = b.cNO
select a.stuId,a.stumName,b.BID,b.title,c.T_time from student a, book b, borrow c
where a.stuId=c.stuID and b.BID=c.BID and a.major='计算机'
and c.T_time between '2007-12-15' and '2008-1-8'
子查询
select * from student where stuId in(select stuId from borrow where T_time is not null)