SQL
結構化查詢語言 (SQL)SQL( Struceured Query Languang)一直是關聯式資料庫管理系統(RDBMS)的標準語言
集DDL,DML,DCL於一體,
資料查詢 與 資料操縱
SELECT [ALL|DISTINCT]<目標運算式>[,目標運算式]……
FROM<表名>[,表名]
WHERE<條件運算式>
ORDER BY <列名>[ASC|DESC]
單表查詢
建立資料庫studentinfo,
建立資料庫表 student (學生基本資料表)
建立欄位(列),sno,sname,ssex,sage,sdept
建立資料庫表 sc (學生選課表)
建立欄位,id,sno,cno,grade
查詢表中若干列
1查詢指定的列
例1 查詢全體學生的學號與姓名。
SELECT sno,sname FROM student
例2 查詢全體學生的名稱、學號、所在系
SELECT studentname,studentno,sdepartment FROM student;
例3 查詢全體學生詳細記錄
SELECT * FROM student
等價於
SELECT * sno,sname,ssex,sage,sdept FROM student
例 4 查詢全體學生的姓名以及出生年份
SELECT Sname,2006-sage FROM student;
查詢表中若干元組
1 消除重複的資料
查詢選修課程的所有學生學號
SELECT sno FROM sc
這樣會包含一些重複資料,如何消除呢?
使用DISTINCT
SELECT DISTINCT sno FROM sc
查詢滿足條件的資料
比較 = , > ,< , >= , <= , != , <> , !> !< ; NOT +比較子
確定範圍 BETWEEN AND ,NOT BETWEEN AND
確定集合 IN,NOT IN
字元匹配 LIKE, NOT LIKE
空值 IS NULL,IS NOT NULL
多重條件 AND, OR
例5 查詢 電腦系所有學生名單
SELECT Sname , FROM student WHERE Sdept = ‘CS’;
例6 查詢年齡在20以下的學生姓名及其年齡
SELECT Sname , Sage , FROM student WHERE sage <20;
確定範圍ie
BETWEEN…AND 和 NOT BETWEEN….AND
例7 查詢年齡在20-23歲之間的學生姓名、系別和年齡。
SELECT sname , sdept,sage FROM student WHERE sage BETWEEN 20 AND 23
確定集合
IN可以查詢值屬於指定集合的資料
例8 查詢資訊系(is) 與電腦系(cs)學生的姓名與性別
SELECT sname,ssex FROM student WHERE sdept IN(‘is’,’cs’);
字元匹配
LIKE 和 NOT LIKE 用於字串的匹配。其中可以包含萬用字元_和%
%代表任意長度
_代表一個字元
例9 查詢學號為06001的學生所有資料
SELECT * FROM student where sno LIKE ‘95001’;
例10 查詢所有姓劉的學生姓名、學號和性別
SELECT sname,sno,ssex WHERE sname LIKE ‘劉%’
例 11 查詢姓”歐陽”並且三個漢字的學生姓名
SELECT sname FROM student WHERE sname LIKE ‘歐陽_ _’
多重條件查詢
AND 和 OR可用來串連多個查詢條件
例12 查詢所有電腦系年齡在20以下的學生
SELECT sname FROME student WHERE sdept=’cs’ and sage<20;
例 13 查詢是電腦系的或者是資訊系的所有學生姓名和性別
SELECT sname,ssex FROM student WHERE sdept=’cs’ OR sdept=’is’
對查詢結果排序(ORDER BY)
ORDER BY 對查詢結果按照一個欄位的升序(ASC)或降序(DESC)排列,預設為升序
例14 查詢選修了3號課的學生學號以及成績,查詢結果按照分數的降序排列
SELECT sno,grade FROM sc where cno=’3’ ORDER BY grade DESC;
使用函數
COUNT 統計資料條數
SUM 計算某一列值得總和
AVG 計算某一列值得平均值
MAX 求某一欄位中最大值
MIN 求某一欄位的最小值