日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL基础之DML语句

發布時間:2024/1/17 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL基础之DML语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DML語句

DML操作是指對數據庫中表記錄的操作,主要包括表記錄的插入(insert),更新(update),刪除(delete)和查詢(select),是開發人員日常使用最頻繁的操作。

插入記錄

表創建好后,就可以往里插入記錄了,插入記錄的基本語法如下

INSERT INTO tablename (field1,field2,.....,fieldn) VALUES (value1,value2,.....valuen);

向表emp中插入記錄,ename為zhangsan,hiredate為now(),sal為2000,deptno為1

也可以不用指定字段名稱,但是values后面的順序應該和字段的排列順序一致。如果想把其中的某個字段不設置值,需要把那個字段的名稱重新填上去,那么這個字段會自動設置為NULL或者默認值或者自增的下一個數字

INSERT 語句還有一個很好的特性,可以一次性插入多條記錄

INSERT INTO tablename (field1,field2,......,fieldn) VALUES (record1_value1,record1_value2,....,record1_valuesn), (record2_value1,record2_value2,....,record2_valuesn), (record3_value1,record3_value2,....,record3_valuesn), ...... (recordn_value1,recordn_value2,....,recordn_valuesn) ;

這個特性可以使得MySQL在插入大量記錄時,節省很多的網絡開銷,大大提高插入效率

更新記錄

表里的記錄值可以通過update命令進行更改,語法如下:

UPDATE tablename SET FIELD1=value1,field2=value2,...fieldn=valuen [WHERE CONDITION]

將表emp中ename為“zhaosi”的薪水從2000改為4000

在MySQL中,update命令可以同時更新多個表中數據,語法如下:

UPDATE tablename1,tablename2,....tablenamen SET tablename1.field1=expr1,tablenamen.exprn [WHERE CONDTION];

注意:多表更新的語法更多地用在根據一個表的字段來動態地更新另外一個表的字段。

刪除記錄

如果記錄不在需要,可以用delete命令刪除,語法如下

DELETE FROM tablename [WHERE CONDITION]

在emp中將ename為”zhaosi”的記錄刪除

在MySQL中可以一次刪除多個表的數據,語法如下
DELETE tablename1,tablename2,……,tablenamen FROM tablename1,tablename2,….,tablenamen[WHERE CONDTION]
注意:如果from后面的表名用別名,則delete后面也要用相應的別名,否則會提示語法錯誤。

查詢記錄

數據插入到數據庫中后,就可以用SELECT命令進行各種各樣的查詢,使得輸出的結果符合用戶的要求。SELECT的語法很復雜,

SELECT * FROM tablename [WHERE CONDITION]

其中“*”表示將所有的記錄都選出來,也可以用逗號分隔的所有字段來代替,以下兩個查詢都是等價的

查詢不重復的記錄

有時需要將表中的記錄去掉重復后顯示出來,可以用distinct關鍵字來實現

條件查詢

WHERE 后面的條件可以使用 >,<,>=,<=,!=,=等比較運算符,多個條件之間還可以使用 or,and等邏輯運算符進行多條件聯合查詢。
下面的例子是多字段條件查詢

排序和限制

取出按照某個字段進行排序后的記錄結果集,這就用到了數據庫的排序操作,用關鍵字ORDER BY 來實現

SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC\ASC],field2 [DESC\ASC],...,fieldn[DESC\ASC]]

DESC和ASC是排序順序關鍵字,DESC表示按照字段進行降序排序,ASC則表示升序排列,如果不寫此關鍵字默認是升序排序。RODER BY后面可以跟多個不同的排序字段,并且每個排序字段可以用不用的排序順序。


如果排序字段的值一樣,則值相同的字段按照第二個排序字段進行排序,依次類推。如果只有一個排序字段,則這些字段相同的記錄將會無序排序。

如果希望顯示一部分數據,而不是全部,可以使用LIMIT關鍵字來實現,LIMIT語法如下

SELECT...[LIMIT offset_start,row_count]

其實offset代表的意思是記錄的其實偏移量(self:從第一行開始),row_count代表顯示的行數(self:一共顯示幾條記錄)
未填寫offset_start默認為0,只需要填寫顯示的行數即可,實際顯示的就是前n條記錄

聚合

很多情況下,用戶都需要進行一些匯總操作,比如統計整個公司的人數或者統計每個部門的人數,這時就要用到SQL的聚合操作。
聚合操作的語法如下:

SELECT [field,field2,....,fieldn] fun_name FROM tablename [WHERE where_contition] [GROUP BY field1,field2,...,fieldn [WITH ROLLUP]] [HAVING where_contition] ]

參數說明

1.

  • fun_name 表示要做的聚合操作,也就是聚合函數,常用的有sum(求和),count(*)記錄數,max(最大值),min(最小值)。
  • GROUP BY關鍵字表示要進行分類聚合的字段,比如要按照部門分類統計員工數量,部門就應該寫在group by后面
  • WITH ROLLUP是可選語法,表明 是否對分類聚合后的結果進行再匯總
  • HAVING關鍵字表示對分類后的結果再進行條件的過濾
    注意:having和where的區別在于,having是對聚合后的結果進行條件的過濾,而where是在聚合前就對記錄進行了過濾,如果邏輯允許,我們盡可能用where先過濾記錄,這樣因為結果集減小,將對聚合的效率大大提高,最后再根據邏輯看是否用having進行過濾。

  • 例子:統計emp表中的總人數

    統計各個部門的人數

    統計各個部門的人數,又要統計總人數

    統計人數大于1人的部門

    統計所有員工的薪水總額,最高和最低薪水

    轉載于:https://www.cnblogs.com/aotemanzhifu/p/9192394.html

    總結

    以上是生活随笔為你收集整理的MySQL基础之DML语句的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。