當前位置:首頁 » 編程語言 » 筆試sql語句

筆試sql語句

發布時間: 2022-08-06 23:31:19

Ⅰ 誰有sql 筆試題,要多的不要選擇填空。

javaeye裡面轉的,十幾個問題覆蓋多個方面,含答案

目前在職場中很難找到非常合格的資料庫開發人員。我的一個同事曾經說過:「SQL開發是一門語言,它很容易學,但是很難掌握。」

在面試應聘的SQL Server資料庫開發人員時,我運用了一套標準的基準技術問題。下面這些問題是我覺得能夠真正有助於淘汰不合格應聘者的問題。它們按照從易到難的順序排列。當您問到關於主鍵和外鍵的問題時,後面的問題都十分有難度,因為答案可能會更難解釋和說明,尤其是在面試的情形下。

您能向我簡要敘述一下SQL Server 2000中使用的一些資料庫對象嗎?

您希望聽到的答案包括這樣一些對象:表格、視圖、用戶定義的函數,以及存儲過程;如果他們還能夠提到像觸發器這樣的對象就更好了。如果應聘者不能回答這個基本的問題,那麼這不是一個好兆頭。

什麼是索引?SQL Server 2000里有什麼類型的索引?

任何有經驗的資料庫開發人員都應該能夠很輕易地回答這個問題。一些經驗不太多的開發人員能夠回答這個問題,但是有些地方會說不清楚。

簡單地說,索引是一個數據結構,用來快速訪問資料庫表格或者視圖里的數據。在SQL Server里,它們有兩種形式:聚集索引和非聚集索引。聚集索引在索引的葉級保存數據。這意味著不論聚集索引里有表格的哪個(或哪些)欄位,這些欄位都會按順序被保存在表格。由於存在這種排序,所以每個表格只會有一個聚集索引。非聚集索引在索引的葉級有一個行標識符。這個行標識符是一個指向磁碟上數據的指針。它允許每個表格有多個非聚集索引。

NULL是什麼意思?

NULL(空)這個值是資料庫世界裡一個非常難纏的東西,所以有不少應聘者會在這個問題上跌跟頭您也不要覺得意外。

NULL這個值表示UNKNOWN(未知):它不表示「」(空字元串)。假設您的SQL Server資料庫里有ANSI_NULLS,當然在默認情況下會有,對NULL這個值的任何比較都會生產一個NULL值。您不能把任何值與一個 UNKNOWN值進行比較,並在邏輯上希望獲得一個答案。您必須使用IS NULL操作符。

什麼是主鍵?什麼是外鍵?

主鍵是表格里的(一個或多個)欄位,只用來定義表格里的行;主鍵里的值總是唯一的。外鍵是一個用來建立兩個表格之間關系的約束。這種關系一般都涉及一個表格里的主鍵欄位與另外一個表格(盡管可能是同一個表格)里的一系列相連的欄位。那麼這些相連的欄位就是外鍵。

什麼是觸發器?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限制而不是其他的方式來限制域的完整性。

返回參數和OUTPUT參數之間的區別是什麼?

如果應聘者能夠正確地回答這個問題,那麼他的機會就非常大了,因為這表明他們具有使用存儲過程的經驗。

返回參數總是由存儲過程返回,它用來表示存儲過程是成功還是失敗。返回參數總是INT數據類型。

OUTPUT參數明確要求由開發人員來指定,它可以返回其他類型的數據,例如字元型和數值型的值。(可以用作輸出參數的數據類型是有一些限制的。)您可以在一個存儲過程里使用多個OUTPUT參數,而您只能夠使用一個返回參數。

什麼是相關子查詢?如何使用這些查詢?

經驗更加豐富的開發人員將能夠准確地描述這種類型的查詢。

相關子查詢是一種包含子查詢的特殊類型的查詢。查詢里包含的子查詢會真正請求外部查詢的值,從而形成一個類似於循環的狀況。

關於面試過程的思考

這些問題只不過是確定一個SQL Server資料庫開發人員是否合格的起點。根據應聘者對上面這些問題的回答情況,我可能會要求他們參加我的TSQL編程考試,這一般是一套根據不同情況進行的10到12個資料庫查詢。

您需要自己決定將要僱用的開發人員具有什麼樣的專業技能。然後,需要通過自己的經驗、判斷以及在面試時對應聘者的感受(來做最終決定)。

您在面試資料庫開發人員時一般會問哪些問題呢?讓我們一起來討論一下吧。

Tim Chapman是肯塔基州路易維爾市一家銀行的SQL Server資料庫管理員,他有超過7年的行業經驗。他還通過了微軟SQL Server 2000和SQL Server 2005的認證。

Ⅱ 資料庫SQL語句考試

