一、通過 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 |
一年以下定期存款 |
- 從 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'%年%');
- 從 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