create database testdb
go
use testdb
go
create table student
(
stuId int primary key identity(1,1),
stuName varchar(20) unique not null,
stuAge int,
stuDefen int
)
go
insert into student
select 'zhande',20,90 union
select 'dili',32,80 union
select 'sand',23,72 union
select 'deid',25,86 union
select 'deodl',34,50
--创建索引
--索引类型 unique clustered nonclustered
if exists(select * from sysindexes where name='my_index')
drop index student.my_index
go
create nonclustered index my_index
on student(stuDefen)
with
fillfactor=40
go
create unique index my_indexName
on student(stuName)
with
fillfactor =40
go
select * from student with (index=my_indexName)
where stuName like '%zh%'
go
--调用索引
select * from student with(index=my_index)
where stuDefen between 80 and 90
go
if exists(select 1 from sysobjects where name='view_myjiji')
drop view view_myjiji
go
create view view_myjiji
as
select * from student
go
select * from view_myjiji
go
--创建登陆账户
create login aqianjianren with password='xiaolin520'
go
--给这个用户授权数据库的访问权限
create user haha for login aqianjianren
go
--授权
grant select,update on student to haha
go
--调用无参数的存储过程
if exists(select 1 from sysobjects where name='pro_my')
drop procedure pro_my
go
create procedure pro_my
as
insert into student values('小林',21,99)
go
--调用
execute pro_my
go
select * from student
go
--带参数的存储过程
if exists(select 1 from sysobjects where name='pro_myyoucan')
drop procedure pro_myyoucan
go
create procedure pro_myyoucan
@stuName varchar(20),
@stuAge int,
@stuDefen int
as
insert into student values(@stuName,@stuAge,@stuDefen)
go
--调用
execute pro_myyoucan '石建军',88
go
select * from student
go
--带默认值的存储过程
create procedure pro_mydefault
@stuName varchar(20)='大嘴',
@stuAge int=18,@stuDefen)
go
--调用
execute pro_mydefault '李向阳',default,88
go
select * from student
go
--带输出参数的存储过程
if exists(select 1 from sysobjects where name='pro_mydefaultout')
drop procedure pro_mydefaultout
go
create procedure pro_mydefaultout
@stuName varchar(20),
@stuDefen int,
@newsId int output
as
insert into student values(@stuName,@stuDefen)
set @newsId=@@identity
print '该列的学号是'+convert(varchar(20),@newsId)
go
--调用
declare @news int
execute pro_mydefaultout '小英雄雨来',88,@news output
print @news
go
select * from student
go
--使用return返回结果
if exists(select 1 from sysobjects where name='pro_mydefaultout1')
drop procedure pro_mydefaultout1
go
create procedure pro_mydefaultout1
@stuName varchar(20),@stuDefen)
return @@identity
print '该列的学号是'+convert(varchar(20),@@identity)
go
--调用
declare @news int
execute pro_mydefaultout1 '陈浩南',45
go
select * from student
go
--事务
declare @err int
set @err=0
--执行sql语句前 开始事务
begin transaction
update student set stuDefen=stuDefen+20 where stuId=4
set @err=@err+@@error
update student set stuDefen=stuDefen-20 where stuId=7
set @err=@err+@@error
--判断事务是否成功 <>0 表示不等于
if(@err=0)
begin
print '转账成功,提交事务'
commit transaction
end
else
begin
print '转账失败,回滚事务'
rollback transaction
end
go
select * from student
go
--触发器分类:(1)针对DML类型触发器
--(2)针对DDL类型的触发器,alter,create,drop
--定义触发器的语法:
create trigger stu_trigger
on student
after insert,update
as
print '触发器的应用 插入成功!'
go
update student set stuName='张克俊' where stuId=21
insert into student values('哈哈d',86)
go
select * from student
go
--定义DDL触发器的语法:
create trigger 触发器名
on all server/database
for/after event_type/event_group
as
sql语句
--DDL触发器只有after触发器,没有instead of触发器,此触发器可以建立在数据库上,也可以建立在服务器上
--不允许删除StuMarks表中任何一条记录
if exists(select * from sys.objects where name='tg_delete')
drop trigger tg_delete
go
create trigger tg_delete
on stuMarks
after delete
as
begin
-- select * from inserted
-- select * from deleted
--定义变量
declare @no varchar(10)
--得到要删除的学号
select @no=stuNo from deleted
--提示用户
print '不能删除学号为'+@no+'的学员'
--回滚数据
rollback
end
go
--(1)修改外围应用配置器的设置
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'xp_cmdshell',1
reconfigure
go
--(2)创建文件夹
exec xp_cmdshell 'md e:/student',no_output
go
--(3)创建数据库
if exists(select * from sys.sysdatabases where name='Student')
drop database Student
go
create database Student
on
(
name='Student_data',
filename='e:/student/Student_data.mdf',
size=3MB,
maxsize=5MB,
filegrowth=10%
)
log on
(
name='Student_log',
filename='e:/student/Student_log.mdf',
size=1MB,
filegrowth=10%
)
go
--(4)使用数据库
use Student
go
--(5)创建表
if exists(select * from sys.sysobjects where name='StuInfo')
drop table StuInfo
go
create table StuInfo
(
stuName varchar(10) not null,
stuNo varchar(10) not null,
stuSex char(2) not null,
stuAge int not null,
stuSeat int identity(1,1) not null,
stuAddress varchar(50)
)
go
alter table StuInfo
add constraint pk_StuInfo_stuNo primary key(stuNo),
constraint ck_StuInfo_stuNo check(stuNo like 'S253__'),
constraint ck_StuInfo_stuSex check(stuSex='男' or stuSex='女'),
constraint ck_StuInfo_stuAge check(stuAge>=15 and stuAge<=50),
constraint ck_StuInfo_stuSeat check(stuSeat>=1 and stuSeat<=30),
constraint df_StuInfo_stuAddress default('地址不详') for stuAddress
if exists(select * from sys.sysobjects where name='StuMarks')
drop table StuMarks
go
create table StuMarks
(
examNo varchar(18) not null,
writtenExam float,
labExam float
)
go
alter table StuMarks
add constraint pk_StuMarks_examNo primary key(examNo),
constraint ck_StuMarks_examNo check(examNo like 'E200507____'),
constraint fk_StuMarks_StuInfo_stuNo foreign key(stuNo) references StuInfo(stuNo),
constraint ck_StuMarks_writtenExam check(writtenExam>=0 and writtenExam<=100),
constraint df_StuMarks_writtenExam default 0 for writtenExam,
constraint ck_StuMarks_labExam check(labExam>=0 and labExam<=100),
constraint df_StuMarks_labExam default 0 for labExam
--给学生信息表插入以下数据 insert into StuInfo values('张三','S25301','男','沙坪坝') insert into StuInfo values('李四','S25302','女',18,default) insert into StuInfo values('王五','S25303','大学城') select * from StuInfo --给成绩信息表插入以下数据 insert into StuMarks values('E2005070001',10,20) insert into StuMarks values('E2005070003',75,98) insert into StuMarks values('E2005070004',100,63) select * from StuMarks
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。