這裡蒐索程式師資訊,查找有用的技術資料
當前位置:首頁 » 編程語言 » sql面試題視頻
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql面試題視頻

發布時間: 2022-04-19 22:46:27

sql面試題,哪位兄台幫我檢查一下(估計寫的都不對)

1)
SELECT S#, SN
FROM S
WHERE S# IN (SELECT SC.S# FROM SC, C WHERE SC.C# = C.C# AND C.CN = '稅收')

2) 第二個正確,但是效率太低
SELECT S.SN, S.SD
FROM S, C, SC
WHERE S.S# = SC.S# AND SC.C# = C.C# AND C.C# = 'C2'

3)SELECT S#, SD
FROM S WHERE S# IN (SELECT S# FROM SC GROUP BY S# HAVING COUN(C#) > 5)

⑵ 求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的話,層次更高一些!

⑶ sql面試題 不會做 都進來看看吧

才兩張表,隨便寫寫就出來了 你是沒見過該死的bom 那才傷腦筋

--先建立測試用例:
create table users(Id Int,Name varchar(20),regDate date);
alter table users add constraint users_pk primary key(Id);
create table UploadInfo(Id Int,UserId Int,FileName varchar(20),foreign key(UserId) references users(Id));
insert into users values(1,'A',sysdate-1);
insert into users values(2,'B',sysdate-2);
insert into users values(3,'C',sysdate-3);
insert into users values(4,'D',sysdate-4);
insert into users values(5,'E',sysdate-5);
select*from users;

--隨機插入上傳數據的存儲過程
create or replace procere InsertUploadInfoData is
i int:=0;
begin
for i in 1..100 loop
insert into UploadInfo values(i,trunc(DBMS_RANDOM.value(1,5)),'FileName '||trunc(DBMS_RANDOM.value(1,1000)));
end loop;
commit;
end ;

begin
InsertUploadInfoData;
end;

select*from UploadInfo;

--開始了

--第一題
select UserUploadRecord.Id,UserUploadRecord.UploadCount
from
(
select users.Id,count(UploadInfo.Id) as UploadCount from users
inner join UploadInfo on users.Id=UploadInfo.UserId --內聯結
where users.regDate>=sysdate-3 and users.regDate<=sysdate --三天內
group by users.Id
order by UploadCount desc
) UserUploadRecord
where rownum=1 --取第一條記錄
;

--創建用戶名重復的測試用例
insert into users values(6,'A',sysdate-4);

--由於有外鍵約束,所以需先刪除子表記錄
delete from UploadInfo where UploadInfo.Userid
in
(
select users.id from users where (users.name,users.regdate) in
(
select users.name,max(users.regdate) from users group by users.name having count(users.id)>1 --取重復用戶名的最大注冊時間
)
)

--再刪除父表,做法差不多
delete from users where (users.name,users.regdate) in
(
select users.name,max(users.regdate) from users group by users.name having count(users.id)>1
)

————————————————————
建表語法 測試用例都寫給你了 還說運行不了?直接復制進去就行了

⑷ SQL資料庫面試題 急急急

a)select pname as '商品名',avg(qty) as 平均銷售量 from s,p,m where m.city='上海' and s.mno=m.mno and p.pno=s.pno,select p.Pno,p.pname,sum(s.qty)
from s left join p on s.pno=p.pno left join m on p.Mno=m.Mno
where m.city='上海市'
group by p.Pno,p.pname,p.city,p.color
b)、先刪除Sale表的外鍵PNO,再刪除gds表。

c)聯系:視圖(view)是在基本表之上建立的表,它的結構(即所定義的列)和內容(即所有數據行)都來自基本表,它依據基本表存在而存在。一個視圖可以對應一個基本表,也可以對應多個基本表。視圖是基本表的抽象和在邏輯意義上建立的新關系
區別:1、視圖是已經編譯好的sql語句。而表不是
2、視圖沒有實際的物理記錄。而表有。
3、表是內容,視圖是窗口
4、表只用物理空間而視圖不佔用物理空間,視圖只是邏輯概念的存在,表可以及時四對它進行修改,但視圖只能有創建的語句來修改
5、表是內模式,視圖是外模式
6、視圖是查看數據表的一種方法,可以查詢數據表中某些欄位構成的數據,只是一些SQL語句的集合。從安全的角度說,視圖可以不給用戶接觸數據表,從而不知道表結構。
7、表屬於全局模式中的表,是實表;視圖屬於局部模式的表,是虛表。
8、視圖的建立和刪除隻影響視圖本身,不影響對應的基本表。

⑸ 經典的SQL面試題目,百度有答案,誰有更簡潔的

select a.id,a.proid as pro1,b.proid as pro2 from (select * from tablename where proid =1) a,(select * from tablename where proid =2) b where a.id=b.id

⑹ sql面試題,請大神解答,急!!!

第一題,最高的10-20。
1234select*from(selectcolD,colE,dense_rank()over(orderbycolGdesc)asrkfromtableb)whererkbetween10and20--當然面試的話這里可以註明dense_rank和rank區別等等。

第二題,2樓寫的就可以了

第三題,注意題目是人數之和
12345selectcount(*)ascntfromtableBwherecolAin(=傳入idconnectbypriorcolA=colB)

第四題
--測試數據
withtableAas(select1ascolA,0ascolB,'北京',0ascolB,'上海'fromal),tableBas(select1ascolD,'人員1'ascolE,1ascolA,2000ascolG,0ascolHfromalunionallselect2,'人員2',1,2000,0fromalunionallselect3,'人員3',1,2000,0fromalunionallselect4,'人員4',1,2000,0fromalunionallselect5,'人員5',1,2000,1fromalunionallselect6,'人員6',2,2000,1fromalunionallselect7,'人員7',1,2000,1fromal)--查詢sqlselectdecode(t.colH,0,'女','男')asgender,max(decode(t.colC,'北京',t.cnt,0))as北京,max(decode(t.colC,'上海',t.cnt,0))as上海from(selecta.colC,b.colH,count(*).colA=b.colAgroupbycolC,colH)tgroupbyt.colH
這里可以解釋下本sql的思路:--首先查出每個地區不同性別的人數,在行轉列(由於題目很明顯告訴你固定數據)

⑺ sql面試題,幫忙解答一下

select 日期,isnull(count(case when 成績='勝' then 1 end),0)勝
,isnull(sum(case when 成績='負' then 1 end),0)負 from score group by 日期 order by 日期

⑻ sql面試題

1、首先,將三個表建立一個視圖,可以直接在企業管理器裡面建,也可以將下面的代碼直接復制到查詢分析器裡面執行:
SELECT dbo.students.studentname, dbo.class.classname, dbo.score.course,
dbo.score.score
FROM dbo.class INNER JOIN
dbo.students ON dbo.class.classid = dbo.students.classid INNER JOIN
dbo.score ON dbo.students.studentid = dbo.score.studentid

2、然後,求 各科 班分數 最高的同學的名字,班級名稱,課程名稱,分數 ,代碼如下:

select classname as 班級,course as 學科,max(score) as 最高分,(select top 1 studentname from scoreview where classname=x.classname and course=x.course order by score desc) as 最好成績的學生 from scoreview x group by classname,course
------------
已經經過測試,你自己可以試試

⑼ 一個SQL面試問題,請大家幫幫看如何做:

select max(PARMENT )
from (select sum(PARMENT)
from worker
where to_date(PARDAY,'yyyy/mm')=to_date('2003/04','yyyy/mm')
group by DEPARTMENT)

⑽ 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 以上代碼均通過測試,如有問題,請聯系,謝謝