簡單SQL增刪改查

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通常有兩種形式,一種是插入一個元組,另一種是插入子查詢結果。后者可以一次插入多個元組。

  1. 插入元組
INSERT 
INTO <TABLENAME>[<屬性列>]
VALUES (<常量1>...)

字符串常數通常要用單引號(英文符號)括起來

  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');

關系數據庫的增刪改查的內容非常多,尤其是 ** ** ,我的水平有限,只能寫這么多,原理的東西搞懂,這些東西足夠日常使用。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容