一、通过 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