成年人在线观看视频免费,国产第2页,人人狠狠综合久久亚洲婷婷,精品伊人久久

我要投稿 投訴建議

最新數(shù)據(jù)庫(kù)面試題

時(shí)間:2022-11-05 03:10:51 面試試題 我要投稿
  • 相關(guān)推薦

2016年最新數(shù)據(jù)庫(kù)面試題

  下面是CN人才網(wǎng)提供的2016年最新數(shù)據(jù)庫(kù)面試題,歡迎閱讀。

2016年最新數(shù)據(jù)庫(kù)面試題

  sql面試題

  1,寫(xiě)出一條Sql語(yǔ)句:取出表A中第31到第40記錄(SQLServer,以自動(dòng)增長(zhǎng)的ID作為主鍵,注意:ID可能不是連續(xù)的。

  答:

  → 解1: select top 10 * from A where id not in (select top 30 id from A)

  演變步驟:

  1)select top 30 id from T_FilterWords–取前條

  2)select * from T_FilterWords where id not in (select top 30 id from T_FilterWords)–取id不等于前三十條的–也就是把前條排除在外

  3)select top 10 * from T_FilterWords where id not in (select top 30 id from T_FilterWords)

  –取把前條排除在外的前條,也就是-40條

  → 解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)

  → 解3:用ROW_NUMBER實(shí)現(xiàn)

  /———————————————–+———————————————–\

  下面的SQL題是?碱}中的?碱},必須重視!!!!!!!!

  2,橫表、縱表轉(zhuǎn)換(?!!!)

  1)縱表結(jié)構(gòu) TableA

  Name Course Grade

  張三 語(yǔ)文 75

  張三 數(shù)學(xué) 80

  張三 英語(yǔ) 90

  李四 語(yǔ)文 95

  李四 數(shù)學(xué) 55

  橫表結(jié)構(gòu) TableB

  Name 語(yǔ)文 數(shù)學(xué) 英語(yǔ)

  張三 75 80 90

  李四 95 55 0

  先理解:

  select Name,

  (case Course when ‘語(yǔ)文‘ then Grade else 0 end) as 語(yǔ)文,

  (case Course when ‘數(shù)學(xué)‘ then Grade else 0 end) as 數(shù)學(xué),

  (case Course when ‘英語(yǔ)‘ then Grade else 0 end) as 英語(yǔ)

  from TableA

  然后理解標(biāo)準(zhǔn)答案:

  select Name,

  sum(case Course when ‘語(yǔ)文‘ then Grade else 0 end) as 語(yǔ)文,

  sum(case Course when ‘數(shù)學(xué)‘ then Grade else 0 end) as 數(shù)學(xué),

  sum(case Course when ‘英語(yǔ)‘ then Grade else 0 end) as 英語(yǔ)

  from TableA

  group by Name

  2)、橫表轉(zhuǎn)縱表的”SQL”示例

  橫表結(jié)構(gòu): TEST_H2Z

  ID 姓名 語(yǔ)文 數(shù)學(xué) 英語(yǔ)

  1 張三 80 90 70

  2 李四 90 85 95

  3 王五 88 75 90

  轉(zhuǎn)換后的表結(jié)構(gòu):

  ID 姓名 科目 成績(jī)

  1 張三 語(yǔ)文 80

  2 張三 數(shù)學(xué) 90

  3 張三 英語(yǔ) 70

  4 李四 語(yǔ)文 90

  5 李四 數(shù)學(xué) 80

  6 李四 英語(yǔ) 99

  7 王五 語(yǔ)文 85

  8 王五 數(shù)學(xué) 96

  9 王五 英語(yǔ) 88

  橫表轉(zhuǎn)縱表SQL示例:

  SELECT 姓名,’語(yǔ)文’ AS 科目,語(yǔ)文 AS 成績(jī) FROM TEST_H2Z UNION ALL

  SELECT 姓名,’數(shù)學(xué)’ AS 科目,數(shù)學(xué) AS 成績(jī) FROM TEST_H2Z UNION ALL

  SELECT 姓名,’英語(yǔ)’ AS 科目,英語(yǔ) AS 成績(jī) FROM TEST_H2Z

  ORDER BY 姓名,科目 DESC;

  3,刪除姓名、年齡重復(fù)的記錄(只保留Id最大的一條)(常考!!!)

  Id name age salary

  1 yzk 80 1000

  2 yzk 80 2000

  3 tom 20 20000

  4 tom 20 20000

  5 im 20 20000

  //取得不重復(fù)的數(shù)據(jù)

  select * from Persons

  where Id in

  (

  SELECT MAX(Id) AS Expr1

  FROM Persons

  GROUP BY Name, Age

  )

  → 根據(jù)姓名、年齡分組,取出每組的Id最大值,然后將Id最大值之外的排除。

  刪除重復(fù)的數(shù)據(jù):

  delete from Persons

  where Id not in

  (

  SELECT MAX(Id) AS Expr1

  FROM Persons

  GROUP BY Name, Age

  )

  4,下面是一個(gè)由*號(hào)組成的4行倒三角形圖案。

  → 要求:1、輸入倒三角形的行數(shù),行數(shù)的取值3-21之間,對(duì)于非法的行數(shù),要求拋出提示“非法行數(shù)!”;2、在屏幕上打印這個(gè)指定了行數(shù)的倒三角形。

  *******

  *****

  ***

  *

  5,一個(gè)文本文件含有如下內(nèi)容:

  4580616022644994|3000|趙濤

  4580616022645017|6000|張屹

  4580616022645090|3200|鄭欣夏

  → 上述文件每行為一個(gè)轉(zhuǎn)賬記錄,第一列表示帳號(hào),第二列表示金額,第三列表示開(kāi)戶(hù)人姓名。

  創(chuàng)建一張數(shù)據(jù)庫(kù)表(MS SQLServer數(shù)據(jù)庫(kù),表名和字段名自擬),請(qǐng)將上述文件逐條插入此表中。

  6、一個(gè)文本文件含有如下內(nèi)容,分別表示姓名和成績(jī):

  張三 90

  李四 96

  王五 78

  趙六 82

  → 提供用戶(hù)一個(gè)控制臺(tái)界面,允許用戶(hù)輸入要查詢(xún)的姓名,輸入姓名并且按回車(chē)以后,打印出此人的成績(jī),如果不輸入姓名直接按回車(chē)則顯示所有人的姓名以及成績(jī)。(注意:不能使用數(shù)據(jù)庫(kù))

  7,表A字段Id為numberic(18,0),哪個(gè)SQL語(yǔ)句是錯(cuò)誤的:

  select * from A where id=”;

  select * from A where id=’13′;

  select * from A where id=null;

  select * from A where id=’ 13′;

  8,在SQLServer中求當(dāng)前時(shí)間與2012-01-01 0:0:0相差的秒數(shù)?

  9,做一個(gè)表格,三行三列,第一列,前兩行合一;第二行,后兩列合一。

  10,

  表一:student_info

  學(xué)號(hào) 姓名 性別 出生年月 家庭住址 備注

  0001 張三 男 1981-8-9 北京 NULL

  表二:curriculum

  課程編號(hào) 課程名稱(chēng) 學(xué)分

  0001 計(jì)算機(jī)基礎(chǔ) 2

  0002 C語(yǔ)言 2

  表三:grade

  學(xué)號(hào) 課程編號(hào) 分?jǐn)?shù)

  0001 0001 80

  0001 0002 90

  題目:

  → 條件查詢(xún):

  在GRADE表中查找80-90份的學(xué)生學(xué)號(hào)和分?jǐn)?shù)

  select 學(xué)號(hào),分?jǐn)?shù) from grade where 分?jǐn)?shù) between 80 and 90

  在GRADE 表中查找課程編號(hào)為003學(xué)生的平均分

  select avg(分?jǐn)?shù)) from grade where 課程編號(hào)=’003′

  在GRADE 表中查詢(xún)學(xué)習(xí)各門(mén)課程的人數(shù)

  Select課程編號(hào),count(學(xué)號(hào)) as 人數(shù)from grade group by 課程編號(hào)

  查詢(xún)所有姓張的學(xué)生的學(xué)號(hào)和姓名

  select 姓名,學(xué)號(hào) from student_info where 姓名 like ‘張%’

  → 嵌套查詢(xún):

  1,查詢(xún)和學(xué)號(hào)’0001’的這位同學(xué)性別相同的所有同學(xué)的姓名和出生年月

  select 姓名,出生年月 from student_info where 性別 in(select 性別 from student_info where sno=’0001′)

  2,查詢(xún)所有選修課程編號(hào)為0002 和0003的學(xué)生的學(xué)號(hào)、姓名和性別

  select 學(xué)號(hào),姓名,性別 from student_info where 學(xué)號(hào) in(select 學(xué)號(hào) from grade where 課程編號(hào)=’0002′ and 學(xué)號(hào) in(select 學(xué)號(hào) from grade where 課程編號(hào)=’0001′))

  3,查詢(xún)出學(xué)號(hào)為0001的學(xué)生的分?jǐn)?shù)比0002號(hào)學(xué)生最低分高的課程編號(hào)的課程編號(hào)和分?jǐn)?shù)

  select 課程編號(hào), 分?jǐn)?shù) from grade where 學(xué)號(hào)=’0001′ and 分?jǐn)?shù)>(select min(分?jǐn)?shù)) from grade where 學(xué)號(hào)=’0002′)

  → 多表查詢(xún):

  1,查詢(xún)分?jǐn)?shù)在80-90分的學(xué)生的學(xué)號(hào)、姓名、分?jǐn)?shù)

  select student_info.學(xué)號(hào),student_info.姓名,grade.分?jǐn)?shù) from student_info,grade where grade.分?jǐn)?shù) between 80 and 90

  2,查詢(xún)學(xué)習(xí)了’C語(yǔ)言’課程的學(xué)生學(xué)號(hào)、姓名和分?jǐn)?shù)

  select student_info.學(xué)號(hào),student_info.姓名,grade.成績(jī)from student_info,grade,curriculum where student_info.學(xué)號(hào)=grade.學(xué)號(hào)and grade.課程號(hào)=curriculum.課程號(hào)and curriculum.課程名=’C語(yǔ)言’

  3,查詢(xún)所有學(xué)生的總成績(jī),要求列出學(xué)號(hào)、姓名、總成績(jī),沒(méi)有選課的學(xué)生總成績(jī)?yōu)榭铡?/p>

  select grade.學(xué)號(hào),student_info.姓名,sum(grade.成績(jī)) as 總成績(jī)from student_info,grade where grade.學(xué)號(hào)=student_info.學(xué)號(hào)group by grade.學(xué)號(hào),student_info.姓名

  11,題目、活期存款中,“儲(chǔ)戶(hù)”通過(guò)“存取款單”和“儲(chǔ)蓄所”發(fā)生聯(lián)系。假定儲(chǔ)戶(hù)包括:賬號(hào),姓名,電話,地址,存款額;“儲(chǔ)蓄所”包括:儲(chǔ)蓄所編號(hào),名稱(chēng),電話,地址(假定一個(gè)儲(chǔ)戶(hù)可以在不同得儲(chǔ)蓄所存取款)

  1、寫(xiě)出設(shè)計(jì)以上表格的語(yǔ)句(4分)

  2、創(chuàng)建一個(gè)觸發(fā)器TR1完成下面內(nèi)容:

  → 當(dāng)向“存取款單”表中插入數(shù)據(jù)時(shí),如果存取標(biāo)志=1則應(yīng)該更改儲(chǔ)戶(hù)表讓存款額加上存取金額,如果存取標(biāo)志=0則應(yīng)該更改儲(chǔ)戶(hù)表讓存款額減去存取金額,如果余額不足顯示余額不足錯(cuò)誤。

  CREATE TABLE CREATE TRIGGER tr1 on qukuan after insert

  AS

  BEGIN

  declare @sid nvarchar(50)

  declare @type int

  declare @qian int

  declare @yuer int

  select @sid=sid,@type=[type],@m=m from inserted

  select @yuer=yuer from cunkuan

  if(@type=1)

  begin

  update cunkuan set yuer=yuer+@qian

  end

  else

  begin

  if(@yuer<@qian)

  begin

  print ‘余額不足’

  end

  else

  begin

  update cunkuan set yuer=yuer-@qian

  end

  end

  END

  GO

  12,本題用到下面三個(gè)關(guān)系表:

  CARD 借書(shū)卡: (CNO 卡號(hào),NAME 姓名,CLASS 班級(jí))

  BOOKS 圖書(shū): (BNO 書(shū)號(hào),BNAME 書(shū)名,AUTHOR 作者,PRICE 單價(jià),QUANTITY 庫(kù)存冊(cè)數(shù) )

  BORROW 借書(shū)記錄: (CNO 借書(shū)卡號(hào),BNO 書(shū)號(hào),RDATE 還書(shū)日期

  → 備注:限定每人每種書(shū)只能借一本;庫(kù)存冊(cè)數(shù)隨借書(shū)、還書(shū)而改變。

  → 要求實(shí)現(xiàn)如下處理:

  1),寫(xiě)出自定義函數(shù),要求輸入借書(shū)卡號(hào)能得到該卡號(hào)所借書(shū)金額的總和

  CREATE FUNCTION getSUM

  (

  @CNO int

  )

  RETURNS int

  AS

  BEGIN

  declare @sum int

  select @sum=sum(price) from BOOKS where bno in (select bno from BORROW where cno=@CNO)

  return @sum

  END

  GO

  2),找出借書(shū)超過(guò)5本的讀者,輸出借書(shū)卡號(hào)及所借圖書(shū)冊(cè)數(shù)。

  select CNO,count(BNO) as 借書(shū)數(shù)量from BORROW group by CNO having count(BNO)>3

  3),查詢(xún)借閱了”水滸”一書(shū)的讀者,輸出姓名及班級(jí)。

  select name,class from card where cno in( select cno from borrow where bno in(

  select bno from BOOKS where bname=’水滸’))

  4),查詢(xún)過(guò)期未還圖書(shū),輸出借閱者(卡號(hào))、書(shū)號(hào)及還書(shū)日期。

  select CNO,BNO,RDATE from borrow where getdate()>RDATE

  5),查詢(xún)書(shū)名包括”網(wǎng)絡(luò)”關(guān)鍵詞的圖書(shū),輸出書(shū)號(hào)、書(shū)名、作者。

  select bno,bname,author from books where bname like ‘網(wǎng)絡(luò)%’

  6),查詢(xún)現(xiàn)有圖書(shū)中價(jià)格最高的圖書(shū),輸出書(shū)名及作者。

  select bname,author from books where price in(select max(price) from books )

  7),查詢(xún)當(dāng)前借了”計(jì)算方法”但沒(méi)有借”計(jì)算方法習(xí)題集”的讀者,輸出其借書(shū)卡號(hào),并按卡號(hào)降序排序輸出。

  select cno from borrow where bno in (select bno from books where bname=’計(jì)算方法’) and cno not in ( select cno from borrow where bno in(select bno from books where bname=’計(jì)算方法習(xí)題集’)) order by cno desc

  或

  SELECT a.CNO

  FROM BORROW a,BOOKS b

  WHERE a.BNO=b.BNO AND b.BNAME=N’計(jì)算方法’

  AND NOT EXISTS(

  SELECT * FROM BORROW aa,BOOKS bb

  WHERE aa.BNO=bb.BNO

  AND bb.BNAME=N’計(jì)算方法習(xí)題集’

  AND aa.CNO=a.CNO)

  ORDER BY a.CNO DESC

  8),將”C01″班同學(xué)所借圖書(shū)的還期都延長(zhǎng)一周。

  update borrow set rdate=dateadd(day,7,rdate) from BORROW where cno in(select cno from card where class=’一班’)

  9),從BOOKS表中刪除當(dāng)前無(wú)人借閱的圖書(shū)記錄。

  DELETE A FROM BOOKS a WHERE NOT EXISTS( SELECT * FROM BORROW WHERE BNO=a.BNO)

  10),如果經(jīng)常按書(shū)名查詢(xún)圖書(shū)信息,請(qǐng)建立合適的索引。(這個(gè)不確定對(duì)不 90%應(yīng)該是對(duì)的 自己看了下書(shū)寫(xiě)的)

  CREATE CLUSTERED INDEX IDX_BOOKS_BNAME ON BOOKS(BNAME)

  11),在BORROW表上建立一個(gè)觸發(fā)器,完成如下功能:如果讀者借閱的書(shū)名是”數(shù)據(jù)庫(kù)技術(shù)及應(yīng)用”,就將該讀者的借閱記錄保存在BORROW_SAVE表中(注ORROW_SAVE表結(jié)構(gòu)同BORROW表)。

  CREATE TRIGGER TR_SAVE ON BORROW FOR INSERT,UPDATE AS IF @@ROWCOUNT>0 INSERT BORROW_SAVE SELECT i.* FROM INSERTED i,BOOKS b

  WHERE i.BNO=b.BNO AND b.BNAME=N’數(shù)據(jù)庫(kù)技術(shù)及應(yīng)用’

  12),建立一個(gè)視圖,顯示”力01″班學(xué)生的借書(shū)信息(只要求顯示姓名和書(shū)名)。

  CREATE VIEW V_VIEW AS select name,bname from books,card,borrow where borrow.cno=card.cno and borrow.bno=books.bno and class=’一班’

  13).查詢(xún)當(dāng)前同時(shí)借有”計(jì)算方法”和”組合數(shù)學(xué)”兩本書(shū)的讀者,輸出其借書(shū)卡號(hào),并按卡號(hào)升序排序輸出。

  select a.cno from borrow a,borrow b where a.cno=b.cno and a.bno in(select bno from books where bname=’計(jì)算方法’) and b.bno in(select bno from books where bname=’組合數(shù)學(xué)’) order by a.cno desc

  或

  SELECT a.CNO FROM BORROW a,BOOKS b WHERE a.BNO=b.BNO AND b.BNAME IN(‘計(jì)算方法’,’組合數(shù)學(xué)’) GROUP BY a.CNO HAVING COUNT(*)=2 ORDER BY a.CNO DESC

  14),用事務(wù)實(shí)現(xiàn)如下功能:一個(gè)借書(shū)卡號(hào)借走某書(shū)號(hào)的書(shū),則該書(shū)的庫(kù)存量減少1,當(dāng)某書(shū)的庫(kù)存量不夠1本的時(shí)候,該卡號(hào)不能借該書(shū)

  alter PROCEDURE pro_jieshu

  @cno int,

  @bno int,

  @date datetime

  AS

  BEGIN

  begin tran

  declare @quantity int

  select @quantity=quantity from books where bno=@bno

  insert into borrow values(@cno,@bno,@date)

  update books set quantity=@quantity-1 where bno=@bno

  if(@quantity>0)

  begin

  commit tran

  end

  else

  begin

  print ‘已無(wú)庫(kù)存’

  rollback

  end

  END

  GO

  15),用游標(biāo)實(shí)現(xiàn)將書(shū)號(hào)為‘A001’的書(shū)本的價(jià)格提高10元

  declare @bno int

  declare @bname nvarchar(50)

  declare @author nvarchar(50)

  declare @price int

  declare @quantity int

  declare mycursor cursor for select * from books

  open mycursor

  fetch next from mycursor into @bno,@bname,@author,@price,@quantity

  while(@@fetch_status=0)

  begin

  if(@bno=2)

  begin

  update books set price=@price+10 where current of mycursor

  end

  fetch next from mycursor into @bno,@bname,@author,@price,@quantity

  end

  close mycursor

  deallocate mycursor

【最新數(shù)據(jù)庫(kù)面試題】相關(guān)文章:

Oracle數(shù)據(jù)庫(kù)DBA經(jīng)典面試題02-02

數(shù)據(jù)庫(kù)常見(jiàn)面試題07-28

麥當(dāng)勞最新面試題目02-22

2014最新中興面試題08-10

最新關(guān)于精選php面試題及答案07-18

最新文秘面試題目及答案07-20

最新結(jié)構(gòu)化面試題目09-26

最新2015北京幼升小面試題08-03

最新騰訊微信產(chǎn)品經(jīng)理面試題07-27

2016結(jié)構(gòu)化面試題庫(kù)(最新)02-17