SQL常见面试题.docx

上传人:b****3 文档编号:835006 上传时间:2022-10-13 格式:DOCX 页数:31 大小:27.45KB
下载 相关 举报
SQL常见面试题.docx_第1页
第1页 / 共31页
SQL常见面试题.docx_第2页
第2页 / 共31页
SQL常见面试题.docx_第3页
第3页 / 共31页
SQL常见面试题.docx_第4页
第4页 / 共31页
SQL常见面试题.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

SQL常见面试题.docx

《SQL常见面试题.docx》由会员分享,可在线阅读,更多相关《SQL常见面试题.docx(31页珍藏版)》请在冰豆网上搜索。

SQL常见面试题.docx

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())

--获取指

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1