【网学网提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学会员整理了sql常用语句的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
二、表的数据操作
1.插入记录
(1)向XSCJ数据库的表XS中插入如下一行:
1112罗林琳计算机01/30/19800:0:040
USEXSCJ
InsertintoXS
Values(‘1112’,’罗林琳’,’计算机’,’0’,’1/30/19800:0:0’,40,NULL)
GO
(2)假如有一个表XS1,内容如下:
numchar(6)NOTNULL,
namechar(8)NOTNULL,
speialitychar(10)NOTNULL
现在将XS表中专业名为’计算机’的各记录的、和专业名列的值插入到XS1表的各行中。
USEXSCJ
InsertIntoXS1
Select,,专业名
FromXS
Where专业名=’计算机’
2.删除语句
(1)将XSCJ数据库的XS表中总学分小于39的行删除。
USEXSCJ
DeleteFromXS
Where总学分<39
GO
(2)将XSCJ数据库的XS表中备注为空的行删除
DeleteFromXS
Where备注isNULL
GO
(3)删除表数据
TruncateTableXS
3.Update语句修改表数据
(1)将XSCJ数据库的XS表中为1110的学生的备注列改为“三好生”。
USEXSCJ
UpdateXS
Set备注=“三好生”Where=1110
GO
(2)将XS表中的所有学生的总学分都增加10,将为“罗林琳”的同学的专业改为“通信工程”,备注改为“转专业学习”,改为001241。
UpdateXS
Set总学分=总学分+10
GO
UpdateXS
Set专业=’通信工程’,
备注=’转专业学习’,
=’001241’
Where=’罗林琳’
GO
三、数据库的查询和视图
1.数据库查询
(1)查询XSCJ数据库的XS表中各个同学的、专业名和总学分。
USEXSCJ
Select,专业名,总学分FromXS
(2)查询XS表中计算机专业同学的、和总学分。
Select,,总学分
FromXS
Where专业名=’计算机’
GO
2.修改查询结果中的列标题
查询XS表中计算机系同学的、和总学分,结果中各列的标题分别指定为number,name和mark。
SelectASnumber,ASname,总学分ASmarkFromXS
Where专业名=’计算机’
或者:
Selectnumber=,name=,mark=总学分FromXS
Where专业名=’计算机’
注意:当自定义的列标题中含有空格时,必须用引号将标题括起来。
Select‘Studentnu
mber’=,AS‘Studentname’,mark=总学分
FromXS
Where专业名=’计算机’
3.替换查询结果中的数据
要替换查询结果中的数据,则要使用查询中的CASE表达式:
CASE
WHEN条件1THEN表达式1
WHEN条件2THEN表达式2
WHEN条件3THEN表达式3
……………
ELSE表达式
END
查询XS表中计算机系各同学的、和总学分,对其总学分按以下规则进行替换:若总学分为空值,替换为“尚未选课”;若总学分小于50分,替换为“不及格”;若总学分在50至52分之间,替换为“合格”;若总学分大于52,替换为“优秀”。列标题改为“等级”。
Select,,
等级=
CASE
WHEN总学分ISNULLTHEN‘尚未选课’
WHEN总学分<50THEN‘不及格’
WHEN总学分>=50AND总学分<=52THEN‘’合格’
ELSE‘优秀’
END
FromXS
Where专业名=’计算机’
3.消除结果集中的重复行
对XSCJ数据库中的XS表只选择专业名和总学分,消除结果中的重复行。
SelectDistinct专业名,总学分
FromXS
4.限制结果集返回行数
对XSCJ数据库的XS表选择、专业名和总学分,只返回结果集的前6行。
SelectTOP6,专业名,总学分
FromXS
5.模式匹配(Like谓词使用)
查询XSCJ数据库中XS表中计算机系的学生情况。查询XSCJ数据库中XS表中姓“王”且单名的学生情况。
Select*FromXS
Where专业名Like‘计算机’
GO
Select*FromXS
WhereLike‘王_’
GO
6.范围比较
用于范围比较的关键字有两个:Between和In。
(1)Between关键字指出查询范围,格式为:
“表达式[NOT]Between表达式1And表达式2”
注意:表达式1的值不能大于表达式2
(2)使用IN关键字可以指定一个值表,值表中列出所有可能的值,当值表中的任一个匹配时,即返回True,否则返回False。使用IN关键子指定值表的格式为:
“表达式IN(……)”
(3)查询XSCJ数据库XS表中不在1979年出生的学生情况。查询XSCJ数据库XS表中专业名为“计算机”、“通信工程”或“无线电”的学生情况。
Select*FromXS
Where出生时间NOTBetween‘1979-1-1’and‘1979-12-31’
GO
Select*FromXS
Where专业名IN(’计算机’,’通信工程’,’无线电’)
GO
7.子查询
子查询通常与IN,Ex
it谓词以及比较运算符结合使用。
(1)在XSCJ数据库中有描述课程情况的表KC和描述学生成绩表的表XS_KC,要查找选修了课程号为101的课程的学生的情况。
Select*FromXS
WhereIN
(SelectFromXS_KCWhere课程号=’101’)
注意:IN和NOTIN子查询只能返回一列数据。对于较复杂的查询,可以使用嵌套的子查询。
(2)查找未选修离散数学的学生情况。
Select*
FromXS
WhereNOTIN
(
Select
FromXS_KC
Where课程号IN
(Select课程号
FromKC
Where课程名=’离散数学’
)
)
(3)查找比所有计算机系的学生年龄都大的学生。
Select*FromXS
Where出生时间
(
Select出生时间FromXS
Where专业名=’计算机’
)
(3)查找课程号206的成绩不低于课程号101的最低成绩的学生的。
SelectFromXS_KC
Where课程号=’206’AND成绩! (
Select成绩FromXS_KC
Where课程号=’101’
)
(4)EXISTS子查询。
EXISTS谓词用语测试子查询的结果是否为空表,若子查询的结果集不为空,则EXISTS返回TRUE,否则返回FALSE。
查找选修206号课程的学生
SelectFromXS
WhereEXISTS
(
Select*FromXS_KC
Where=XS.AND课程号=’206’
)
查找选修了全部课程的同学的。
SelectFromXS
WhereNOTEXISTS
(
Select*FromKC
WhereNOTEXISTS
(
Select*FromXS_KC
Where=XS.AND课程号=KC.课程号
)
查找选修了与为001102同学所选修的全部课程的同学的。
SelectDISTINCT
FromXS_KCASCJ1
WhereNOTEXISTS
(
Select*FromXS_KCASCJ2
WhereCJ2.=’001102’ANDNOTEXISTS
(
Select*FromXS_KCASCJ3
WhereCJ3.=CJ1.ANDCJ3.课程号=CJ2.课程号
)
)
(5)在XS表中查找1980年1月1日以前出生的学生的和专业名,分别使用别名stu_name和speciality表示。
Selectm.stu_name,m.speciality
From(Select*FromXSWhere出生时间<‘1980-01-01’)AS
m(num,stu_name,speciality,sex,birthday,score,mem
)
8.连接查询
(1)查找XSCJ数据库每个学生的情况以及选修的课程情况。
SelectXS.*,XS_KC.*FromXS,XS_KC
WhereXS.=XS_KC.
(2)自然连接查询
SelectXS.*,XS_KC.课程号,XS_KC.成绩
FromXS,XS_KC
WhereXS.=XS_KC.
(3)查找选修了206课程且成绩在80分以上的学生及成绩。
Select,成绩FromXS,XS_KC
WhereXS.=XS_KC.AND课程号=’206’AND成绩>=80
(4)JOIN关键字
内连接:
内连接按照ON所指定的连接条件合并两个表,返回满足条件的行。
查找XSCJ数据库每个学生的情况以及选修课程情况。
Select*FromXSInnerJoinXS_KC
ONXS.=XS_KC.
注意:内连接是系统默认的,可以省略INNER关键字,使用内连接后仍可使用WHERE子句指定条件。
查找选修了206课程且成绩在80分以上的学生及成绩。
Select,成绩
FromXSJOINXS_KCONXS.=XS_KC.
Where课程号=’206’AND成绩>=80
查找选修了“计算机基础”课程且成绩在80分以上的学生、、课程名及成绩。
Select,,课程名,成绩
FromXSJOINXS_KCJOINKC
ONXS_KC.课程号=KC.课程号
ONXS.=XS_KC.
Where课程名=’计算机基础’AND成绩>=80
自连接:
若要在一个表中查找具有相同列值的行,则可以使用自连接。使用自连接时需要为表指定两个别名,且对所有列的引用均要用别名限定。
查找不同课程成绩相同的学生的、课程号和成绩。
Selecta.,a.课程号,b.课程号,a.成绩
FromXS_KCaJOINXS_KCb
ONa.成绩=b。成绩ANDa.=b.ANDa.课程号!=b.课程号
外连接:
左连接(LeftOuterJoin):结果表中除了包括满足连接条件的行外,还包括左表的所有行;
右连接(RightOuterJoin):结果表中除了包括满足连接条件的行外,还包括右表的所有行。
完全连接(FullOuterJoin):结果表中除了包括满足连接条件的行外,还包括两个表的所有行。
查找所有学生情况及他们选修的课程号,若学生未选修任何课,也要包括其情况。