當前位置:首頁 » 編程語言 » sql常見的面試題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql常見的面試題

發布時間: 2022-01-28 16:55:46

1. sql 一面試題

select deptno,dname from dept where deptno=(select deptno from (select deptno,avg(sal) from emp group by deptno order by avg(sal) desc) where rownum=1)

2. SQL 面試題

SELECT aa.日期, aa.數值, SUM(lj.數值) AS 累計
FROM 累積 lj INNER JOIN
(SELECT *
FROM 累積) aa ON lj.日期 <= aa.日期
WHERE (aa.日期 <= '2005-05-04') --日期可以變成時間段
GROUP BY aa.日期, aa.數值
ORDER BY aa.日期

3. SQL面試題

select year, (select sum(salary) from t_salary b where b.year <= a.year) salary from t_salary a
group by year

4. sql語句 面試題

A.創建表格CODE省略

註明:學生表PK stu_id 課程表pk cos_id 分數表PK enrollment_id FK stu_id,cos_id

B.插入數據code省略

C.Query

  1. select s.stu_id,stu_name,count(cos_id) from student s,enrollments e where s.stu_id = e.stu_id and e.grade>60 group by s.stu_id,stu_name;

  2. select e.stu_id,s.stu_name,c.cos_name from student s,enrollments e,course c

    where s.stu_id = e.stu_id

    and e.cos_id = c.cos_id

    and c.cos_name = 'CHINESE'

    and s.stu_name like 'W%';

  3. select stu_id,stu_name from (select e.stu_id,stu_name,cos_name from enrollments e,student s,course c

    where s.stu_id = e.stu_id

    and e.cos_id = c.cos_id

    and c.cos_name IN ('CHINESE','MUSIC'))

    group by stu_id,stu_name

    having count(cos_name) = 2

  4. select distinct e.cos_id,c.cos_name,count(e.stu_id) stu_count,count(e.stu_id)-NVL(A.FAIL,0) upscore,(count(e.stu_id)-NVL(A.FAIL,0))/count(e.stu_id) rate from

    (select cos_id,count(stu_id) fail from enrollments where grade<60 group by cos_id) a,enrollments e,course c

    where e.cos_id = a.cos_id(+)

    and e.cos_id = c.cos_id

    group by e.cos_id,NVL(a.fail,0),c.cos_name;

  5. update student

    set avg_grade =(select avg(grade) X from enrollments group by stu_id

    having student.stu_id = enrollments.stu_id);

  6. select stu_id,avg(grade) from

    (select stu_id,cos_id,grade,row_number() over(partition by stu_id order by grade ) X from enrollments)

    group by stu_id

    having count(*)<=2

    UNION

    select A.stu_id,avg(A.grade)from

    (select stu_id,cos_id,grade,row_number() over(partition by stu_id order by grade ) X from enrollments) A,

    (select stu_id,count(*) c from

    (select stu_id,cos_id,grade,row_number() over(partition by stu_id order by grade ) X from enrollments)

    group by stu_id) B

    where A.stu_id = B.stu_id

    and A.x>1 and x<B.c

    group by A.stu_id,b.c

_________________________________________________

環境:oracle 10g/TOAD 以上代碼均通過測試,如有問題,請聯系,謝謝

5. sql 面試題

1. select s.title, count(p.id)
from 書表 s left join 評論 p on s.id=p.書表中的id
group by s.title

(注意:左外連接的作用是將評價數為0的書顯示出來.count(p.id)和count(*)的區別是count(p.id)不計入p.id為null的行)

2. select top 1 s.title, count(p.id)
from 書表 s left join 評論 p on s.id=p.書表中的id
group by s.title order by 2 desc

(以第2列倒序排序,取第1行)

6. 有關SQL的面試題。。。

1:
〔車輛〕、〔站台〕、〔行車路線〕最少3個表
〔車輛〕表欄位〔ID〕,〔名稱〕
〔站台〕表欄位〔ID〕,〔名稱〕,〔描述〕
〔行車路線〕表欄位〔ID〕,〔車ID〕,〔站ID〕
查詢:
SELECT 〔車輛〕.〔名稱〕,〔站台〕.〔名稱〕
FROM 〔車輛〕 INNER JOIN 〔行車路線〕
ON 〔車輛〕.〔ID〕=〔行車路線〕.〔車ID〕
INNER JOIN 〔站台〕
ON 〔站台〕.〔ID〕=〔行車路線〕.〔站ID〕
WHERE 〔站台〕.〔名稱〕 = '車站1'
OR 〔站台〕.〔名稱〕 = '車站2'

2:資料庫設計
〔部門〕表:ID,父級ID,名稱
〔員工〕表:ID,父級ID,名稱,許可權
〔員工所屬部門〕表:ID,員工ID,部門ID
〔申請〕表:ID,內容,申請人ID,審核人ID,審核結果,備注

