SQL Sever的T-SQL语句

一、数据库的基础操作

创建数据库和数据改名

--创建数据库
create database student_system on primary
(name=student_system,filename='d:\db\student_system.mdf',
size=6mb,maxsize=30mb,filegrowth=5mb),
(name=student_system1,filename='d:\db\student_system.ndf',
size=4mb,maxsize=20mb,filegrowth=20%)
log on
(name=student_sysem_log,filename='d:\db\student_system_log.ldf',
size=2mb,maxsize=10mb,filegrowth=10%)
go

-- 数据改名
alter database student modify name=students  

建表

use student_system 
create table department
(department_id int not null,department_name varchar(50))
create table teacher
(teacher_id int not null,teacher_name varchar(50))
create table student
(student_id int not null,student_name varchar(50),student_sex varchar(10),
student_home varchar(50),student_clsid int,student_phone int,
student_email varchar(50))
create table class
(class_id int not null,class_name varchar(50),class_skill varchar(50))
create table course
(course_id int not null,course_name varchar(50),couese_tea varchar(50),
course_gar int)
create table garde
(garde_id int not null,garde_stu int,garde_cls int,
garde_us float,garde_la float,garde_total float)

查询和创建主键和创建外键

--查询
use students
select class_time as '在课分数', count(*) as '各时间段的人数' from gardesheet
group by class_time
--排序
use students
select top 30 percent * from gardesheet     --限制显示行数,percent表示百分数
order by class_ative desc,total desc  --多列查询,当class_tive相等时,再根据total的大小来排

--创建主键
use student_system
alter table student
add constraint pk_stu_id primary key(student_id)
alter table department
add constraint pk_dep_id primary key(department_id)
alter table teacher
add constraint pk_tea_id primary key(teacher_id)
alter table class
add constraint pk_cla_id primary key(class_id)
alter table garde
add constraint pk_gar_id primary key(garde_id)
alter table course
add constraint pk_cou_id primary key(garde_id)    --创建主键

--创建外键
use student_system
alter table teacher
add constraint fk_tea_dep foreign key(teacher_depid)
references department(department_id)
alter table course
add constraint fk_cou_tea foreign key(course_tea)
references teacher(teacher_id)
alter table garde
add constraint fk_gar_stu foreign key(garde_stu)
references student(student_id)
alter table garde
add constraint fk_gar_cou foreign key(garde_cou)
references course(course_id)
alter table student
add constraint fk_stu_cls foreign key(student_cls)
references class(class_id)              --创建外键

二、更改信息

更改学生成绩

use students
if exists(select * from garde where total>90.0)
	begin
		print '有人总分成绩大于90分,所有学生成绩不变'
		update garde set total=total-10.0
		select * from garde
	end
else
	begin
		print'没人总分成绩大于90分,所有学生成绩加10分'
		update garde set total=total+10.0
		select * from garde
	end  --total表示整个字段的信息

更改字段

use student_system
alter table student
alter column student_clsid int not null
go
alter table teacher
alter column teacher_depid int not null
go
alter table course
alter column course_tea int not null
go
alter table garde
alter column garde_stu int not null
go
alter table garde
alter column garde_cls int not null
go

三、变量的认识

局部变量的认识

declare @name varchar(50)  --声明一个变量
set @name='李X'  --将变量赋值
declare @sex varchar(50)  --再声明一个变量,用于装第一步查询的结果
use students
select @sex=sex from garde where name=@name  --第一部查询,变量装值      select赋值方法
select * from garde where sex=@sex   --第二步查询,使用该变量     select赋值方法
go    --形成语句块
--该块语句表示,查询"李X"性别相同的人

if-else的认识

use students
declare @avg float   --定义变量
select @avg=avg(月薪) from teacher where 所属部门='电信'   --查询赋值
print '电信部门的平均工资为'+convert(varchar(10),@avg)+'元!'  --强制转换
if @avg>6225.0
	begin
		print '该部门的平均工资较好,前两名的信息如下:'
		select top 2 * from teacher where 所属部门='电信' order by 月薪 desc   --order by 字段名 desc 排序:降序,即由高到低排序;asc升序 
	end
else
	begin
		print '该部门的平均工资不好,后两名的信息如下:'
		select top 2 * from teacher where 所属部门='电信' order by 月薪 asc   --order by 字段名 desc 排序:降序,即由高到低排序;asc升序 
	end

创建触发器(事务)

create trigger trigger_TeacherInsert  --给触发器取名
on teacher1
after insert  --指定触发器类型
as
begin
	declare @teaNum int --声明一个变量
	select @teaNum=count(*) from teacher1  --给变量赋值
	update Teacher  set teacher_num=@teaNum  --更新数据
end
/*每添加一条记录之后,教师人数自动跟新为当前总人数
在teacher1表中添加一条记录,Teacher表的字段teacher_Num会自动更新*/

事务转账

begin transaction  --开始事务
declare @errorSum int --声明变量
set @errorSum=0  --set赋值
update bank set bank_money=bank_money-100 where bank_name='王强'
set @errorSum=@errorSum+@@error  --@@error为当前错误次数;故
update bank set bank_money=bank_money+100 where bank_name='李静'
set @errorSum=@errorSum+@@error  --@@error为当前错误次数;故
if @errorSum<>0  --<>表示不等于
	begin
	print'转账失败,回滚事务!(撤销事务)'
	rollback transaction  --回滚事务命令(撤销)
	end
else
	begin
	print'转账成功,提交事务!'
	commit transaction   --提交事务命令
	end
select * from bank --查询修改的结果
/*保证了要么执行,要么不执行*/

三、最后作业

select stu_name,stu_sex,stu_phone from Student  go   --查询学生表中的姓名、性别和电话等字段的信息
select top 2 stu_name,stu_sex,stu_native, '电信' as 学校名称 from Student go --显示学校前两名的学生的姓名性别籍贯学校的名字使用电信代替
declare @arg_sc float   --声明一个变量
select @arg_sc=svg(sco_overall) from Student where score='000001'  --给变量赋值
if @avg_sc>80
	begin
	print '成绩较好'
	select top 2 * from Student where score='000001' order by sco_overall desc   --根据分数降序
	end
else
	begin
	print '成绩不理想'
	select top 2 * from Student where score='000001' order by sco_overall asc   --根据分数升序
	end
go

对应的更全的T-SQL语句的下载链接:SQL Sever的资料下载

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值