創建一個表
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;