標籤:sel col 獲得 log 括弧 插入資料 傳回值 mda 欄位
MySQL中的DML語句
插入資料記錄:INSERT insert into ... values ...可以同時插入多條記錄;
更新資料記錄:UPDATE
刪除資料記錄:DELETE/TRUNCATE
MySQL中的SELECT語句
SELECT文法:查詢所有、查詢部分;查詢使用別名、查詢空值、查詢使用常量
WHERE子句:對拆線呢結果進行限定;
LIMIT子句:對查詢結果進行限定
常用函數分類:彙總函式、字串函數、時間日期函數、數學函數
子查詢:將一個查詢嵌套在另一個查詢中。
1、簡單子查詢
例如,查看年齡比“李斯文”小的學生。
分析:先查出“李斯文”的出生日期;然後,利用where語句篩選出生日期比“李斯文”大的學生
SELECT studentNo,studentName,sex,birthday,address FROM studentWHERE birthday>(SELECT birthday FROM student WHERE studentName=‘李斯文‘);
這裡,括弧內的子查詢返回的是李斯文的生日:1993-07-23——一個DATA類型的資料。
子查詢使用的比較子有>、=、<、>=、<=,執行時,先執行子查詢,傳回值;再執行整個父查詢,返回最後結果。(比較子後面的子查詢只能返回單個數值)
子查詢作為WHERE條件的一部分,還可以和UPDATE、INSERT、DELETE一起使用。
建議在編寫查詢語句時,直接指定要顯示的列名,而不是用*,因為後者佔用的資源大,可維護性低。
2、使用子查詢在多表間查詢合格資料
例如,查詢Logic Java課程至少一次考試剛好等於60分的學生名單。
分析:
(1)查詢subject表,獲得課程的課程ID;
(2)根據課程ID,查詢result表中成績是60分的學生的編號;
(3)根據,學號,查詢student表得到學生姓名;
select studentName from student where studentNo= (select studentNo from result inner join Subject on result.subjectNo=subject.subjectNo where studentResult=60 and subjectName=‘Logic Java‘);
3、IN和NOT IN子查詢:後面可跟隨返回多條記錄的子查詢,用於檢測某欄位的值是否存在於某個範圍中。
現在,有多個學生的Logic Java課程考試成績為60分,採用簡單的子查詢就會出現編譯錯誤“Subquery returns more than 1 row”,即子查詢傳回值不唯一。
現在使用IN子查詢:
select studentName from student where studentNo IN (select studentNo from result where subjectNo = (select subjectNo from subject where subjectName =‘Logic Java‘) AND studentResult = 60);
另一個梨例子,查詢參加Logic Java課程最近一次考試的在讀學生名單(四層嵌套):
(1)獲得課程編號;
(2)根據課程編號得到最近的一次課程考試日期;
(3)根據課程編號和最近一次的考試日期查詢學生資訊;
SELECT studentNo,studentName FROM student where studentNo IN( select studentNo from result where subjectNo= (select subjectNo from subject where subjectName=‘Logic Java‘) AND examDate= (select MAX(examDate) from result where subjectNo= (select subjectNo from subject where subjectName=‘Logic Java‘) ) );
4、NOT IN查詢
如何查詢得到沒有參加Logic Java課程最近一次考試的在讀學生名單?
SELECT studentNo,studentName FROM student where studentNo NOT IN( select studentNo from result where subjectNo= (select subjectNo from subject where subjectName=‘Logic Java‘) AND examDate= (select MAX(examDate) from result where subjectNo= (select subjectNo from subject where subjectName=‘Logic Java‘) ) )AND gradeID=(...);
還可以在NOT IN的條件外繼續AND() 添加條件~~
MySQL中的DML和DQL