數據庫面試題總結

一、通過 SQL,您如何從 "Persons" 表中選取 "FirstName" 列的值等於"Peter" 的所有記錄?C

  1) SELECT [all] FROM Persons WHERE FirstName='Peter' ;

  2) SELECT * FROM Persons WHERE FirstName LIKE 'Peter';

  3) SELECT * FROM Persons WHERE FirstName='Peter';

  4) SELECT [all] FROM Persons WHERE FirstName LIKE 'Peter';

 

二、通過 SQL,您如何從 "Persons" 表中選取 "FirstName" 列的值以 "a" 開頭的所有記錄?D

  1) SELECT * FROM Persons WHERE FirstName='a';

  2) SELECT * FROM Persons WHERE FirstName LIKE '%a';

  3) SELECT * FROM Persons WHERE FirstName='%a%';

  4) SELECT * FROM Persons WHERE FirstName LIKE 'a%';

 

三、通過 SQL,您如何按字母順序選取 Persons 表中 LastName 介於 Adams 和 Carter 的所有記錄?B

  1) SELECT * FROM Persons WHERE LastName>'Adams' AND LastName<'Carter';

  2) SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter';

  3) SELECT LastName>'Adams' AND LastName<'Carter' FROM Persons;

 

四、哪條 SQL 語句可返回唯一不同的值?A

  1) SELECT DISTINCT

  2) SELECT DIFFERENT

  3) SELECT UNIQUE

 

五、哪條 SQL 語句用於在數據庫中插入新的數據?B

  1) INSERT NEW

  2) INSERT INTO

  3) ADD RECORD

  4) ADD NEW

 

六、通過 SQL,您如何從 "Persons" 表中選取 "FirstName" 列?C

  1) SELECT Persons.FirstName;

  2) EXTRACT FirstName FROM Persons;

  3) SELECT FirstName FROM Persons;

 

七、通過 SQL,您如何從 "Persons" 表中選取所有的列?B

  1) SELECT [all] FROM Persons;

  2) SELECT * FROM Persons;

  3) SELECT Persons;

  4) SELECT *.Persons;

 

八、通過 SQL,您如何從 "Persons" 表中選取 "FirstName" 列的值等於"Peter" 的所有記錄?B

  1) SELECT [all] FROM Persons WHERE FirstName='Peter';

  2) SELECT * FROM Persons WHERE FirstName='Peter';

  3) SELECT * FROM Persons WHERE FirstName LIKE 'Peter';

  4) SELECT [all] FROM Persons WHERE FirstName LIKE 'Peter';

 

trnlst 交易清單

trn

name

4519

抵債資產損失覈銷登記

2115

儲蓄存款轉存       

1101

客戶基本信息維護

2161

儲蓄活期一本通開戶

1122

儲蓄活期一本通開戶

 

entry 交易分錄表

trn

no

entry

cr

acct

4519

1

借:呆賬準備金                          

129100

4519

2

貸:其它呆帳貸款損失                     

128400

4519

3

收:已覈銷呆帳                          

108000

2115

1

借:存款帳戶                            

     

2115

2

貸:轉入存款賬戶                        

     


 

dict_act 科目字典表

attr

account

ctrlcode

name

cr

資產

1291    

129100

呆賬準備                               

資產

12911   

129110

貸款損失專項準備                       

負債

2011

201100

活期存款

負債

2051

205100

定期存款

負債

20511

205110

一年以下定期存款

 

 

  1. 從 dict_act 表中選取字段 name 的2個漢字爲“賬”或 “款” 或 “年” 的科目

select * from dict_act where

(name like'%%' and name like'%%') or

(name like'%%' and name like'%%') or

(name like'%%' and name like'%%');

 

  1. 從 dict_act 表中選取字段 name 不以“貸” 和 “活” 開頭的科目

 

select * from dict_act where name not like '貸%'and name not like‘活%’

 

3. 列出使用了 acct 科目的交易分錄表記錄,並同時列出科目的名稱(寫出SQL語句和結果集)

 

SELECT a.* ,b.name

from entry a left JOIN trnlst b   on a.trn = b.trn

where a.acct <> ''

 

4. 列出所有的交易分錄記錄和使用的科目名稱 (如果有的話),寫出SQL語句和結果集

 

SELECT a.*,b.name

from entry a left join dict_act b on a.acct = b.ctrlcode

where a.acct <> ''

 

5. 列出所有的科目字典,和使用的交易分錄 (如果有的話) ,寫出SQL語句和結果集

SELECT a.*,b.*

from dict_act a left join entry b on a.ctrlcode = b.acct

where a.ctrlcode <> ''

                                           

6. 列出交易清單中所有交易,和使用的科目名稱 (如果有的話) ,寫出SQL語句和結果集

 

SELECT a.*,c.name

from trnlst a

LEFT JOIN entry b

on a.trn = b.trn

left join dict_act c

on b.acct = c.ctrlcode

 

比較經典的面試題:

用一條SQL語句查詢出prd表中每個產品都大於800億的銀行名稱

 

bank

product

balance

蘇州銀行

活期儲蓄

801

蘇州銀行

農戶短期貸款

750

漢口銀行

活期儲蓄

760

漢口銀行

銀團貸款

900

蘭州銀行

活期儲蓄

812

蘭州銀行

銀團貸款

1006

蘭州銀行

住房按揭貸款

905

 

Select bank

from pro

group by bank

having min(balance)>800

第二題  

 

賬戶表 如下:

編號

賬號

姓名

科目

科目名稱

餘額

1

7061001

強西

201101

活期存款

690

2

7061002

天天

201101

活期存款

890

3

7061001

強西

201101

活期存款

690

 

刪除除了編號不同其他都相同的賬戶冗餘信息

Oracle中的處理方法:

 delete from account where id not in(select max(id) from account group by count,name,kemu,kemumc,balance)

mysql中的方法

create table tmp as select min(id) as col1 from account group by count,name,kemu,kemumc,balance;

delete from account where id not in (select col1 from tmp);

drop table tmp;

第三題

一個叫 bank 的表,裏面只有一個字段 name, 一共有 4 條紀錄,分別是a,b,c,d, 對應四家銀行,現在四家銀行進行足球比賽,用一條sql語句顯示所有可能的比賽組合 d

select a.name, b.name  from bank a, bank b  where a.name < b.name

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章