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

sql查詢常考

發布時間: 2022-05-19 22:57:27

sql的查詢 考試題目求教 題目已寫答案求判斷!

你還有馬甲。。。

第一個不對,更新的是學生的成績,而不是c001得成績
1.對選修了課程號為c001的學生成績提高10%
此題本人做的答案請檢查:updata 選課表 set 成績=成績*1.1 where 課程號='c001'

UPDATE 選課表 SET set 成績=成績*1.1 WHERE 學生號 IN (SELECT 學生號 FROM 選課表 WHERE 課程號='c001')

2.查詢沒有學生選修的課程名。
此題本人做的答案請檢查:select 課程名 from 課程 where 課程名 not exists(select * from 選課表 where 選課表.課程號=課程表.課程號)
SELECT 課程名 from 課程 WHERE 課程號 NOT IN (SELECT DISTINCT 課程號 FROM 選課表)

3. correct
4.查詢每個學生選修的門數及平均成績。
此題本人做的答案請檢查:select AVG(成績),姓名 from 學生,選課 where 學生.學生號=選課.學生號 group by 姓名
SELECT COUNT(c.課程號), AVG(c.成績)
FROM 學生 stu LEFT JOIN 選課 c ON stu.學生號 = c.學生號
GROUP BY stu.學生號

5.查詢2003年以前借書的讀者借書證號,姓名和單位。
此題本人做的答案請檢查:select 借書證號,姓名,單位 from 讀者 where 借書日期<=2003 and 讀者.借書證號=借書.借書證號
SELECT 借書證號,姓名,單位 FROM 讀者 WHERE IN (SELECT 借書證號 FROM 借書 WHERE 借書日期<=2003)

6.查詢電子系沒有借書的讀者姓名
此題本人做的答案請檢查: select 姓名,職稱 from 讀者 where 職稱='電子系' and 借書證號 NOT exists(select 借書證號 from 借書 where 讀者.借書證號=借書.借書證號)
此題我一直有一個疑惑 我目前查詢電子系沒有借書的讀者姓名 沒有借書 也就是借書證號為空或NULL 那麼讀者也有一個借書證號 借書也有一個借書證號 2個是相對應的,
但是我沒用到借書表 只有了讀者表的借書證號 需要在where語句後寫入:借書證號=借書.借書證號 這個條件嗎?
SELECT 姓名
FROM 讀者 t
WHERE 單位 = '電子系' AND NOT EXISTS(SELECT 1 FROM 借書 WHERE 借書證號 = t.借書證號)

7.查詢出至少有兩名學生所選修的全部課程。
此題我做的不怎麼好:select 姓名 from 學生 where 課程名 in (select 課程名,count(*) as 課程數 group by 姓名 having count(*)>=2
SELECT * FROM 課程 WHERE 課程號 IN (SELECT 課程號 FROM 選課 GROUP BY 課程號 HAVING COUNT(*) >=2)

8
@a, @b, @c是參數, 譬如@a = '123', @b = 'c001', @c = 90
然後begin後面是執行一個update操作,將參數對應起來就可以了。
真個存儲過程對例子要做的就是
UPDATE 選課
set 成績=90
where 學號= 123 and 課程號='c001'

明白了么

⑵ sql簡單查詢語句

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

⑶ SQL資料庫常用命令及語法舉例

下面是一些常用的SQL語句,雖然很基礎,可是卻很值得收藏,對於初學者非常實用

⑷ SQL查詢語句,怎樣查詢重復數據

1、第一步,打開資料庫,並創建一個包含重復數據的新用戶表,見下圖,轉到下面的步驟。

⑸ 求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 資料庫常用命令及語法舉例

SQL2000常用命令,語法使用方法
(1) 數據記錄篩選:

sql="select * from 數據表 where 欄位名=欄位值 order by 欄位名 [desc]"

sql="select * from 數據表 where 欄位名 like '%欄位值%' order by 欄位名 [desc]"

sql="select top 10 * from 數據表 where 欄位名 order by 欄位名 [desc]"

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 …) values (值1,值2,值3 …)"

sql="insert into 目標數據表 select * from 源數據表" (把源數據表的記錄添加到目標數據表)

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

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

引用以上函數的方法:

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

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

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

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

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

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

4. 記錄集對象的方法:

