posts - 4,  comments - 13,  trackbacks - 0


/**
  *删除数据库中已经存在的表
 **/
if exists(select * from sys.objects where name='tb_grade')
drop table tb_grade--删除tb_grade表
go
if exists(select * from sys.objects where name='tb_student')
drop table tb_student--删除tb_grade表
go

/**
  *创建数据表
 **/
create table tb_student--创建tb_student
(
   student_id int identity(1,1),--学生编号(主键,自动增长)
   student_name nvarchar(30) not null,--学生姓名(不能为空)  
   student_sex char(10) not null,--学生性别(不能为空)
   student_age int default(18),--学生年龄(默认为18)
   constraint pk_student_id primary key (student_id)
)
go
create table tb_grade--创建tb_grade
(
  grade_id int identity(1,1),--成绩编号(主键,自动增长1)
  student_id int,--外键(引用学生表student_id)
  english float,--英语成绩
  math float,--数学成绩
  constraint pk_grade_id primary key (grade_id),--为表tb_student创建主键
  constraint fk_student_id foreign key(student_id) references tb_student(student_id)--创建外键关系
)
 
select * from tb_student
select * from  tb_grade

/**
  *创建视图
 **/

/**
 *创建视图的语法
 *
 CREATE VIEW  view_name
 AS
 select_statement
*
*
*/

if exists (select * from sys.objects where name='vw_student')
drop view vw_student --删除已经存在的vw_student视图
go
create view vw_student--创建视图vw_student
as
select * from tb_student inner join tb_grade on tb_student.student_id=tb_grade.student_id
go

/**
  *创建索引
 **/

/**
 *创建索引的语法
 *
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
    ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )
[ WITH < index_option > [ ,...n] ]
[ ON filegroup ]

< index_option > ::=
    { PAD_INDEX |
        FILLFACTOR = fillfactor |
        IGNORE_DUP_KEY |
        DROP_EXISTING |
    STATISTICS_NORECOMPUTE |
    SORT_IN_TEMPDB 
}
*
*
*/

if exists (select * from sys.indexes where name='index_student_id')
drop index index_student_id on tb_student --删除tb_student中的索引student_id
--创建索引
create index index_student_id on tb_student(student_id)
go

/**
  *创建存储过程
 **/

/**
 *
 *创建存储过程的语法
 *
CREATE PROC [ EDURE ] procedure_name [ ; number ]
    [ { @parameter data_type }
        [ VARYING ] [ = default ] [ OUTPUT ]
    ] [ ,...n ]

[ WITH
    { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]

[ FOR REPLICATION ]

AS sql_statement [ ...n ]
*
*/
--不带参数的存储过程
if exists (select * from  sys.objects where name='find_student')
drop procedure find_student
go
create procedure find_student
as
select * from tb_student
go
---调用存储过程
exec find_student
go
--带输入参数的存储过程
if exists (select * from  sys.objects where name='add_student_grade')
drop procedure add_student_grade
go
create procedure add_student_grade
--定义输入参数
@studentName nvarchar(30),
@studentSex char(10),
@studentAge int=18,
@gradeEnglish float,
@gradeMath float
as
    declare @studentId int
    declare @n int
    set @n=0
    begin transaction tran_add --开启事务
    insert into tb_student(student_name,student_sex,student_age) values(@studentName,@studentSex,@studentAge)
    set @n=@@error   
 select @studentId=max(student_id) from tb_student
 set @n=@@error 
    insert into tb_grade (student_id,english,math) values(@studentId,@gradeEnglish,@gradeMath)
 set @n=@@error 
    if(@n<>0)
       begin
           rollback transaction tran_add --回滚事务
       end
    else
       begin
     commit transaction tran_add  --提交事务
       end
go
---调用存储过程
exec add_student_grade '张三','男',20,80,88
go
--带输出参数的存储过程
if exists (select * from  sys.objects where name='getCount')
drop procedure getCount
go
create procedure getCount
@n int output
as
select @n=count(*) from tb_student
go
--调用带输出参数的存储过程
declare @n int
execute getCount @n output
select @n
  
/**
 *创建触发器
 **/
/**
 *
 *创建触发器的语法
 *
 *
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
    { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
        [ WITH APPEND ]
        [ NOT FOR REPLICATION ]
        AS
        [ { IF UPDATE ( column )
            [ { AND | OR } UPDATE ( column ) ]
                [ ...n ]
        | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
                { comparison_operator } column_bitmask [ ...n ]
        } ]
        sql_statement [ ...n ]
    }
}
*
*
**/

IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'reminder' AND type = 'TR')
DROP TRIGGER reminder --删除触发器reminder
GO
--创建触发器reminder(如果对表tb_student进行添加和更新信息时出发)
CREATE TRIGGER reminder
ON tb_student
FOR INSERT, UPDATE
AS
RAISERROR (50009, 16, 10)
GO
---创建DELETE触发器
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'sendemail' AND type = 'TR')
DROP TRIGGER sendemail--删除触发器sendemail
GO
--创建触发器
CREATE TRIGGER sendemail
ON tb_grade
FOR DELETE
AS
EXEC master..xp_sendmail' MaBin',
'Don''t forget to print a report for the distributors.'
GO

posted on 2009-11-24 17:54 FOG 阅读(1098) 评论(1)  编辑  收藏


FeedBack:
# re: SQLSERVER DLL的基本操作
2009-11-24 17:57 | 雪山飞鹄
雄起  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2009年11月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用链接

留言簿

随笔档案

MY LINK

搜索

  •  

最新评论

阅读排行榜

评论排行榜