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

游戲公司面試常用sql

發布時間: 2023-05-23 12:40:48

Ⅰ 高頻sql面試問題

SQL(結構化查詢語言)是一種設計用於檢索和操作數據的資料庫。它是美國國家標准協會(ANSI)的標准。此語言用於執行選擇,更新,刪除和插入等數據任務。

表是在具有列和行的模型中設計的數據集合。在表中,指定了列數,稱為欄位,但未定義行數,稱為記錄。

資料庫是有序形式的一組信息,用於訪問存儲和檢索數據。

DBMS是一個控制數據維護和使用的程序。它被認為是管理數據的文件管理器。有四種類型的DBMS:

最有用的DBMS是Relational DBMS。它為數據提供了一個關系運算符。

SQL命令分為以下類型:

它包含來自一個或多個表的行和列,可以定義為虛擬表。它消耗的內存較少。

句法:

Join用於從相關的行和列中檢索數據。它在兩個或多個表之間工作,並且它從兩個表返回至少一個匹配。

連接類型是:

資料庫查詢是資料庫表中的數據請求。查詢可以是選擇查詢或任何其他類型的查詢。

子查詢是查詢的一部分。外部查詢已知主查詢,內部查詢識別子查詢。始終首先執行子查詢,並將結果傳遞給主查詢。

Autoincrement是一個關鍵字,用於在表中插入新記錄時生成數字。

它可用於設置表中數據類型的限制。在創建或更新表語句時,可以使用約束。一些限制是:

SQL中有不同類型的鍵:

規范化是一種設計技術,它以減少數據依賴性的方式排列表。它將表分成小模塊並按關系鏈接。

非規范化是一種優化方法,我們將多餘的數據增加到表中,並在規范化後應用。

存儲過程是一組SQL語句,用作訪問資料庫的函數。為了減少網路流量並提高性能,我們使用存儲過程。

句法:

索引用於加速查詢的性能。它可以更快地從表中檢索數據。可以在一組列上創建索引。

聚簇索引 - 它有助於輕松檢索數據,並且只有一個聚簇索引與一個表一起分配。它會更改記錄在資料庫中的保存方式。

非聚集索引 - 與聚簇索引相比,非聚簇索引很慢。並且在非集群索引的情況下,該表可以具有多個索引。它為表創建一個對象,該表是搜索後指向表的一個點。

觸發器 用來執行對表中的特定動作,諸如插入,更新或刪除 。它是一種 存儲過程 。動作和事件是觸發器的主要組成部分。執行Action時,事件響應該操作而出現。

通常,這些屬性稱為ACID。它們有助於資料庫事務。

A tomicity -在一個事務中連接兩個或更多個單獨的數據塊,或者所有的塊都致力於,或者一個都不。

C onsistency - 事務或者生成新的有效數據狀態,或者如果發生任何失望,則在事務啟動之前將所有數據返回到其狀態。

I solation - 正在進行且尚未提交的事務必須繼續與任何其他操作隔離。

D urability -在此操作中,系統保存提交的數據,每當事件發生故障和系統啟動後,所有的數據是可用的正確的位置。

SQL語句分為幾類:

它被定義為通過為查詢提供條件來設置結果集的限制。他們從整個記錄中過濾掉一些行。

一些SQL CLAUSES是WHERE和HAVING。

它是一個返回單個值的數學函數。

SQL中的聚合函數是:

為了操作字元串,我們使用String Function。其中一些是:

排序規則 是一 組規則,用於確定數據如何通過比較進行排序 。例如使用一組規則存儲的字元數據,這些規則定義了正確字元的序列以及類型,重音和區分大小寫。

在系統內存中執行SQL語句時,會創建一個臨時工作區,稱為Cursor。在select語句中,游標存儲了信息。游標可以使用多行,但一次只能處理一行。這組行稱為活動集。

游標有兩種類型:

SQL伺服器是Microsoft關系資料庫管理系統(RDBMS)的一種類型或示例。它在IT氛圍中提供廣泛的事務處理和商業智能。

運算符是一個保留字,主要用於SQL語句的WHERE子句中以進行操作。

