SQL语句题讲解.docx
- 文档编号:15730723
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:14
- 大小:37.55KB
SQL语句题讲解.docx
《SQL语句题讲解.docx》由会员分享,可在线阅读,更多相关《SQL语句题讲解.docx(14页珍藏版)》请在冰点文库上搜索。
SQL语句题讲解
在成绩表中,效率60分为不及格,大于60分为及格,大于80分为优秀,请用一条SQL语句查询。
答:
设有成绩表Scores包含字段ScoreIdScore
查询语句如下:
Select成绩=case
Whenscorebetween(0and59)then‘不及格’
Whenscorebetween(60and79)then‘及格’
Whenscorebetween(80and100)then‘优秀’
Else‘无效成绩’
End
FromScore
请用SQL语句查处当天所有记录.
答:
select*fromtb_sendwheredatediff(day,sendTime,getdate())=0
sql查询,表table(id,lastUpdateDate);使用一条sql语句查出最近一次的修改时间
答:
selecttop1lastUpdateDatefrom[table]orderbylastUpdateDatedesc
游标的声明与使用,如何判断记录已到达最末尾
declare@myCurCursor
declaremySetCursorfor
select*from表名
set@muCur=mySet
openmySet
fetchnextfrommySet
while@@FETCH_STATUS=0
begin
fetchnextfrommySet
end
closemySet
deallocatemySet
看表写SQL
Id
1
自动增长,主键
Name
Accp
Tel
1111111111
Datetime
2008-1-1
查询出时间在2008-1-1到2009-3-3的所有信息
更新id=8的name为你的姓名,tel为你的电话号码
插入一行数据
答:
1)select*from表whereDatetime>=2008-1-1andDatetime<=2009-3-3
2)selectnameas姓名,telas电话号码from表whereid=8
3)insertinto表(name,tel,datetime)values(‘ss’,’111111111’,’2009-01-01’)
1.查询表中stuAge字段有重复值的数据:
例:
输出结果如下:
答:
select*fromstuinfo
wherestuAgein
(
selectstuAgefromstuinfo
groupbystuAgehavingcount(*)>1
)
2.用table2中科目余额更新table1中的科目余额,不在table2中出现的科目不更新。
Updatetable1
set科目余额=table2.科目余额fromtable2
wheretable1.科目=table2.科目
6.查询表中中间的一行数据:
输出:
答:
select*from
(select行号=row_number()over(orderbystuno),*fromstuinfo)temptable
where行号=(selectround(count(*)/2.0,0)fromstuinfo)
3.查出表中11到20条记录,ID作为主键(ID可能不是连续的);
答:
select*from
(selectROW_NUMBER()over(orderbyid)as行号,*fromtemptable)astemp
where行号between21and30orderbyid
Selecttop10*fromtemptablewhereidnotin
(selecttop30idfromtemptable)
4.SQL语句编写T表前10行记录,总行数。
(易)
答:
selecttop10*fromT;selectcount(*)fromT
5.看表数据写sql语句
Productid
saleName
Saleprice
Enployee
2
2
200
M
1
5
300
N
3
1
450
M
4
3
500
N
Sale
Productid
saleName
Saleprice
Enployee
2
2
200
M
1
5
300
N
3
1
450
M
4
3
500
N
问:
是否可以对product标的数据进行删除,如何操作
答:
deletefromSalewhereProductid=2
DeletefromProductwhereProductid=2
将Sale表中Priductid为2的产品价格更新为Product表中的Price
答:
updateSalesetSaleprice=PricefromProductjoinSaleonSale.Productid=Product.ProductidwhereSale.Productid=2
写出统计每个员工的销售总额的SQL语句
答:
selectsaleName,sum(Saleprice)fromSalegroupbysaleName
写出员工销售总额的最大值和SQL语句
答:
selectmax(salep)from(selectsaleName,sum(Saleprice)assalepfromSalegroupbysaleName)asA
UpdateSale表默认自动开始事务么?
为什么?
答:
开始;自动提交事务》每条单独的语句都是一个事务
6、请问列触发器的使用以及在什么情况下使用触发器
答:
update触发器:
当更新表中的某列或多列数据是触发
例:
实现禁止外部手动更新transInfo表中的transDate列数据
usestuDB
GO
ifexists(selectnamefromsysobjectswherename='trig_update_transInfo')
droptriggertrig_update_transInfo
go
altertriggertrig_update_transInfoontransinfoforupdateas
ifupdate(transDate)
begin
print'列数据修改失败'
raisError('安全警告:
交易日期不能修改,此列数据将由系统自动产生',16,1)
rollbacktransaction
end
go
--测试update触发器
setnocounton
updatetransInfosettransDate='2000-1-1'
go
select*fromtransinfo
1.看表,写出实现的SQL语句
商品表:
编号
名称
价格
分类
7
熊猫
9854
生产工具
1
香蕉
3
食物
2
苹果
2
食物
3
火箭炮
900
生产工具
6
板砖
1.5
生产工具
顾客表:
编号
姓名
地址
1
水蓝
水星
3
蒙蒙
地球
6
阿星
月球
交易表
编号
商品编号
顾客编号
所购数量
1
1
1
12
2
3
1
1
3
7
3
1
4
6
6
7
5
2
6
4
6
2
1
45
问:
列出没有购买苹果的顾客的姓名和家庭住址
答:
selectnameas'姓名',addressas'地址'from顾客表where顾客编号notin(select顾客编号from交易表where商品编号in(select商品编号from商品表wherename='苹果')groupby顾客编号)
问:
列出每个人在购买生产工具和食物上各花了多少钱
答:
Select'姓名','物品','数量','单价','分类',(数量*单价)as'总价'from顾客表,商品表,交易表
Where顾客表.编号in(select顾客编号from交易表groupby顾客编号)and交易表.顾客编号=顾客表.编号and交易表.商品编号=商品表.编号
问:
列出卖出总金额最少的前三个商品名称及卖出金额
答:
selecttop3‘商品名称’,‘总价'from商品表,交易表
where商品表.编号=交易表.商品编号orderby‘总价’
两个表,写查询语句,根据两个字段一个是升序,一个将序。
答:
select*froma,bwherea.字段1=b.字段1orderbya.字段2asc,b.字段2desc
根据第一题,每页面显示10条记录,在第25页时怎样显示
?
求出所有选择两门学科(含两门)以上的人
select*fromstudent表rightjoin
(selectSIDfrom选课表groupbySIDhavingcount(KID)>=2)aonstudent表.SID=a.SID
select*fromstudent表whereSIDin
(selectSIDfrom选课表groupbySIDhavingcount(KID)>=2)
6.删除数据库重复数据(保留一条)
delete[demo]whereIDnotin(
SELECTMAX(id)asidFROM[demo]groupbynamehavingCOUNT(*)>1
)
10、
商品名地区价格
苹果北京2.3
苹果天津2.2
西瓜北京2.1
西瓜天津1.8
查询平均价格小于2元的商品名
select商品名,avg(价格)groupby商品名havingavg(价格)<2
12、
1.一道SQL语句面试题,关于groupby
表内容:
2005-05-09胜
2005-05-09胜
2005-05-09负
2005-05-09负
2005-05-10胜
2005-05-10负
2005-05-10负
如果要生成下列结果,该如何写sql语句?
时间胜负
2005-05-0922
2005-05-1012
----------------------------------------------------------------------------------------------------------------------
select时间,
selectdas时间,sum(casewhensf='胜'then1else0end)as胜,sum(casewhensf='负'then1else0end)as负
fromtb1groupbyd
13.请教一个面试中遇到的SQL语句的查询问题
表中有ABC三列,用SQL语句实现:
当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
select(casewhena>bthenaelsebend),(casewhenb>cthenbelsecend)fromtb
1.使用标准SQL嵌套语句查询选修课程名称为'软件工程’的学员学号和姓名
select学号、学员姓名fromswhere学号in(
select学号fromsc
where课程编号in(
select课程编号fromcwherec.课程名称='软件工程')
)
16.
namekechengfenshu
张三语文81
张三数学75
张三英语75
李四语文76
李四数学90
李四英语90
王五语文81
王五数学100
王五英语90
(1)用一条SQL语句查询出每门课都大于80分的学生姓名
selectname
fromdemowherefenshu>80groupbyname
(2)用一条SQL语句查询结果为:
name语文数学英语
张三817575
李四769090
王五8110090
selectname
max(casewhenkecheng='语文'thenfenshuelse0end)as语文
max(casewhenkecheng='数学'thenfenshuelse0end)as数学
max(casewhenkecheng='英语'thenfenshuelse0end)as英语
fromdemogroupbyname
3、有以下两张表,
Class表
classidclassname
1高三
(一)班
2高三
(二)班
3高三(三)班
Student表
studentidstudentNameclassid
1张三2
2李四1
3王五1
4赵六3
5钱七2
6孙九3
score表
scoreidcoursestudentidscore
1数学299
2数学360
3数学480
4语文579
5语文658
6语文166
7英语676
8英语487
9英语3100
10英语269
要求:
编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数
selectstudentName,a.course,a.分数,fromStudent表rightjoin
(selectcourse,max(score)as分数,max(studentid)fromscore表groupbycourse)onStudent表.studentid=a.studentid
leftjoinClass表onClass表.classid=Student表.Classid
A.数据表T用来记录用户登录、注销信息,其中只有4个记录:
user(用户名)
operate(操作)
time(时间)
LiMing
Login
2010/10/248:
03
WangYi
Login
2010/10/248:
14
WangYi
Logout
2010/10/2416:
14
LiMing
Logout
2010/10/2416:
44
请写出一个SQL查询语句,返回用户在线时间情况的结果集:
LiMing
8:
13
WangYi
8:
46
答:
selectuser,left('2008-11-0113:
03:
53.327',5)fromtablenamewhereoperate=‘login’
12、有如下学生表:
students
sid学生id
no编号
name名字
address地址
age年龄
学生成绩表:
studentssuccess
idnoint编号
subjectvarchar(50)科目
scoreint成绩
termint学期(1、2、3。
。
。
)
请解决一下问题
1、张三第一学期的各科成绩
2、所有学生的各学期各科成绩
3、第二学期所有语文成绩在80分之上的人
4、湖南的第二学期英语成绩在90分以上的人数
答案:
1、selectA.id,A.name,B.id,B.subject,B.score
fromstudentsasAinnerjoinstudentssuccessasB
onA.id=B.id
whereA.name='张三'andB.term=='第一学期'
2、select*fromstudentsinnerjoinstudentssucees
onsuudents.id=studentssuccess.id
3、selectA.id,A.name,B.id,B.subjectfromstudentsasAinnerjoinstudentssuccessasBonA.id=B.idwhereB.subject='语文'andB.score>80andB.term=='第二学期'
4、selectCount(*)fromstudentsasAinnerjoinstudentssuccessasBonA.id=B.idwhereA.address='湖南'andB.score>90andB.term=='第二学期'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 语句 讲解