系統設計:
1 員工進入申請頁面時,根據〔員工〕的許可權來判斷是否能進入
2 員工查詢〔申請〕表,通過申請人ID過濾,只有申請許可權
3 經理查詢〔申請〕表,通過〔員工〕表查申請人的父級ID過濾,可以進行審批操作

7. sql面試題精選

現創建一個名為「Customers」的新表,同時要求新表中不包含表」Clients」的任何記錄,應使用的SQL語句是( B )
(A)select into Customers from Clients
B)select * into Customers from Clients where 1=2
C)insert into Customers select * from Clients
D)insert Customers select * from Clients where 1=2

8. 一個sql面試題

select t1.name,t2.name from department t1,department t2 where t1.name<t2.name;

********
測試log:

[TEST@ORA1] SQL>select t1.name,t2.name from department t1,department t2 where t1.name<t2.name;

N N
- -
a b
a c
a d
b c
b d

---
以上,希望對你有所幫助。

9. 求sql常考面試題

排序順序會影響系統性能嗎?
問:一些資料介紹說,在SQL Server 6.5中,排序方式會對系統性能造成影響,但是我並沒有發現有針對SQL Server 2000或SQL Server 7.0的類似說法。我想知道二分法檢索對SQL Server 2000程序到底有何意義。SQL Server 2000所支持的各種排序方式之間在執行性能上存在哪些差異呢?
答:請記住:各類排序方式間的性能差異受制於SQL Server在數據排序和數據比較上所花費的CPU周期數量。排序速度快並不代表性能就一定會得到改善。事實上,選擇較為「快速」的排序方法(例如二分法)可能會導致應用程序在其它方面的性能降低。
例如,假設您有一個查詢,該查詢通過last_name欄位進行搜索。二分法排序的規則規定:Smith 並不等於smith。您的應用程序開發人員可以通過要求所有數菥笮蔥問交蛐⌒蔥問嚼詞迪終飧鮃滴衤嘸5牽導實慕餼靄旆ㄊ嵌運閹鞅碇械乃惺菔褂肬PPER() 或者 LOWER() 函數。但不幸的是, 如果類似UPPER()這樣的函數對一個經過索引的列進行了操作,SQL Server將不再能夠使用索引搜索數據。在這種情況下,通過使用二分法所獲得的所有性能提升都將被花費在全表掃描上的巨大性能降低所抵消。所以,您無需考慮不同排序方法間可能存在的微小性能差異,您也無需費神考慮何種排序方法最能滿足程序開發人員和最終用戶的需要。
— SQL Server MVPs
--------------------------------------------------------------------------
日誌文件的增長和DBCC DBREINDEX
問:我有一個30GB的資料庫,我使用完全恢復模式。無論什麼時候,只要我使用資料庫一致性檢查程序(DBCC)語句DBCC DBREINDEX對特定的大型數據表進行重新索引,我都要將恢復模式改為Bulk_Logged,在重新索引過程完成後再改回完全模式。我希望這樣做能夠避免事務日誌文件急劇增長,但是隨後的日誌文件備份工作量卻非常大--有大約15GB。從邏輯上說,資料庫中的數據在重新索引後同原先並沒有什麼不同,只是索引重新進行了組織,那麼為什麼日誌文件還是那樣大呢?我怎樣才能避免日誌文件出現這樣的急劇增長呢?
答:是的,在重新索引前後的數據是完全一樣的,但是索引卻全面進行了更新。當您執行DBCC DBREINDEX命令的時候,SQL Server的日誌僅僅記錄了擴展盤區的分配情況(8頁面單位),而不是記錄了每一行或者每一頁所發生的變化。這種類型的日誌記錄方式避免了物理文件由於系統故障而遭到破壞,並且將更詳細的日誌記錄對系統吞吐量產生的影響降低到最小。
當您備份日誌文件的時候,SQL Server必須對分配在擴展盤區中的頁面進行備份,以便保持資料庫備份和日誌備份的一致性。如果SQL Server不備份這些頁面,您將不能夠切換回完全恢復模式,除非你進行一次完整的資料庫備份。您必須能夠從最近一次的完全備份、任何差異備份以及任何更新的事務日誌備份中對資料庫進行恢復。
——————————————————————————————————————————
再者,看你面試什麼方面的啦!
要是DBA的話,層次更高一些!

10. sql面試題

這個肯定可以

SELECT t.Code, Student.Name, t.Subject, t.Score
FROM Student RIGHT JOIN
(SELECT Code, Subject, Score
FROM Exam t
WHERE NOT EXISTS (SELECT 1 FROM Exam WHERE Subject = t.Subject AND Score > t.Score)) t
ON t.Code = Student.Code