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