victor-huang
--------------------------------创建视图-------------------------------------

use StudentManager
go
--判断视图是否存在
if exists(select * from sysobjects where name=\'view_ScoreQuery\')
drop view view_ScoreQuery
go
--创建视图
create view view_ScoreQuery
as
select top 1000 Students.StudentId,StudentName,ClassName,
C#=CSharp,SQLDB=SQLServerDB,
ScoreSum=(CSharp+SQLServerDB) from Students
inner join ScoreList on Students.StudentId=ScoreList.StudentId
inner join StudentClass on Students.ClassId=StudentClass.ClassId
order by StudentClass.ClassId
go
--使用视图查询
select * from view_ScoreQuery

-------------------有参存储过程-------------------
use StudentManager
go
if exists(select * from sysobjects where name=\'usp_ScoreQuery3\')
drop procedure usp_ScoreQuery3
go
--创建带参数的存储过程
create procedure usp_ScoreQuery3 
@CSharp int=60,
@DB int=60
as
select Students.StudentId,StudentName,C#=CSharp,DB=SQLServerDB
from Students
inner join ScoreList on Students.StudentId=ScoreList.StudentId
where CSharp<@CSharp or SQLServerDB<@DB
go
--调用带参数的存储过程
exec usp_ScoreQuery3 65 --第二个参数没有赋值,则默认
exec usp_ScoreQuery3 @DB=65
exec usp_ScoreQuery3 default,65 --不使用显示方式赋值
exec usp_ScoreQuery3 --两个参数都是用默认参数

---------------------------事务--------------------------

use StudentManager
go
declare @errorSum int --定义变量,用于累计事务执行过程中的错误
set @errorSum=0 --初始化为0,即无错误
begin transaction
begin	
update CardAccount set CurrentMoney=CurrentMoney-1000
where StudentId=100001
set @errorSum=@errorSum+@@error --累计是否有错误	
update CardAccount set CurrentMoney=CurrentMoney+1000
where StudentId=100002
set @errorSum=@errorSum+@@error --累计是否有错误
if(@errorSum>0)
rollback transaction
else 
commit transaction
end
go
--查询余额
select Students.StudentId,StudentName,CurrentMoney from Students
inner join CardAccount on Students.StudentId=CardAccount.StudentId

-------------------------------------创建各类主外键-------------------
--创建学员信息数据表
use StudentManager
go
if exists (select * from sysobjects where name=\'Students\')
drop table Students
go
create table Students
(
StudentId int identity(100000,1) ,
StudentName varchar(20) not null,
Gender char(2) not null,
Birthday smalldatetime not null,
StudentIdNo numeric(18,0) not null,--身份证号 
PhoneNumber varchar(50),
StudentAddress varchar(500),
ClassId int not null --班级外键
)
go
--创建班级表
if exists(select * from sysobjects where name=\'StudentClass\')
drop table StudentClass
go
create table StudentClass
(
ClassId int primary key,
ClassName varchar(20) not null
)
go
--创建成绩表
if exists(select * from sysobjects where name=\'ScoreList\')
drop table ScoreList
go
create table ScoreList
(
id int identity(1,1) primary key,
StudentId int not null,
CSharp int null,
SQLServerDB int null,
UpdateTime smalldatetime not null
)
go
--创建一卡通账户表
if exists(select * from sysobjects where name=\'CardAccount\')
drop table CardAccount
go
create table CardAccount
(
StudentId int not null,
CurrentMoney money check(CurrentMoney>1) --当前余额(必须大于1元) 
)
go
--创建管理员用户表
if exists(select * from sysobjects where name=\'Admins\')
drop table Admins
create table Admins
(
LoginId int identity(1000,1) primary key,
LoginPwd varchar(200) not null,
AdminName varchar(20) not null
)
go
--创建数据表的各种约束
use StudentManager
go
--创建“主键”约束primary key
if exists(select * from sysobjects where name=\'pk_StudentId\')
alter table Students drop constraint pk_StudentId

alter table Students
add constraint pk_StudentId primary key (StudentId)


--创建唯一约束unique
if exists(select * from sysobjects where name=\'uq_StudentIdNo\')
alter table Students drop constraint uq_StudentIdNo
alter table Students
add constraint uq_StudentIdNo unique (StudentIdNo)

--创建身份证的长度检查约束
if exists(select * from sysobjects where name=\'ck_StudentIdNo\')
alter table Students drop constraint ck_StudentIdNo
alter table Students
add constraint ck_StudentIdNo check (len(StudentIdNo)=18)

--创建默认约束
if exists(select * from sysobjects where name=\'df_StudentAddress\')
alter table Students drop constraint df_StudentAddress
alter table Students 
add constraint df_StudentAddress default (\'地址不详\' ) for StudentAddress

if exists(select * from sysobjects where name=\'df_UpdateTime\')
alter table ScoreList drop constraint df_UpdateTime
alter table ScoreList 
add constraint df_UpdateTime default (getdate() ) for UpdateTime

--创建外键约束
if exists(select * from sysobjects where name=\'fk_classId\')
alter table Students drop constraint fk_classId
alter table Students
add constraint fk_classId foreign key (ClassId) references StudentClass(ClassId)

if exists(select * from sysobjects where name=\'fk_StudentId\')
alter table ScoreList drop constraint fk_StudentId
alter table ScoreList
add constraint fk_StudentId foreign key(StudentId) references Students(StudentId)

if exists(select * from sysobjects where name=\'fk_CardStudentId\')
alter table CardAccount drop constraint fk_CardStudentId
alter table CardAccount
add constraint fk_CardStudentId foreign key(StudentId) references Students(StudentId)

  
  

  

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-11-27
  • 2021-12-09
  • 2021-12-09
  • 2021-12-10
  • 2022-01-08
  • 2021-12-22
猜你喜欢
  • 2021-09-18
  • 2022-01-08
  • 2021-11-13
  • 2021-12-28
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案