2017.11.17
七.数据的插入,更新和删除:
1.向表中插入数据:
使用insert语句插入
传统的insert语句基本语法格式:
insert into 表名 values (值1,值2,...)
也可以指定说要插入数据的列:
insert into table_name (列1,列2,...) values (值1,值2,...)
(参数into是个可选关键字)
例1:向表中插入数据:
(1):添加一行到所有列中
(2):添加一行到部分列中
(3):插入多行数据怎么办?
1.insert into 表名 values (值1,值2,...)重复书写
2.SQL server2008中提供新方法-----行值构造器
insert into student (sno,sname,ssex,sage,sdept,class) values
('95011','欧阳一','女',18,'软件','3'),
('95012','欧阳二','女',18,'软件','3'),
('95013','欧阳三','女',18,'软件','3')
3.使用select从句中插入:
insert into table[(字段1,字段2,...)]
select value1,value2,...[from table1]
或者:
insert into table2 select * from table1
例:
insert into student select '95011','欧阳一','女',18,'软件','3'
insert into student select '95012','欧阳二','女',18,'软件','3'
或者用union/union all
insert into student select '95011','欧阳一','女',18,'软件','3'
union/union all
'95012','欧阳二','女',18,'软件','3')
2.更新表中数据:
update语句更新
update 表名 set 列名
例2:
update student1 set sdept='动漫' where sno='95012'
3.删除数据:
delete 表名 [where 条件]
例3:删除student1表中sno为95015同学的记录
delete student1 where sno=95012
项目二:SQL语法
1.常量:字符串,二进制,整形,日期,实型,货币
2.变量:
1.全局变量:由系统提供,在名称前加上两个"@"符号区别于局部变量
2.局部变量:用一个"@"
练习:
1.查询SQL Server的版本信息:
select @@version
2.查询本地服务器名称:
select @@servername
3.查询当前使用的语言名称:
select @@language
3.变量的使用:
1.用declare语句声明变量:
declare {@ 局部变量名 数据类型}[,...n]
声明两个变量@v1,@v2,数据类型为char(8),int
declare @ v1 char(8),@v2 int
2.set语句赋值:
set @局部变量=表达式
给两个变量@v1,@v2赋值后输出:
declare @v1 char(8),@v2 int set @v1='welcome' set @v2=100 select @v1,@v2 表格形式输出
declare @v1 char(8),@v2 int set @v1='welcome' set @v2=100 print'v1为:'=@v1 消息形式输出
print @v2
4.注释语句
行注释
块注释
二.变量,运算符与表达式
三.批处理与流程控制:
1.顺序语句begin...end语句
begin {SQL语句|SQL语句块} end
2.if...else...语句:
在学生成绩管理系统中查看张立成绩,如果成绩最低分成绩为60以上,显示成绩情况,否则显示文本'成绩不理想':
declare @m int
select @m=min(grade)
from student,sc
where sc.sno = student.sno and sname='张立'
if(@m>=60)
select student.sno,sname,cno grade
from student,sc
where student.sno=sc.sno and sname='张立'
else
print'成绩不理想'
3.while语句
while<布尔表达式>
{SQL语句|SQL语句块}
[break]
{SQL语句|SQL语句块}
[continue]
continue:程序跳过continue后面的语句回到循环的第一行命令
break:跳出循环
例:计算1到10之间的奇数之和
declare @i tinyint,@sum int
set @sum=0
set @i=0
while @i>=10
begin
select '总和'=@sum
break
end
else
begin
set @i=@i+1
if(@i%2)=0
contiue
else
set @sum=@sum+@i
end
end
4.1.case语句:
case 表达式
when 表达式 then 表达式
when 表达式 then 表达式
when 表达式 then 表达式[...n]
[else 表达式]
end
例:判断学生成绩等级,90-100分的显示为'优秀',80-90显示为'良好',70-80为'中等',60-70为'及格',其他为'不及格'
select sno,cno,grade,
'rank'=case grade/10
when 10 then '优秀'
when 9 then '优秀'
when 8 then '良好'
when 7 then '中等'
when 6 then '及格'
else '不及格'
end
from sc
2.搜索case语句:
select sno,cno,grade,
'rank'=case
when grade>=90 and grade<=100 then '优秀'
when grade>=80 and grade<90 then '良好'
when grade>=70 and grade<80 then '中等'
when grade>=60 and grade<70 then '及格'
else '不及格'
end
from sc
练习:
use students
go
--一,向student表中INSERT INTO …VALUES添加记录信息为:(95009,'欧阳静','女',18,'软件',3)
insert into student values(95009,'欧阳静','女',18,'软件',3)
--二,在提供的students数据库中新增一张与student表结构一样的student1表。
--三,在student1表中用行值构造器插入以下数据:
insert into student1 (sno,sname,ssex,sage,sdept,class) values
(95011,'欧阳一','女',18,'软件',3),
(95012,'欧阳二','女',18,'软件',3),
(95013,'欧阳三','女',18,'软件',3),
(95014,'欧阳四','女',18,'软件',3),
(95015,'欧阳五','女',18,'软件',3)
--四、在提供的students数据库中书写SQL代码进行查询:
--1、 书写SQL代码创建表class,表的结构如下:
use students
go
create table class
(
classID int primary key,
className char(20),
specialityID char(10),
specialityName char(20),
EntranceYear int,
Monitor int
)
--2、使用带SELECT从句的INSERT SQL语句 ,向class表中添加记录,记录信息为:(1,'16计算机01班','a01','摄影',2019,95030),(2,'16计算机01班','a02','开发程序',2019,95032)
insert into class values(1,'16计算机01班','a01','摄影',2019,95030)
insert into class values(2,'16计算机01班','a02','开发程序',2019,95032)
--3、使用带SELECT从句的INSERT SQL语句 ,向class表中部分字段添加一条记录,字段为:(2008001,'08计算机控制','a01',2008,0733001)
insert into class (classID,className,specialityID,EntranceYear,Monitor) values
(2008001,'08计算机控制','a01',2008,0733001)
--五、在提供的students数据库中书写SQL代码进行查询:
use students
go
--1、将所有课程的学分增加1分。
update course set ccredit=ccredit+1
--2、将计算机专业的所有学生的选修课成绩降低5%。
update sc set grade=grade*0.95 where sno in(select sno from student where sdept='计算机')
--3、删除选修课成绩低于60分的记录。
delete sc where grade<60
--4、用Union操作符把student表与student1表的结果集合并。
--select 语句1 union [all] select 语句2
select sno,sname,ssex,sage,sdept,class from student union all select sno,sname,ssex,sage,sdept,class from student1
--六、使用SSMS编写并运行SQL 脚本 。
--1、查询SQL Server的版本信息。
select @@version
--2、查询本地服务器的名称。
select @@servername
--3、查询当前使用的语言的名称。
select @@language
--4、在学生成绩管理系统中查看王明的成绩。如果王明的平均成绩为70分以上,显示文本“成绩理想”,否则显示文本“成绩不理想”。
declare @m int
select @m=avg(grade)
from student,sc
where sc.sno = student.sno and sname='王明'
if(@m>=70)
print '成绩理想'
else
print'成绩不理想'