空值是沒有值的欄位。它與Zero不同。假設有一個表,並且在表中有一個欄位,可以在不添加值的情況下將記錄插入欄位,然後該欄位將以NULL值保存。

空白是我們提供的價值。

零隻是一個數字。

數據倉庫被稱為來自多個信息源的中央數據中心。這些數據可用於在線處理和挖掘。

在表中,應該只有一個PRIMARY KEY,但在另一種情況下,UNIQUE KEY可以是任意數量的。

PRIMARY KEYS不允許NULL值,但UNIQUE KEY允許NULL值。

Ⅱ sql的幾個面試題

--1.查詢全部學生的姓名和所學的課程名稱及成績
select s.Sname,o.Cname,c.Grade from Student s,enrolls c,Courses o where s.Sno=c.Sno and c.Cno=o.Cno
--2.找出所有學生的平均成績和所學課程門數
select Sno,avg(grade) as '平均成績',count(*) as '所學課程門數' from enrolls group by Sno;
--3.找出各課程的平均成績,按課程號分組,且只選擇學生超過3人的課程的成績
select enrolls.Cno,cname,avg(grade) as '平均成績' from enrolls,Courses where enrolls.cno=Courses.cno group by enrolls.Cno,cname having count(*)>=3;
--4.找出選修了全部課程的學生的姓名
select Sname from student where sno in(select sno from enrolls group by Sno having count(sno)=(select count(cno) from Courses))

Ⅲ SQL語句面試題

SELECT*,
(SELECTCOUNT(*)FROM(SELECTCOUNT(*),b.sidFROMscbLEFTJOINcoursecONb.Cid=c.CidGROUPBYb.sid,c.tid)owWHEREow.sid=a.sid)as'
選課數量',
(SELECTsum(Score)FROMScdWHEREa.sid=d.sid)as'總成績'
FROMstudenta
;

SELECTd.sid,d.snamefromteachera
LEFTJOINcoursebona.tid=b.tid
LEFTJOINscconc.cid=b.cid
leftJOINstudentdONd.sid=c.sid
WHEREa.tname='葉萍';

SELECTsid,sname
FROMstudent
WHEREsidin(selecta.sid
FROMscAleftjoinscbona.sid=b.sid
WHEREa.cid=1andb.cid=2anda.score>b.score)

SELECTsc.Sid,sum(CASEWHENc.Cname='
數學'thensc.Scoreelse0end)數學,SUM(casewhenc.Cname='物理
'THENsc.ScoreELSE0END)物理,AVG(sc.Score)平均分
FROMsc
INNERJOINCourseconsc.Cid=c.Cid
WHEREc.Cnamein('數學','物理')
GROUPBYsc.Sid
ORDERBYAVG(sc.Score)DESC

insertintoSc(Sid,Cid,Score)values(003,3,85);

insertintoSc(Sid,Cid,Score)values(003,3,30);

首先這個不知道是你i寫錯了還是怎麼一個人化學成績有2個所以我在這里按照你這個上做的查詢所以有一個人是選了單個課程

Ⅳ 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面試題 不會做 都進來看看吧

才兩張表,隨便寫寫就出來了 你是沒見過該死的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
)

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

Ⅵ 游戲公司面試技巧 掌握這些游戲公司常見的面試問題

1、你為什麼想要到這里工作.

這句話的言外之意,就是問你為什麼放棄之前的工作。這道題目是開放性的,可以從很多的方面去回答,但是主要還是要圍繞你對公司了解的程度這個點。更多的時候,不要回答想換個城市或者需要一個工作這樣的答案,要列舉和公司有關的回答,對待前一份職業不要太消極,要用沒有發展空間之類的詞去描述。

2、你在玩什扒散么游戲.

既然是游戲公司,那麼應聘的人員肯定是要接觸游戲的。你回答的內容最好是和這家公司做的游戲風春搜氏格相近的游戲,並且最好能聊一下自己對這個游戲的一些看法,和自己玩過之後的感受,總之,你要能讓人感受到你對游戲的熱情。因為你進入的是游戲公司,你對游戲的知識是很重要的,也可以適當的表現一下自己對老游戲的一些知識。

3、你認為你玩的游戲怎麼樣能更出色.