insert into A values('010102','張靜',『』,『』,『機電』)

update C set GRADE='59' where GRADE>=60

delete from A where SN like '李%'

select S#,SEX,AGE from A where SN='劉華'

select A.S#,CN from A,B,C where A.S#=C.S# and C.C#=B.C# and A.DEPT not in ('計算機系','法律系')

select C.S#,sum(GRADE) from C where C.S# in (select C.S# from B,C where B.CN='大學語文' and B.C#=C.C#) order by sum(GRADE) desc

update A set SEX='',AGE=''

drop table A
drop table B
drop table C

Ⅲ 急!考試要考SQL語句!!不難!會寫的幫忙寫一下!加分!!!!!

1、select 成績 from 表 where 成績>60 order by 成績 asc;
2、
SqlServer:
select top 10 成績 from 表 where 成績>60 order by 成績 desc;
oracle:
select * from (select 成績,row_number()over(order by 成績 desc) id from 表 where 成績>60) where id <=10;
3、insert into table(欄位1,欄位2,欄位3,欄位4) values(5,'rrr','1984-6-7',89);
4、delete from 表名 where 編號=3;
5、update 表名 set 成績=90 where 編號=90;

說明:因為你沒說明表結構,只能寫成這樣的了。
---
以上,希望對你有所幫助。

Ⅳ SQL語句分組查詢筆試題

select match_date,
sum(case when match_result ='win' then 1 else 0 end) as amount_win,
sum(case when match_result='lose' then 1 else 0 end) as amount_lose

from t_match
group by match_date

Ⅳ 關於SQL一些常用語句

(1) 數據記錄篩選:

sql="select * from 數據表 where 欄位名=欄位值 order by 欄位名 "
sql="select * from 數據表 where 欄位名 like 『%欄位值%『 order by 欄位名 "
sql="select top 10 * from 數據表 where 欄位名 order by 欄位名 "
sql="select * from 數據表 where 欄位名 in (『值1『,『值2『,『值3『)"
sql="select * from 數據表 where 欄位名 between 值1 and 值2"

(2) 更新數據記錄:

sql="update 數據表 set 欄位名=欄位值 where 條件表達式"
sql="update 數據表 set 欄位1=值1,欄位2=值2 …… 欄位n=值n where 條件表達式"

(3) 刪除數據記錄:

sql="delete from 數據表 where 條件表達式"
sql="delete from 數據表" (將數據表所有記錄刪除)

(4) 添加數據記錄:

sql="insert into 數據表 (欄位1,欄位2,欄位3 …) valuess (值1,值2,值3 …)"
sql="insert into 目標數據表 select * from 源數據表" (把源數據表的記錄添加到目標數據表)

(5) 數據記錄統計函數:

AVG(欄位名) 得出一個表格欄平均值
COUNT(*|欄位名) 對數據行數的統計或對某一欄有值的數據行數統計
MAX(欄位名) 取得一個表格欄最大的值
MIN(欄位名) 取得一個表格欄最小的值
SUM(欄位名) 把數據欄的值相加

引用以上函數的方法:

sql="select sum(欄位名) as 別名 from 數據表 where 條件表達式"
set rs=conn.excute(sql)

用 rs("別名") 獲取統的計值,其它函數運用同上。

(5) 數據表的建立和刪除:

CREATE TABLE 數據表名稱(欄位1 類型1(長度),欄位2 類型2(長度) …… )

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 數據表名稱 (永久性刪除一個數據表)

(6) 記錄集對象的方法:
rs.movenext 將記錄指針從當前的位置向下移一行
rs.moveprevious 將記錄指針從當前的位置向上移一行
rs.movefirst 將記錄指針移到數據表第一行
rs.movelast 將記錄指針移到數據表最後一行
rs.absoluteposition=N 將記錄指針移到數據表第N行
rs.absolutepage=N 將記錄指針移到第N頁的第一行
rs.pagesize=N 設置每頁為N條記錄
rs.pagecount 根據 pagesize 的設置返回總頁數
rs.recordcount 返回記錄總數
rs.bof 返回記錄指針是否超出數據表首端,true表示是,false為否
rs.eof 返回記錄指針是否超出數據表末端,true表示是,false為否
rs.delete 刪除當前記錄,但記錄指針不會向下移動
rs.addnew 添加記錄到數據表末端
rs.update 更新數據表記錄

判斷所填數據是數字型

if not isNumeric(request("欄位名稱")) then
response.write "不是數字"
else
response.write "數字"
end if

Ⅵ 求資料庫SQl筆試答案

在oracle資料庫中

--建表
create table student(
sno varchar2(10),
sname varchar2(10),
ssex char(4),
sage number(3),
sdept varchar2(20)
);

