1. 模式的創建 2. 設置預設值 3. 基本表的撤銷 註:撤銷表時,資料庫中不應該存在依賴於被刪除表的其它表、視圖、索引、存儲過程等對象。 4. 基本表結構的修改 5. 查詢(去除重覆值) 7. 字元串匹配(LIKE) 8. 三值邏輯(AND OR NOT) 9. 輸出排序 10. 輸出列重命名 ...
1. 模式的創建
1 create schema "S-T" authorization wang;
2. 設置預設值
1 create table student1 ( 2 sno char(8), 3 sname char(8), 4 sbirth date default '0000-00-00', 5 ssex char(2) default '?', 6 sdept char(30) 7 );
3. 基本表的撤銷
1 drop table sc; 2 drop table course; 3 drop table student;
註:撤銷表時,資料庫中不應該存在依賴於被刪除表的其它表、視圖、索引、存儲過程等對象。
4. 基本表結構的修改
1 -- 增加“入學時間”列 2 alter table student1 add stime date; 3 -- 刪除“入學時間”列 4 alter table student1 drop stime;
5. 查詢(去除重覆值)
1 -- 查詢全部不同的生日 2 select distinct sbirth from student1;
7. 字元串匹配(LIKE)
1 -- 查詢所有出生日期在1996的信息 2 select * 3 from student1 4 where sbirth like '1997%';
8. 三值邏輯(AND OR NOT)
1 -- 註意是 is null 或者 is not null 2 select * 3 from sc 4 where sno='980001' and 5 (grade>=60 or grade<60 or grade is null);
9. 輸出排序
1 /* 2 查詢所有學生信息 3 結果按所在系逆序排序, 4 同系的學生則按學號順序排序 5 */ 6 select * 7 from student1 8 order by sdept desc,sno asc;
10. 輸出列重命名
1 select sno 學號,sname 姓名,sbirth 出生日期 2 from student1 3 where sbirth like '1996%' 4 order by sno desc;
11. 聚集函數
1 /* 2 查詢選修3號課程的學生人數,最高分和平均分 3 */ 4 select count(*),max(grade),avg(grade) 5 from sc 6 where cno='3';
12. 聚集函數和分組(GROUP BY,HAVING)
1 /* 2 查詢選修了三門以上課程的學生學號及該生的平均成績 3 */ 4 select sno,avg(grade) 5 from sc 6 group by sno 7 having count(*)>3;
13. select 語句的完整句法
14. 連接查詢(多表)
1 /* 2 求數據結構課程成績大於85分的學生姓名和成績 3 結果按成績降序排列 4 */ 5 select student.sname, grade 6 from student, sc, course 7 where student.sno = sc.sno and 8 sc.sno = course.cno and 9 course.cname = '數據結構' and 10 sc.grade > 85 11 order by grade desc;
註:當不同的表中有同名屬性時,屬性名前要用表名限定。
15. 自身連接
1 /* 2 求離散數學的先修課的先修課的課號與名稱 3 */ 4 select z.cno, z.cname 5 from course x, course y, course z 6 where x.pcno = y.cno and 7 y.pcno = z.cno and 8 x.cname = '離散數學';
16. 外連接
需要查找兩張表中一張表存在,另一張表不存在的時候使用外連接。
1 /* 2 查詢所有學生的學號、姓名、所選課程的課程號以及這門課的成績 3 left join 返回符合連接條件的數據行以及左邊表中不符合條件的數據行 4 right join, full join 類似 5 */ 6 select student.sno, sname, cno, grade 7 from 8 student left outer join sc 9 on student.sno = sn.sno;
17. 嵌套查詢
1 /* 2 查詢與學號為95003的學生同系的學生學號和姓名 3 */ 4 select sno, sname 5 from student 6 where sdept = (select sdept 7 from student where sno='95003');