即便不是面試的策劃職位,但這道題目還是會出現在各個崗位的面試中。你可以從游戲的優勢之處開漏漏始講起,然後在引入它不足的地方,就可以很好的解釋,如何去改善能讓游戲變的更加出色。要記住要表現的是在游戲開發者的角度去考慮這些問題的,對於公司來說,游戲就是它的產品,產品的好與壞,自然需要研發的人員有清晰的了解!

Ⅶ sql語句的面試題求解答啊,一共三個表,懸賞100啊

1,select e_name from employee where e_hiredate>to_date('2001-01-01'緩余,'檔哪氏行散YYYY-MM-dd') and
e_hiredate<to_date('2003-01-01','YYYY-MM-dd') and dept_id in(select dept_id from depar where comp_id in (select comp_id from comp where comp_name=''));
2,update employee set e_level=e_level+1,e_hiredate=sysdate where dept_id in(select dept_id from deptar where dept_name='監察部')

Ⅷ 我是做游戲測試的,面試大公司時,人家需要我懂SQL,跪求SQL的入門資料啊。現在我做的都是功能測試

首先你是知道是中悶學MySQL還是SQLServer
學這東西的目的是什麼
其中的哪些功能是我需要在工作中用到的
到gameres,游戲魂多看看帖子
上網看視頻賣鍵彎
大家亮尺都是這么過來的

Ⅸ 面試常問的資料庫問題及答案

目前在職場中很難找到非常合格的資料庫開發人員。有人說:「SQL開發是一門語言,它很容易學,但是很難掌握。」
在面試應聘的SQL Server資料庫開發人員時,我運用了一套標準的基準技術問題。下面這些問題是我覺得能夠真正有助於淘汰不合格應聘者的問題。它們按照從易到難的順序排列。當你問到關於主鍵和外鍵的問題時,後面的問題都十分有難度,因為答案可能會更難解釋和說明,尤其是在面試的情形下。
你能向我簡要敘述一下SQL Server 2000中使用的一些資料庫對象嗎?
你希望聽到的答案包括這樣一些對象:表格、視圖、用戶定義的函數,以及存儲過程;如果他們還能夠提到像觸發器這樣的對象就更好了。如果應聘者不能回答這個基本的問題,那麼這不是一個好兆頭。
NULL是什麼意思?
NULL(空)這個值是資料庫世界裡一個非常難纏的東西,所以有不少應聘者會在這個問題上跌跟頭您也不要覺得意外。
NULL這個值表示UNKNOWN(未知):它不表示「」(空字元串)。假設您的SQL Server資料庫里有ANSI_NULLS,當然在默認情況下會有,對NULL這個值的任何比較都會生產一個NULL值。您不能把任何值與一個 UNKNOWN值進行比較,並在邏輯上希望獲得一個答案。您必須使用IS NULL操作符。

什麼是索引?SQL Server 2000里有什麼類型的索引?
任何有經驗的資料庫開發人員都應該能夠很輕易地回答這個問題。一些經驗不太多的開發人員能夠回答這個問題,但是有些地方會說不清楚。
簡單地說,索引是一個數據結構,用來快速訪問資料庫表格或者視圖里的數據。在SQL Server里,它們有兩種形式:聚集索引和非聚集索引。聚集索引在索引的葉級保存數據。這意味著不論聚集索引里有表格的哪個(或哪些)欄位,這些欄位都會按順序被保存在表格。由於存在這種排序,所以每個表格只會有一個聚集索引。非聚集索引在索引的葉級有一個行標識符。這個行標識符是一個指向磁碟上數據的指針。它允許每個表格有多個非聚集索引。
什麼是主鍵?什麼是外鍵?
主鍵是表格里的(一個或多個)欄位,只用來定義表格里的行;主鍵里的值總是唯一的。外鍵是一個用來建立兩個表格之間關系的約束。這種關系一般都涉及一個表格里的主鍵欄位與另外一個表格(盡管可能是同一個表格)里的一系列相連的欄位。那麼這些相連的欄位就是外鍵。
什麼是觸發器?SQL Server 2000有什麼不同類型的觸發器?
讓未來的資料庫開發人員知道可用的觸發器類型以及如何實現它們是非常有益的