--先隨便插入兩條數據
insert into student values('01','stone','男','23','math');
insert into student values('02','hippocampus','女','20','math');

--為學生-課程資料庫中的Student表建立索引,按學號升序建索引。
create index studentIndex on student(sno asc);

--查詢所有女同學信息
select * from student where ssex='女';

--顯示年齡在20歲以下的學生姓名及性別
select sname,ssex from student where sage<20;

--將一個新學生記錄(學號:95020;姓名:陳冬;性別:男;所在系:IS;年齡:18歲)插入到Student表中
insert into student values('95020','陳冬','男',18,'IS');

--查詢全體學生的姓名及其年齡
select sname,sage from student;

Ⅶ 高分求sql語句

1、select id from [Dept] group by id having count(*)>1
2、
select distinct * into #Tmp from [Dept]
drop table [Dept]
select * into [Dept] from #Tmp
drop table #Tmp
或者(一條語句),沒測試注意備份:
delete from [Dept] where id not in(select min(id) from [Dept] group by id having count(*)>=2) and id not in(select min(id) from [Dept] group by id having count(*)<2)

一時大意,把
select distinct * into #Tmp from [Dept]
改成select distinct id into #Tmp from [Dept] 不就行了,關鍵是方法和思路

Ⅷ 求救一條筆試SQL查詢語句

DECLARE @Course varchar(20), --課程
@ETime datetime(20), --考試日期
@PResult decimal(5,2) --及格分數線
SET @Course = '英語'
SET @ETime = '2008-08-08'
SET @PResult = 60

SELECT C.Cid AS 班級編號,COUNT(S.Sid) AS 總人數,
COUNT(R.Sid) AS 實考人數,MAX(R.Results) AS 最高分,
MIN(R.Results) AS 最低分,
SUM(CASE WHEN R.Results<@PResult THEN 1 ELSE 0 END) AS 不及格人數,
SUM(CASE WHEN R.Results>[email protected] THEN 1 ELSE 0 END)/COUNT(R.SId) AS 及格率
FROM T_Class C INNER JOIN T_Student S ON C.CIid = S.Cid
INNER JOIN T_Results R ON S.Sid = R.Sid
WHERE R.Course = @Course
AND R.ETime = @ETime
GROUP BY C.Cid

Ⅸ sql簡單查詢語句

1、首先打開資料庫,建立好表。

Ⅹ sql 語句

方法一:

-- 建立學生成績的臨時表 SC001 SC002 兩列分別為學生的 001 002 兩門成績
SELECT S#,NULL AS SC001, NULL AS SC002 INTO #SC_TMP
FROM STUDENT

UPDATE A
SET A.SC001=B.SCORE
FROM #SC_TMP A, SC B
WHERE A.S#=SC.S# AND B.C#='001'

UPDATE A
SET A.SC002=B.SCORE
FROM #SC_TMP A, SC B
WHERE A.S#=SC.S# AND B.C#='002'

-- 查詢 002 成績大於 001 的學生

SELECT ST.S#, ST.NAME
FROM #SC_TMP TMP
INNER JOIN STUDENT ST ON TMP.S#=ST.S#
WHERE ISNULL(TMP.SC001, 0) > ISNULL(TMP.SC002, 0)

方法二:

在 SC 表分別作 001 和 002 的同一學生的關聯,自然就得出 001 》 002 的學生了
SELECT C.S#, C.NAME
FROM SC A
INNER JOIN SC B ON A.S#=B.S# AND A.SCORE > B.SCORE
INNER JOIN STUDENT C ON A.S#=C.S#
WHERE A.C#=『001』 AND B.C#='002'

適用於 MS SQL,MYSQL ORACLE 修改下 ISNULL 之類的函數就行了,思路一樣的

熱點內容
真空壓縮豬耳 發布:2022-08-15 19:56:24 瀏覽:233
蘋果手機id密碼忘了開機要多少錢 發布:2022-08-15 19:56:09 瀏覽:399
android電池圖標 發布:2022-08-15 19:55:03 瀏覽:31
精通gdi編程 發布:2022-08-15 19:52:08 瀏覽:833
三坐標機編程 發布:2022-08-15 19:52:07 瀏覽:280
gdb自動執行腳本 發布:2022-08-15 19:50:52 瀏覽:817
微信怎麼加密聊天記錄 發布:2022-08-15 19:49:08 瀏覽:317
我的世界伺服器指令所有玩家集合 發布:2022-08-15 19:49:00 瀏覽:9
怎麼改qq相冊密碼 發布:2022-08-15 19:48:01 瀏覽:828
我要看臭腳腳本的圖片 發布:2022-08-15 19:46:33 瀏覽:58