建库
(1)先查看要创建的数据库是否存在和开启xp_cmdshell
use master
go
if exists (select * from sysdatabases where name = '数据库名')
drop database 数据库名
exec sp_configure 'show advanced options',1--0|关闭;1|打开
go
reconfigure
go
exec sp_configure 'xp_cmdshell',1
go
reconfigure
go
exec xp_cmdshell 'mkdir d:\sqldata'--表示在d:\下建一个sqldata文件,rmdir表示删除
reconfigure
go
alter table table1
drop constraint CK__table1__Email__1920BF5C
go
–在删除列
alter table table1
drop column Email
go
T-SQL 编程
(1) 变量
变量定义 : declare @变量名1 类型, @变量名2 类型
赋值 : set @变量名1 = 值 --set 只能给单一变量赋值
select @变量名1 = 值, @变量名2 = 值--可以多个变量赋值
select @变量名1 = 列名 from 表
–这样到这列的最后一个值(重复赋值,所以要确保只有一条)
当表达式返回多个值时: set 出错
select 将最后一个值赋给变量
当表达式未返回值时: set 变量被赋null值 select 变量保持原值
常用全局变量:
@@ERROR最后一个错误的错误代码
@@IDENTITY 最后一次插入的主键值
@@servername 本地服务器的名称
@@version SQL Server的版本信息
(2)流程控制
条件: if ()
begin
end
else
bengin
end
循环:
while ()
begin
break --跳出循环
end
(用在查询的时候)多分支:
case
when 条件1 then 结果1
when 条件2 then 结果2
.....
else 其他结果
end
事务
begin tran --开始事务
rollback tran --回滚事务
commit tran --提交事务
example:
BEGIN tran --转账业务
declare @error int,@debt numeric(18,2)
set @error = 0
set @debt = 800
UPDATE Account SET accountMoney= accountMoney-@debt
WHERE accountNo = '001'
SET @error = @error+@@error
UPDATE Account SET accountMoney= accountMoney+@debt
WHERE accountNo = '002'
SET @error = @error+@@error
if @error>0
rollback tran
else
commit tran
SELECT * FROM Account
视图–将select的结果集变成一张虚拟表,课直接使用,增删改结果影响原表
create view 视图名
as
select语句
go
if exists (select * from sysindexes where name = '索引名' )
drop index 表名.索引名
create 索引类型 index 索引名
on table_name (列名)--在那一列建
[with fillfactor = x]--填充因子:指定0-100之间,表示索引页填充的百分比
(2)使用索引查询
select * from student
with (index = 索引名)
where studentname like '李%'
表示用这个索引查找姓李的学生