create database 学生成绩库--创建数据库
on primary
    (  name='cjk_data',--主数据文件的逻辑名
       fileName='D:\成绩库.mdf',--主数据文件的物理名
       size=10MB,--初始大小
       filegrowth=10%    --增长率    )
log on
    (  name='cjk_log',--日志文件的逻辑名
       fileName='D:\成绩库.ldf',--日志文件的物理名
       size=1MB,--初始大小
       maxsize=20MB,--最大大小
         filegrowth=5%    )
----------------------------------
use [学生成绩库]
go
create table 学生情况表
([学号] char(9) primary key,
 [姓名] char(8) not null,
 [性别] char(1) not null check(性别in ('1','0')),
 [年级] char(4) not null,
 [专业] char(20) not null)

use [学生成绩库]
go
create table 学生成绩表
( [学号] [char](9) NOT NULL,
 [学期] [int] NOT NULL,
 [录入日期] [datetime] NULL DEFAULT (getdate()),
 [选课门数] [int] NOT NULL,
 [科目1] [float] NULL DEFAULT(0),
 [科目2] [float] NULL DEFAULT(0),
 [科目3] [float] NULL DEFAULT(0),
 [科目4] [float] NULL DEFAULT(0),
 [科目5] [float] NULL DEFAULT(0),
 [科目6] [float] NULL DEFAULT(0),
 [科目7] [float] NULL DEFAULT(0),
 [科目8] [float] NULL DEFAULT(0),
 [科目9] [float] NULL DEFAULT(0),
 [科目10] [float] NULL DEFAULT(0),
CONSTRAINT [PK_学生成绩表] PRIMARY KEY CLUSTERED
   ( [学号] ASC,
  [学期] ASC   )

 

约束练习
设计表->NOT NULL,默认值-右键-》PRIMARY KEY约束,索引(UNIQUE),CHECK
---------------------新建规则
use 学生成绩库
go
create rule wl_rule as @wl between 30 and 95
---------------------绑定规则
use 学生成绩库
go
exec sp_bindrule  'wl_rule','学生成绩表.科目1'

---------------------解除绑定规则
use 学生成绩库
go
exec sp_unbindrule '学生成绩表.科目1'
---------------------删除绑定规则
use 教学
go
drop rule wl_rule

存储过程练习
----------------------
USE [教学]
GO
create PROCEDURE [dbo].[axmcxcj](@请输入姓名 nvarchar(10))
AS SELECT dbo.成绩.*
FROM dbo.成绩
WHERE (姓名 like  '%'+rtrim(@请输入姓名)+'%')
---------------------------------------
USE [教学]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[axmcxcj] '李'
SELECT 'Return Value' = @return_value
GO

触发器练习
----------------

use 教学
go
CREATE TRIGGER check_wl
   ON  成绩
   for INSERT,UPDATE
AS
BEGIN
 declare @wl int
    select @wl=物理 from inserted
    if @wl<0 or @wl>100
    BEGIN
    rollback
    raiserror('成绩必须在0~100之间',16,1)
    END
END
GO
-------------------------创建触发器
use 教学
go
INSERT INTO [教学].[dbo].[成绩]
           ([学号],[姓名],[语文],[数学],[英语],[物理])
     VALUES
           ('970499','王五',99,101,68,-10)
-------------------------------------------检验触发器
USE [教学]
GO
IF  EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[check_wl]'))
DROP TRIGGER [dbo].[check_wl]
----------------------------------删除触发器
use 学生成绩库
go
CREATE TRIGGER wjgl_delete
   ON  学生情况表
   for delete
AS
begin
declare   @xh   char(6)
select   @xh=学号   from   deleted   group   by   学号
delete from 学生成绩表 where 学号=@xh
end
GO
---------------
use 教学
go
delete from 学生情况表 where 学号='970472'
go