MySQL中的DML和DQL

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.