SELECT查詢
SELECT [ALL | DISTINCT] 目標表達式
FROM <表名或者試圖名>
WHERE <條件表達式>
GROUP BY <列名> [HAVING<條件表達式>]
ORDER BY <列名> [ASC | DESC]
select子句中的目標表達式不僅可以是表中的屬性列,還可以是表達式
select Sname,2014-Sage(表達式)
from Student;
消除取值重復的行:可以使用DISTINCT消除他們
select distinct Sno
from SC;
查詢滿足條件的元組:可以通過WHERE子句實現
- 比較:=,>,< ,>=, <=, !=, !>, !<, NOT
- 確定范圍:between and,not between and
- 確定集合:IN ,NOT IN
- 字符匹配:LIKE,NOT LIKE
- 空值:IS NULL,IS NOT NULL
- 多重條件:AND, OR ,NOT
字符匹配中:
- %代表任意長度
- _代表任意單個字符
查詢所有姓劉的學生、學號、性別
select Sname,Sno,Ssex
from Student
where Sname like'劉%';
ORDER BY 字句
對查詢結果按照一個或者多個屬性列的升序(ASC)或者降序(DESC)排列,默認值為升序
select Sno,Grade
from SC
where Cno='3'
order by Grade DESC
對于空值,排序時顯示的次序由具體系統實現來決定
聚集函數
- COUNT(*) 統計元組個數
- COUNT([DISTINCT | ALL]<列名>) 統計一列中值得個數
- SUM([DISTINCT | ALL]<列名>) 計算一列值的總和
- AVG([DISTINCT | ALL]<列名>) 計算一列值的平均值
- MAX([DISTINCT | ALL]<列名>) 求一列值的最大值
- MIN([DISTINCT | ALL]<列名>)求一列值的最小值
WHERE子句是不能用聚集函數作為條件表達式的,聚集函數只能用于SELECT 子句和GROUP BY句中的HAVING子句
GROUP BY 子句
GROUP BY 子句將查詢結果按某一列或多列的值分組,值相等的為一組
查詢選修了三門以上課程的學生學號
select Sno
from SC
group by Sno
having count(*)>3;
嵌套查詢
一個SELECT-FROM-WHERE語句成為一個查詢塊。講一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢
select Sname
from Student
where Sno in
(select Sno
from SC
where Cno='2');
插入數據
插入數據:SQL的數據插入語句INSERT通常有兩種形式,一種是插入一個元組,另一種是插入子查詢結果。后者可以一次插入多個元組。
- 插入元組
INSERT
INTO <TABLENAME>[<屬性列>]
VALUES (<常量1>...)
字符串常數通常要用單引號(英文符號)括起來
- 插入子查詢結果
INSERT
INTO <TABLENAME>[(屬性列)...]
子查詢:
插入一條選課記錄(插入元組):
insert
into SC(Sno,Cno)
VALUES('201215128','1');
或者:
insert
into SC
values('201215128','1','NULL');
沒有指出SC的屬性名,在Grade列上要明確給出空值
修改數據
UPDATE <TABLENAME>
SET <列名>=<表達式>
[WHERE <條件>];
將學生201215121的年齡改為22歲
update Student
set Sage=22
where Sno='2012151210';
帶子查詢的修改語句
update SC
set Grade=0
where Sno in
(select Sno
from Student
where Sdept='CS');
刪除數據
DELETE
FROM <TABLENAME>
WHERE [<條件>];
DELETE刪除的是表中的數據,而不是關于表的定義
刪除某一個元組的值
delete
from Student
where Sno='201215128';
帶子查詢的刪除語句
刪除計算機科學系所有學生的選課記錄
delete
from SC
where Sno in
(select Sno
from Student
where Sdept='CS');
關系數據庫的增刪改查的內容非常多,尤其是 ** 查** ,我的水平有限,只能寫這么多,原理的東西搞懂,這些東西足夠日常使用。