數據庫簡單面試題 初級

一組SQL面試題

 (2010-06-13 11:20:11)

轉載

標籤: 

雜談

分類: 數據庫

一、數據庫SQL

1. 在表A中有數據
ID    MO
1    Y
2    N
請用一個SELECT 語句寫出,如果MO的值爲“Y”,返回“YES”,爲N返回“NO”
效果如下:
ID    MO
1    YES
2    NO
SELECT ID,MO=CASE
WHEN MO=’Y’ THEN ‘YES’
WHEN MO=’N’ THEN ‘NO’
END
FROM Az
2. 在表A中查詢出自動增長列中31到40之間的數據(注意可能不是連續的)
select * from A where id between 31 and 40
3. 有一個表table中有一個自動增長字段ID,如果在存儲過程中向這個表插入一條記錄後,如何獲得新記錄的ID.(寫出獲取新記錄ID的函數即可)
CREATE FUNCTION c_currentId()
RETURNS int
AS
BEGIN
declare @lastId int
select @lastId=max(cid) from c
RETURN (@lastId)
END
select tempdb.dbo.c_currentId() as ‘當前C表中最新的編號’
4. having的用法, 是用來做什麼的   having用來對group by 分組後的記錄進行過濾。
5. sql中的什麼函數可以轉換爲時間    select convert(datetime,’2000/01/01′)   select cast(’2001/02/02′ as datetime)
6. 查詢數據放入一張臨時表   select * into #A from Test    select * from #A

 

二、 數據庫 ORACLE
T表:(字段:ID,NAME,ADDRESS,PHONE,LOGDATE)
E表:(字段:NAME,ADDRESS,PHONE)
1. 將表T中的字段LOGDATE中爲2001-02-11的數據更新爲2003-01-01,請寫出相應的SQL語句。(該字段類型爲日期類型)
update t
set logdate=to_date('2003-01-01','yyyy-mm-dd')
where logdate=to_date('2001-02-11','yyyy-mm-dd');

2. 請寫出將表T中NAME存在重複的記錄都列出來的SQL語句(按NAME排序)
select *
from t
where name in (select name from t group by name having coung(*)>1)
order by name;--沒說清楚,到底是升序還是降序

3. 請寫出題目2中,只保留重複記錄的第一條,刪除其餘記錄的SQL語句(即使該表不存在重複記錄)
select ID,NAME,ADDRESS,PHONE,LOGDATE
from
(
select t.*,row_number() over(partition by name order by name) rn
from t
)
where rn = 1;

4. 請寫出將E表中的ADDRESS、PHONE更新到T表中的SQL語句(按NAME相同進行關聯)
update t
set (address,phone)=
(select address,phone from e where e.name=t.name);

5. 請寫出將T表中第3~5行數據列出來的SQL語句
select *
from t
where rownum <=5
minus
select *
from t
where rownum >=2;

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