rs.movenext 將記錄指針從當前的位置向下移一行
rs.moveprevious 將記錄指針從當前的位置向上移一行
rs.movefirst 將記錄指針移到數據表第一行
rs.movelast 將記錄指針移到數據表最後一行
rs.absoluteposition=N 將記錄指針移到數據表第N行
rs.absolutepage=N 將記錄指針移到第N頁的第一行
rs.pagesize=N 設置每頁為N條記錄

2、更改表格
ALTER TABLE table_name
ADD COLUMN column_name DATATYPE
說明:增加一個欄位(沒有刪除某個欄位的語法。
ALTER TABLE table_name
ADD PRIMARY KEY (column_name)
說明:更改表得的定義把某個欄位設為主鍵。
ALTER TABLE table_name
DROP PRIMARY KEY (column_name)
說明:把主鍵的定義刪除。

3、建立索引
CREATE INDEX index_name ON table_name (column_name)
說明:對某個表格的欄位建立索引以增加查詢時的速度。

4、刪除
DROP table_name
DROP index_name

二、的資料形態 DATATYPEs
smallint
16 位元的整數。
interger
32 位元的整數。
decimal(p,s)
p 精確值和 s 大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數
點後有幾位數。如果沒有特別指定,則系統會設為 p=5; s=0 。
float
32位元的實數。
double
64位元的實數。
char(n)
n 長度的字串,n不能超過 254。
varchar(n)
長度不固定且其最大長度為 n 的字串,n不能超過 4000。
graphic(n)
和 char(n) 一樣,不過其單位是兩個字元 double-bytes, n不能超過127。這個形態是為
了支援兩個字元長度的字體,例如中文字。
vargraphic(n)
可變長度且其最大長度為 n 的雙字元字串,n不能超過 2000。
date
包含了 年份、月份、日期。
time
包含了 小時、分鍾、秒。
timestamp
包含了 年、月、日、時、分、秒、千分之一秒。

三、資料操作 DML (Data Manipulation Language)
資料定義好之後接下來的就是資料的操作。資料的操作不外乎增加資料(insert)、查詢資料(query)、更改資料(update) 、刪除資料(delete)四種模式,以下分 別介紹他們的語法:

1、增加資料:
INSERT INTO table_name (column1,column2,...)
valueS ( value1,value2, ...)
說明:
1.若沒有指定column 系統則會按表格內的欄位順序填入資料。
2.欄位的資料形態和所填入的資料必須吻合。
3.table_name 也可以是景觀 view_name。

INSERT INTO table_name (column1,column2,...)
SELECT columnx,columny,... FROM another_table
說明:也可以經過一個子查詢(subquery)把別的表格的資料填入。

2、查詢資料:
基本查詢
SELECT column1,columns2,...
FROM table_name
說明:把table_name 的特定欄位資料全部列出來
SELECT *
FROM table_name
WHERE column1 = xxx
[AND column2 > yyy] [OR column3 <> zzz]

三)交叉連接

交叉連接不帶WHERE 子句,它返回被連接的兩個表所有數據行的笛卡爾積,返回到結果集合中的數
據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。
例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連接檢索到的記錄數將等
於6*8=48行。
SELECT type,pub_name
FROM titles CROSS JOIN publishers
ORDER BY type
UNION運算符可以將兩個或兩個以上上SELECT語句的查詢結果集合合並成一個結果集合顯示,即執行聯合查詢。UNION的語法格式為:
select_statement
UNION [ALL] selectstatement
[UNION [ALL] selectstatement][…n]
其中selectstatement為待聯合的SELECT查詢語句。
ALL選項表示將所有行合並到結果集合中。不指定該項時,被聯合查詢結果集合中的重復行將只保留一
行。
聯合查詢時,查詢結果的列標題為第一個查詢語句的列標題。因此,要定義列標題必須在第一個查詢語
句中定義。要對聯合查詢結果排序時,也必須使用第一查詢語句中的列名、列標題或者列序號。
在使用UNION 運算符時,應保證每個聯合查詢語句的選擇列表中有相同數量的表達式,並且每個查詢選
擇表達式應具有相同的數據類型,或是可以自動將它們轉換為相同的數據類型。在自動轉換時,對於數值類

型,系統將低精度的數據類型轉換為高精度的數據類型。

在包括多個查詢的UNION語句中,其執行順序是自左至右,使用括弧可以改變這一執行順序。例如:

