數據庫常用增刪改查語句


創建一個表

CREATE TABLE 表名稱
(
列名稱1 數據類型,
列名稱2 數據類型,
.......
)

1、增

(1)插入元祖

INSERT
INTO<表名>[(<屬性列1>[,<屬性列2>]...)]
VALUES(<常量1>[,<常量2>]...);

(2)插入子查詢結果

INSERT
INTO<表名>[(<屬性列1>[,<屬性列2>...])]
子查詢;

例:

INSERT
INTO TongXueLu ('姓名','地址','電子郵件')
SELECT name,address,email
FROM Students

2、刪

DELETE
FROM<表名>
[WHERE<條件>];

3、改

UPDATE<表名>
SET<列名>=<表達式>[,<列名>=<表達式>] 
[WHERE<條件>];

 

  

4、查

一般格式:

SELECT [ALL|DISTINCT]<目標列表達式>[,<目標列表達式>]...
FROM<表名>[,<表名>]|(<SELECT語句>)[AS]<別名>
[WHERE<條件表達式>]                      //檢索條件
[GROUP BY<列名1>[HAVING<條件表達式>]]     //分組篩選條件
[ORDER BY<列名2>[ASC|DESC]];            //排序依據

4.1 單表查詢

(1)查詢全體學生的學號。DISTINCT表示刪除重復元素,如果不加則默認為ALL,則保留重復值。

SELECT DISTINCT Sno
FROM Student;

各個列的先后順序可以與表中不一致。用戶可以根據應用的需要改變列的顯示順序。

(2)查詢全體學生的詳細記錄。

SELECT *
FROM Student;

(3)查詢全體學生的學號、姓名及其出生年份。2020-Sage表示查詢經過計算的值。

SELECT Sno,Sname,2020-Sage
FROM Student;

 (4)查詢滿足條件的元祖

1)比較

SELECT Sname,Sage
FROM Student
WHERE Grade<60;

2)確定范圍

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

3)確定集合

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

4)字符匹配

查詢以“DB_”開頭,且倒數第三個字符為 i 的課程的詳細情況。

SELECT *
FROM Course
WHERE Cname LIKE 'DB\_%i_ _'ESCAPE'\';

5)查詢空值

select name from a where email is null

(5)聚集函數

SELECT SUM(Ccredit)
FROM SC,Course
WHERE Sno='202015012'AND SC.Cno=Course.Cno

(6)GROUP BY子句

查詢選修了三門以上課程的學生學號

SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*)>3;

(7)【查詢返回限制行數(關鍵字:top percent)】

例1:select top 6 name from a
說明:查詢表a,顯示列name的前6行,top為關鍵字
例2:select top 60 percent name from a
說明:查詢表a,顯示列name的60%,percent為關鍵字

4.2 連接查詢

(1)等值於非等值連接查詢

SELECT Student.Sno,Sname
FROM Student,SC
WHERE Student.Sno=SC.Sno AND
SC.Cno='2'AND SC.Grade>90;

(2)外連接

左外連接

select s.name,c.courseID,c.score
from strdents as s
left outer join score as c
on s.scode=c.strdentID
說明:在strdents表和score表中查詢滿足on條件的行,條件為score表的strdentID與strdents表中的sconde相同

右外連接

select s.name,c.courseID,c.score
from strdents as s
right outer join score as c
on s.scode=c.strdentID
說明:在strdents表和score表中查詢滿足on條件的行,條件為strdents表中的sconde與score表的strdentID相同

4.3 嵌套查詢

子查詢中不能出現order by

SELECT Sname
FROM Student
WHERE Sno IN
         (SELECT Sno
           FROM SC
           WHERE Cno='2');

4.4 集合查詢

集合操作主要包括並操作UNION、交操作INTERSECT和差操作EXCEPT。

SELECT *
FROM Student
WHERE Sdept='CS'
UNION|INTERSECT|EXCEPT
SELECT *
FROM Student
WHERE Sage<=19;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM