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. [b]数据表(创建|修改|删除)[/b]
if exists (select 1 from sysobjects where [name]='BookType')
drop table BookType
--创建图书类型表:BookType
(
TypeName varchar(50) not null, --图书类型名称
)
alter table BookType
--删除表BookType
3. [b]创建主键[/b]
--为表添加主键
add constraint PK_ProductInfo_ProductId primary key(ProductId)
4. [b]创建外键[/b]
--为表添加外键
add constraint FK_Promotion_Product foreign key (ProductId) references ProductInfo(ProductId)
5. [b]检查约束[/b]
--创建检查约束(商品编号的长度大于2)
add constraint CK_Product_Number check(len(ProductNumber)>2)--删除外键只需要将add替换为drop
--check(Gender in ('男', '女'))
6. [b]惟一约束[/b]
alter table productinfo
7. [b]T-SQL编程(定义变量、为变量赋值)[/b]
--T-SQL中定义变量
declare @i int;
set @sum = 0;
select @sum=0,@i=1;
8. [b]T-SQL编程(if-else循环)[/b]
declare @i int;
if(@i%2 = 0)
else
go
9. [b]T-SQL编程(while)[/b]
declare @i int;
while (@i
print @i;
end
10. [b]T-SQL编程(case)[/b]
select intComputerId,
when intInUse=0 then '空闲'
end,
from tblcomputer;
select intComputerId,
when 0 then '空闲'
end,
from tblcomputer
11. [b]视图[/b]
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. [b]存储过程(无参数)[/b]
--创建不带参数的存储过程
as
select * from tblcomputer;
--调用不带参数的存储过程
13. [b]存储过程(含输入参数)[/b]
create procedure pro_getComputerState
as
select intComputerId,
when 0 then '未使用'
end,
chvDescription
where intInuse=@state
go
declare @state int;
exec pro_getComputerState @state;
14. [b]存储过程(含输入参数、输出参数)[/b]
create proc pro_getComputerStateById
@state int output
begin
from tblcomputer
end
declare @state int, @computerId int;
exec pro_getComputerStateById @computerId,@state output
15. [b]触发器[/b]
--判断触发器是否存在,存在则删除触发器
drop trigger tr_insertRecord
--如何定义|创建一个触发器
on TblRecordInfo
as
declare @cardid int, @startTime datetime;
select '卡号:'+convert(nvarchar(5), @cardid);
end
16. [b]事务处理[/b]
declare @sumError int;
[b]begin transaction[/b]
--通过系统变量@@error可以获取上次被执行的sql是否执行成功,如果执行成功@@error的值为0,否则为1
update tblaccount set mnycurrentmoney = mnycurrentmoney - 200000 where chvAccountName='安钢集团'
--判断是否在执行过程中出现错误
begin
[b]rollback transaction[/b]
else
print '事务执行成功,即将提交'
end
[/align]
/*创建数据库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. [b]数据表(创建|修改|删除)[/b]
if exists (select 1 from sysobjects where [name]='BookType')
drop table BookType
--创建图书类型表:BookType
(
TypeName varchar(50) not null, --图书类型名称
)
alter table BookType
--删除表BookType
3. [b]创建主键[/b]
--为表添加主键
add constraint PK_ProductInfo_ProductId primary key(ProductId)
4. [b]创建外键[/b]
--为表添加外键
add constraint FK_Promotion_Product foreign key (ProductId) references ProductInfo(ProductId)
5. [b]检查约束[/b]
--创建检查约束(商品编号的长度大于2)
add constraint CK_Product_Number check(len(ProductNumber)>2)--删除外键只需要将add替换为drop
--check(Gender in ('男', '女'))
6. [b]惟一约束[/b]
alter table productinfo
7. [b]T-SQL编程(定义变量、为变量赋值)[/b]
--T-SQL中定义变量
declare @i int;
set @sum = 0;
select @sum=0,@i=1;
8. [b]T-SQL编程(if-else循环)[/b]
declare @i int;
if(@i%2 = 0)
else
go
9. [b]T-SQL编程(while)[/b]
declare @i int;
while (@i
print @i;
end
10. [b]T-SQL编程(case)[/b]
select intComputerId,
when intInUse=0 then '空闲'
end,
from tblcomputer;
select intComputerId,
when 0 then '空闲'
end,
from tblcomputer
11. [b]视图[/b]
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. [b]存储过程(无参数)[/b]
--创建不带参数的存储过程
as
select * from tblcomputer;
--调用不带参数的存储过程
13. [b]存储过程(含输入参数)[/b]
create procedure pro_getComputerState
as
select intComputerId,
when 0 then '未使用'
end,
chvDescription
where intInuse=@state
go
declare @state int;
exec pro_getComputerState @state;
14. [b]存储过程(含输入参数、输出参数)[/b]
create proc pro_getComputerStateById
@state int output
begin
from tblcomputer
end
declare @state int, @computerId int;
exec pro_getComputerStateById @computerId,@state output
15. [b]触发器[/b]
--判断触发器是否存在,存在则删除触发器
drop trigger tr_insertRecord
--如何定义|创建一个触发器
on TblRecordInfo
as
declare @cardid int, @startTime datetime;
select '卡号:'+convert(nvarchar(5), @cardid);
end
16. [b]事务处理[/b]
declare @sumError int;
[b]begin transaction[/b]
--通过系统变量@@error可以获取上次被执行的sql是否执行成功,如果执行成功@@error的值为0,否则为1
update tblaccount set mnycurrentmoney = mnycurrentmoney - 200000 where chvAccountName='安钢集团'
--判断是否在执行过程中出现错误
begin
[b]rollback transaction[/b]
else
print '事务执行成功,即将提交'
end
[/align]