阅读更多
1.创建数据库
/*创建数据库libraryDB*/
CREATE DATABASE libraryDB
ON
(
/*数据库文件的详细描述*/
NAME = 'libraryDB_mdf', --主数据库文件的逻辑名
FILENAME = 'E:\library\libraryDB_mdf.mdf', --主数据文件的物理名
SIZE = 3MB, --初始大小
FILEGROWTH = 20% --增长率
)
LOG ON
(
/*日志文件的详细描述*/
NAME = 'libraryDB_ldf', --日志文件的逻辑名
FILENAME = 'E:\library\libraryDB_ldf.ldf', --日志文件的物理名
SIZE = 1MB, --初始大小
MAXSIZE = 15MB, --最大值
FILEGROWTH = 10% --增长率
)
GO
2.
数据表(创建|修改|删除)
if exists (select 1 from sysobjects where [name]='BookType')
drop table BookType
--创建图书类型表:BookType
(
TypeName varchar(50) not null, --图书类型名称
)
alter table BookType
--删除表BookType
3.
创建主键
--为表添加主键
add constraint PK_ProductInfo_ProductId primary key(ProductId)
4.
创建外键
--为表添加外键
add constraint FK_Promotion_Product foreign key (ProductId) references ProductInfo(ProductId)
5.
检查约束
--创建检查约束(商品编号的长度大于2)
add constraint CK_Product_Number check(len(ProductNumber)>2)--删除外键只需要将add替换为drop
--check(Gender in ('男', '女'))
6.
惟一约束
alter table productinfo
7.
T-SQL编程(定义变量、为变量赋值)
--T-SQL中定义变量
declare @i int;
set @sum = 0;
select @sum=0,@i=1;
8.
T-SQL编程(if-else循环)
declare @i int;
if(@i%2 = 0)
else
go
9.
T-SQL编程(while)
declare @i int;
while (@i
print @i;
end
10.
T-SQL编程(case)
select intComputerId,
when intInUse=0 then '空闲'
end,
from tblcomputer;
select intComputerId,
when 0 then '空闲'
end,
from tblcomputer
11.
视图
create view view_RecordDetail
select cp.chvComputerName, ci.chvUserName, ri.dtmStart, ri.dtmEnd, ri.mnyFee
inner join TblCardInfo as ci on ri.intCardId=ci.intCardId--内连接用inner join,同时应该为两张表指定连接字段
--使用视图(和表很相似)
12.
存储过程(无参数)
--创建不带参数的存储过程
as
select * from tblcomputer;
--调用不带参数的存储过程
13.
存储过程(含输入参数)
create procedure pro_getComputerState
as
select intComputerId,
when 0 then '未使用'
end,
chvDescription
where intInuse=@state
go
declare @state int;
exec pro_getComputerState @state;
14.
存储过程(含输入参数、输出参数)
create proc pro_getComputerStateById
@state int output
begin
from tblcomputer
end
declare @state int, @computerId int;
exec pro_getComputerStateById @computerId,@state output
15.
触发器
--判断触发器是否存在,存在则删除触发器
drop trigger tr_insertRecord
--如何定义|创建一个触发器
on TblRecordInfo
as
declare @cardid int, @startTime datetime;
select '卡号:'+convert(nvarchar(5), @cardid);
end
16.
事务处理
declare @sumError int;
begin transaction
--通过系统变量@@error可以获取上次被执行的sql是否执行成功,如果执行成功@@error的值为0,否则为1
update tblaccount set mnycurrentmoney = mnycurrentmoney - 200000 where chvAccountName='安钢集团'
--判断是否在执行过程中出现错误
begin
rollback transaction
else
print '事务执行成功,即将提交'
end
[/align]