--1.表相關
--建庫
create database mytest
--使用庫
use mytest
--建表
create table td_user (
[ID] [int] IDENTITY(1,1) NOT NulL PRIMARY KEY,--主鍵約束,自增
[Username] nvarchar NOT NulL unique,--唯一性約束
[UserPwd] nvarchar NOT NulL,
[UserMail] nvarchar NOT NulL,
[age] [int] check (age>=0 and age<=100) NOT NulL,--條件約束
[CreateTime] [datetime] NOT NulL default getdate() --默認值
)
/
数据完整性=数据的有效性和正确性(完整性=有效,正确)
完整性约束
1.唯一约束(允许一行数据为空)
2.主键约束(唯一约束+ 非空约束)
3.默认值约束
4.check约束
5.主外键约束
6.非空约束
一个表在不同的关系中既可以是主表又可以是子表
主外键是一对多关系
/
create table student(
--字段名数据类型约束(一般在此只加非空约束)
stuID int not null,
stuname varchar(20) not null,
stuAge int not null,
stuSex bit not null,
stuTel varchar(13) not null,
stuAddress varchar(30)
)
go
--添加主键约束
alter table student
add constraint PK_stuID primary key (stuID)
--添加唯一约束
alter table student
add constraint UQ_stuname unique (stuname)
--添加check约束
alter table student
add constraint CK_stuAge check (stuAge >=18 and stuAge <= 35)
--添加默认约束
alter table student
add constraint DF_stuAddress default (‘地址不详‘) for stuAddress
go
--添加外键约束
alter table exam --修改外键表
add constraint FK_stuID
foreign key(stuID) references student(stuID)
--外键表字段 主键表字段
--删除约束(alter table 表名drop constraint 约束名)
alter table exam
drop constraint FK_stuID
Go
/ 哪个是外键表,就给它添加外键约束
给表添加主外键约束的时候遵循个一致
1.外键表外键与主键表主键数据类型一致(语法规范)
2.长度一致(语法规范)
3.名称一致(一般是项目规范,名称最好是一致)
/
/ 索引/ -------------------------------存储过程Study------------------------------
--删除表
drop table student
go
--创建用户信息数据表
create table student
(
ID int IDentity(1,1),--递增,
stuNo varchar(50) primary key,--唯一键
stuname varchar(50),
stuAge datetime,
stuSex varchar(5)
)
--创建用户分数数据表
create table course
(
ID int IDentity(1,
stuNo varchar(50),
coursename varchar(50),
coursescore decimal
)
--插入数据
--插入单条数据
insert into student(stuNo,stuname,stuAge,stuSex) values(‘01‘,‘王男‘,‘1996-08-27 09:00:00.000‘,‘男‘)
--多数量插入数据
--sql Server2008特有的插入
insert into student values(‘02‘,‘杨幂‘,‘1995-4-20 6:0:0‘,‘女‘),
(‘03‘,‘程峰‘,‘1988-9-17 15:30:0‘,‘男‘)
insert into course values(‘02‘,‘思想政治‘,‘85.5‘),
(‘02‘,‘数学‘,‘70‘),‘语文‘,‘80‘),‘物理‘,‘90‘),‘化学‘,‘65‘),‘英语‘,‘96‘)
insert into course values(‘03‘,‘60‘),‘84‘),‘76‘),‘54‘)
--使用UNION ALL来进行插入
insert into student
select ‘04‘,‘wangan‘,‘1895-5-27 14:30:28‘,‘女‘
union all
select ‘05‘,‘zhangnan‘,‘1990-1-20 19:0:0‘,‘女‘
go
--修改数据
update student set stuSex=‘男‘,stuAge=‘2016-5-9 8:0:0‘ where stuname=‘王男‘
go
--删除数据
delete from student where stuNo=01
go
--存储过程查询所有数据
--begin...end 类似编程语言中的{}
create proc stu1
as
begin
select * from student;
end
go
exec stu1
go
--存储过程根据条件用户名查询用户信息
create proc stu2
@sname varchar(50) --声明全局变量
as
begin
select * from student s where [email protected];
end
go
exec stu2 ‘‘
go
--存储过程内部设定用户名查询用户信息
create proc stu3
@sname varchar(50)=‘王男‘
as
begin
select * from student s where [email protected];
end
go
exec stu3
go
--存储过程根据用户名查询是否存在这个用户信息
create proc stu4
@sname varchar(50),
@result varchar(8) output --输出参数
as
begin
if (select COUNT(1) from student s where [email protected])>0
--if exists (select COUNT(1) from student s where [email protected])
set br/>@result=‘存在!‘
else
set br/>@result=‘不存在!‘
end
go
declare @result varchar(8)
exec stu4 ‘王男‘,@result output
print @result
go
--存储过程内部设定局部变量用户名来查询用户信息
create proc stu5
as
declare @sname varchar(50) --局部变量声明
set @sname=‘杨幂‘
begin
select * from student s where [email protected]
end
go
exec stu5
go
--存储过程根据条件用户学号查询用户名
create proc stu6
@stuNo varchar(50)
as
declare @sname varchar(50)
set @sname=(select s.stuName from student s where [email protected])
select @sname
go
exec stu6 ‘01‘
go
--存储过程插入用户信息
create proc stu7
@stuNo varchar(50),
@stuName varchar(50),
@stuAge datetime,
@stuSex varchar(5)
as
begin
insert into student
(stuNo,stuSex)
values
(@stuNo,@stuName,@stuAge,@stuSex)
end
go
exec stu7 ‘07‘,‘王莽‘,‘2000-9-9 9:9:9‘,‘女‘
go
--存储过程根据用户名来删除对应的用户信息br/>[email protected]@rowcount返回 *** 作条数
--return返回信息,终止下面的 *** 作
create proc stu8
@stuName varchar(50)
as
begin
delete from student where [email protected]
return @@rowcount
end
go
declare @result varchar(50)
exec @result=stu8 ‘王莽‘
select @result as ‘删除条数‘
--print @result
go
--存储过程根据用户学号来查询他的平均分
create proc stu9
@stuNo varchar(50),
@avg int output
as
begin
set @avg=(select AVG(courseScore) from course where [email protected])
--等同
--select @avg=AVG(courseScore) from course where [email protected]
end
go
declare @avg int
exec stu9 ‘02‘,@avg output
print @avg
go
--存储过程根据用户学号来联合查询用户信息和课程信息
create proc stu10
@stuNo varchar(50)
as
select c.stuNo,s.stuName,s.stuAge,s.stuSex,c.courseName,c.courseScore from student s join course c on s.stuNo=c.stuNo where [email protected]
go
exec stu10 ‘02‘
go
--存储过程判断学号是否存在,不存在,插入用户信息,返回消息;存在,返回信息
create proc stu11
@stuNo varchar(50),
@stuSex varchar(5),
@result varchar(50) output
as
if exists (select * from student where [email protected])
begin
set @result=‘对不起,学号已存在!‘
end
else
begin
insert into student
(stuNo,stuSex)
values br/>(@stuNo,@stuSex)
set @result=‘恭喜你,用户信息插入成功!‘
end
go
declare @result varchar(50)
exec stu11 ‘06‘,‘王忠磊‘,‘1980-8-8 8:9:0‘,‘男‘,@result output
print @result
--存储过程查询当前用户的平均成绩与总的平均成绩之间的关系
create proc stu12
@stuNo varchar(50)
as
declare @curAvg decimal(18,2)
declare @totalAvg decimal(18,2)
if exists(select * from course where [email protected])
begin
set @totalAvg=(select AVG(courseScore) from course)
select @curAvg=AVG(courseScore) from course where [email protected]
print (‘总的平均分:‘+convert(varchar(18),@totalAvg))
print (‘该生的平均分:‘+convert(varchar(18),@curAvg))
if @curAvg>@totalAvg
print ‘高于平均水平!‘
else
print ‘低于平均水平!‘
end
else
print ‘该生对应的分数信息不存在,请重新查询!‘
go
exec stu12 ‘03‘go
总结以上是内存溢出为你收集整理的sqlserver全部内容,希望文章能够帮你解决sqlserver所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)