查詢1 UNION (查詢2 UNION 查詢3)

INSERT語句

用戶可以用INSERT語句將一行記錄插入到指定的一個表中。例如,要將雇員John Smith的記錄插入到本例的表中,可以使用如下語句:

INSERT INTO EMPLOYEES valueS

('Smith','John','1980-06-10',

'Los Angles',16,45000);

通過這樣的INSERT語句,系統將試著將這些值填入到相應的列中。這些列按照我們創建表時定義的順序排列。在本例中,第一個值「Smith」將填到第一個列LAST_NAME中;第二個值「John」將填到第二列FIRST_NAME中……以此類推。

我們說過系統會「試著」將值填入,除了執行規則之外它還要進行類型檢查。如果類型不符(如將一個字元串填入到類型為數字的列中),系統將拒絕這一次操作並返回一個錯誤信息。

如果SQL拒絕了你所填入的一列值,語句中其他各列的值也不會填入。這是因為SQL提供對事務的支持。一次事務將資料庫從一種一致性轉移到另一種一致性。如果事務的某一部分失敗,則整個事務都會失敗,系統將會被恢復(或稱之為回退)到此事務之前的狀態。

回到原來的INSERT的例子,請注意所有的整形十進制數都不需要用單引號引起來,而字元串和日期類型的值都要用單引號來區別。為了增加可讀性而在數字間插入逗號將會引起錯誤。記住,在SQL中逗號是元素的分隔符。

同樣要注意輸入文字值時要使用單引號。雙引號用來封裝限界標識符。

對於日期類型,我們必須使用SQL標准日期格式(yyyy-mm-dd)

⑺ sql 查詢 一個表中某幾列數據

sql查詢一個表中某幾列數據語法:

1、SELECT 列名稱1、列名稱2.....列名稱n FROM 表名稱 WHERE 列 運算符 值;

2、SELECT * from 表名稱 where 列 運算符 值(列 運算符 值,這個可以是多個,中間用and隔開)。

解析:使用sql查詢時,作為查詢的篩選限制條件,只需要對有限制要求的欄位使用where進行限制即可,無需對非限制要求的欄位進行特別限制。

所以你的語句可以修改為"select * from test1 where id=『2』;"就可以了。其中,你原語句中的name=全部和age=全部,屬於多餘的,如果不對name和age欄位做任何限制的話,sql本身就是會查詢全部name和age,而無需你另外加設條件。

再比如你這樣寫:「select * from test1;」在不加任何where條件的情況下,這個sql查詢本身就是查詢全部數據。而當加入id='2'之後,就限制了只能返回id值是2的某一條或者多條數據。

通過幾個例子來加深一下對上表各查詢條件使用的理解:

1、查詢計算機科學系全體學生的名單;

SELECT Sname FROM StudentWHERE Sdept='CS';

2、查詢所有年齡在20歲以下的學生姓名及其年齡;

SELECT Sname,Sage FROM StudentWHERE Sage<20;

3、查詢考試成績不合格的學生的學號;

SELECT DISTINCT Sno FROM SCWHERE Grade<60;

4、查詢年齡在20~23歲之間的學生的姓名、系別和年齡;

SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23;

5、查詢年齡在20~23歲之間的學生的姓名、系別和年齡;

SELECT Sname,Sdept,Sage FROM StudentWHERE Sage NOT BETWEEN 20 AND 23;

6、查詢計算機科學系(CS)、數學系(MA)和信息系(IS)學生的姓名、系別和年齡。

SELECT Sname,Ssex FROM Student WHERE Sdept IN('CS','MA','IS')。

⑻ 求SQL語句查詢時常使用的關鍵字

用法如下:
SELECT ______選擇項(欄位或常量或表達式)
FROM ______選擇項里出現的欄位的表 若有兩張以上的表 則同時寫
上多張表 並在中間加上逗號分開就行
WHERE _____寫上要滿足的條件 有兩張以上的表 則進行關聯 table1.
欄位=table2.欄位 其中欄位是相同的
ORDER BY ____ 將查詢結果排序 ASC表示升序可省略 DESC降不可省略
GRDER BY 將查詢結果分組排列
表之間的關聯也可以用
FROM table1 inner join table2 ON table1.欄位=table2.欄位

⑼ SQL 查詢語句

(1)select 學號,姓名,成績 from table where 課程號='001' and 成績<60