一、数据库的基础操作
创建数据库和数据改名
--创建数据库
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的资料下载。