觸發器是一種專用類型的存儲過程,它被捆綁到SQL Server 2000的表格或者視圖上。在SQL Server 2000里,有INSTEAD-OF和AFTER兩種觸發器。INSTEAD-OF觸發器是替代數據操控語言(Data Manipulation Language,DML)語句對表格執行語句的存儲過程。例如,如果我有一個用於TableA的INSTEAD-OF-UPDATE觸發器,同時對這個表格執行一個更新語句,那麼INSTEAD-OF-UPDATE觸發器里的代碼會執行,而不是我執行的更新語句則不會執行操作。
AFTER觸發器要在DML語句在資料庫里使用之後才執行。這些類型的觸發器對於監視發生在資料庫表格里的數據變化十分好用。
您如何確一個帶有名為Fld1欄位的TableB表格里只具有Fld1欄位里的那些值,而這些值同時在名為TableA的表格的Fld1欄位里?
這個與關系相關的問題有兩個可能的答案。第一個答案(而且是您希望聽到的答案)是使用外鍵限制。外鍵限制用來維護引用的完整性。它被用來確保表格里的欄位只保存有已經在不同的(或者相同的)表格里的另一個欄位里定義了的值。這個欄位就是候選鍵(通常是另外一個表格的主鍵)。
另外一種答案是觸發器。觸發器可以被用來保證以另外一種方式實現與限制相同的作用,但是它非常難設置與維護,而且性能一般都很糟糕。由於這個原因,微軟建議開發人員使用外鍵限制而不是觸發器來維護引用的完整性。
對一個投入使用的在線事務處理表格有過多索引需要有什麼樣的性能考慮?
你正在尋找進行與數據操控有關的應聘人員。對一個表格的索引越多,資料庫引擎用來更新、插入或者刪除數據所需要的時間就越多,因為在數據操控發生的時候索引也必須要維護。
你可以用什麼來確保表格里的欄位只接受特定范圍里的值?
這個問題可以用多種方式來回答,但是只有一個答案是「好」答案。您希望聽到的回答是Check限制,它在資料庫表格里被定義,用來限制輸入該列的值。
觸發器也可以被用來限制資料庫表格里的欄位能夠接受的值,但是這種辦法要求觸發器在表格里被定義,這可能會在某些情況下影響到性能。因此,微軟建議使用Check限制而不是其他的方式來限制域的完整性。
<b?返回參數和output參數之間的區別是什麼?>如果應聘者能夠正確地回答這個問題,那麼他的機會就非常大了,因為這表明他們具有使用存儲過程的經驗。
返回參數總是由存儲過程返回,它用來表示存儲過程是成功還是失敗。返回參數總是INT數據類型。
OUTPUT參數明確要求由開發人員來指定,它可以返回其他類型的數據,例如字元型和數值型的值。(可以用作輸出參數的數據類型是有一些限制的。)您可以在一個存儲過程里使用多個OUTPUT參數,而您只能夠使用一個返回參數。
什麼是相關子查詢?如何使用這些查詢?
經驗更加豐富的開發人員將能夠准確地描述這種類型的查詢。
相關子查詢是一種包含子查詢的特殊類型的查詢。查詢里包含的子查詢會真正請求外部查詢的值,從而形成一個類似於循環的狀況。</b?返回參數和output參數之間的區別是什麼?>

Ⅹ 面試題目(sql)

1、忍不住想說一句,因為第一題中的欄位類型是
【日期型】,而各種資料庫操作日期型數據有不同的方法,沒有一種共通的方法,所以脫離了資料庫而言沒有一種共通的sql。
2、select
ID,NAME,ADDRESS,PHONE,LOGDATE
from
T
where
ID
in(
select
ID
from
T
group
by
NAME
having
count(*)>1)
order
by
NAME;
3、delete
from
T
where
ID
not
in
(select
min(id)
from
T
group
by
name);
4、update
T
set
T.ADDRESS=(select
E.ADDRESS
from
E
where
E.NAME=T.NAME),
T.PHONE=(select
E.PHONE
from
E
where
E.NAME=T.NAME);
5、這個不同的資料庫也有不同的處理方法,不能脫離資料庫談了。
如:SqlServer或者access可以使用
top
oracle可以使用
rownum

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