SQL常见面试题.docx
- 文档编号:835006
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:31
- 大小:27.45KB
SQL常见面试题.docx
《SQL常见面试题.docx》由会员分享,可在线阅读,更多相关《SQL常见面试题.docx(31页珍藏版)》请在冰豆网上搜索。
SQL常见面试题
SQL常见面试题
1.用一条SQL语句查询出每门课都大于80分的学生姓名
name kecheng fenshu
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
A:
selectdistinctnamefromtable where namenotin(selectdistinctnamefromtablewherefenshu<=80)
2.学生表如下:
自动编号 学号 姓名课程编号课程名称分数
1 2005001 张三 0001 数学 69
2 2005002 李四 0001 数学 89
3 2005001 张三 0001 数学 69
删除除了自动编号不同,其他都相同的学生冗余信息
A:
deletetablenamewhere自动编号notin(selectmin(自动编号)fromtablenamegroupby学号,姓名,课程编号,课程名称,分数)
3.表A(单位名称,单位帐号),表B(单位编号,个人账号)
列出各单位的名称,账号,以及单位的人数
selectA.name,A.dwzh,isnull(Ct.Quantity,'0')asQuantityfromA
leftjoin
(selectdwzh,count(*)asQuantityfromB
groupbydwzh)asCt
onA.dwzh=Ct.dwzh
4.股票表(股票代码,买卖类型,数量)
按照股票代码列出,买的数量,卖的数量。
selectisnull(a.StockID,b.StockID),isnull(a.S,'0'),isnull(b.B,'0')from(
selectStockID,sum(quantity)asSfromstocks
wheresType='s'
groupbyStockID)a
fulljoin(
selectStockID,sum(quantity)asBfromstocks
wheresType='b'
groupbyStockID)b
ona.StockID=b.StockID
5.select*fromtempTwhere','+tempT.description+','like'%,1,%'
SQLServer数据库的高级操作
(1)批处理
(2)变量
(3)逻辑控制
(4)函数
(5)高级查询
*/
(1)批处理
将多条SQL语句作为一个整体去编译,生成一个执行方案,然后,执行!
理解批处理的关键在于"编译",对于由多条语句组成的一个批处理,
如果在编译时,其中,有一条出现语法错误,将会导致编译失败!
createtablet
(
aint,
bint
)
--注释
--如果多行注释中包含了批处理的标识符go
--在编译的过程中代码将会被go分割成多个局部来分批编译
--多行注释的标记将会被分隔而导致编译出错
--以下几条语句是三个非常经典的批处理
--你猜一下会添加几条记录!
/*
insertintotvalues(1,1)
go
*/
insertintotvalues(2,2)
go
/*
insertintotvalues(3,3)
*/
go
--查询看添加了几条记录
select*fromt
truncatetablet
(2)变量
--全局变量
SQLServer中全局变量由系统定义、系统维护,用户一般仅可对其进行读取!
--查看SQLServer版本
print@@version
--效劳器名称
print@@servername
--系统错误编号
insertintotvalues('a','a')
print@@error
insertintotvalues('a','a')
if@@error=245
print'Error'
--SQLServer版本的语言信息
print@@LANGUAGE
--一周的第一天从星期几算起
print@@datefirst
--CPU执行命令所消耗时间的累加
print@@cpu_busy
--获取最近添加的标识列的值
createtablett
(
aintidentity(3,10),
bint
)
insertintott(b)values
(1)
print@@identity
select*fromtt
--局部变量
局部变量由用户定义,仅可在同一个批处理中调用和访问
declare@intAgetinyint
set@intAge=12
print@intAge
declare@strNamevarchar(12)
select@strName='state'
print@strName
selectau_lname,@strNamefromauthors
(3)逻辑控制
--IF条件判断
declare@iint
set@i=12
if(@i>10)
begin --{
print'Dadadada!
'
print'Dadadada!
'
end --}
else
begin
print'XiaoXiao!
'
print'XiaoXiao!
'
end
--While循环控制
declare@iint;
set@i=12;
print@i
return;
while(@i<18)
begin
print@i;
set@i=@i+1;
if@i<17
continue;
if@i>15
break;
end;
--CASE分支判断
selectau_lname,state,'犹他州'fromauthorswherestate='UT'
selectau_lname,state,'密西西比州'fromauthorswherestate='MI'
selectau_lname,state,'肯塔基州'fromauthorswherestate='KS'
selectau_lname,state,
casestate
when'UT'then'犹他州'
when'MI'then'密西西比州'
when'KS'then'肯塔基州'
when'CA'then'加利福利亚'
elsestate
end
fromauthors
(4.1)系统函数
--获取指定字符串中左起第一个字符的ASC码
printascii('ABCDEF')
--根据给定的ASC码获取相应的字符
printchar(65)
--获取给定字符串的长度
printlen('abcdef')
--大小写转换
printlower('ABCDEF')
printupper('abcdef')
--去空格
printltrim(' abcd dfd df ')
printrtrim(' abcd dfd df ')
--求绝对值
printabs(-12)
--幂
--3的2次方
printpower(3,2)
printpower(3,3)
--随机数
--0-1000之间的随机数
printrand()*1000
--获取圆周率
printpi()
--获取系统时间
printgetdate()
--获取3天前的时间
printdateadd(day,-3,getdate())
--获取3天后的时间
printdateadd(day,3,getdate())
--获取3年前的时间
printdateadd(year,-3,getdate())
--获取3年后的时间
printdateadd(year,3,getdate())
--获取3月后的时间
printdateadd(month,3,getdate())
--获取9小时后的时间
printdateadd(hour,9,getdate())
--获取9分钟后的时间
printdateadd(minute,9,getdate())
--获取指定时间之间相隔多少年
printdatediff(year,'2005-01-01','2016-01-01')
--获取指定时间之间相隔多少月
printdatediff(month,'2005-01-01','2016-01-01')
--获取指定时间之间相隔多少天
printdatediff(day,'2005-01-01','2016-01-01')
--字符串合并
print'abc'+'def'
print'abcder'
print'abc'+'456'
print'abc'+456
--类型转换
print'abc'+convert(varchar(10),456)
selecttitle_id,type,pricefromtitles
--字符串连接必须保证类型一致(以下语句执行将会出错)
--类型转换
selecttitle_id+type+pricefromtitles
--正确
selecttitle_id+type+convert(varchar(10),price)fromtitles
print'123'+convert(varchar(3),123)
print'123'+'123'
printconvert(varchar(12),'2005-09-01',110)
--获取指定时间的特定局部
printyear(getdate())
printmonth(getdate())
printday(getdate())
--获取指定时间的特定局部
printdatepart(year,getdate())
printdatepart(month,getdate())
printdatepart(day,getdate())
printdatepart(hh,getdate())
printdatepart(mi,getdate())
printdatepart(ss,getdate())
printdatepart(ms,getdate())
--获取指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 常见 试题