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

歡迎訪問 生活随笔!

生活随笔

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

数据库

SQL基础使用入门(二): DML语句和DCL语句

發布時間:2025/3/20 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL基础使用入门(二): DML语句和DCL语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL語句第二個類別——DML 語句

DML是數據操作語言的縮寫,主要用來對數據表中數據記錄實例對象進行操作,包括插入、刪除、查找以及修改四大操作,這也是開發人員使用中最為頻繁的操作。

1.插入記錄

基本語法:INSERT INTO tablename (field1,field2,…,fieldn) VALUES (value1,value2,…,valuen);

其中,(field1,field2,…,fieldn) 表示數據表屬性字段,(value1,value2,…,valuen) 表示插入記錄所對應屬性字段的屬性值,若前面沒有說明數據表屬性字段,則后面記錄屬性默認與表中字段順序一致

例1(使用方法1向Student表中插入一行新記錄)

例2(使用方法2向Student表中插入一行新記錄)

另外也可以一次性插入多條記錄,即在VALUES后添加多條記錄值

例(一次性插入多條記錄)

此外,如果插入記錄中屬性為表屬性字段的子集,則未賦值的屬性將自動設置為空值(允許空值的情況下)

例(系統自動對未賦值屬性設置空值)

2.更新記錄

基本語法:UPDATE tablename SET field1=value1,field2=value2,…,fieldn=valuen [WHERE CONDITION];

其中,’fieldn=valuen’ 表示更新記錄屬性值操作,’WHERE CONDITION’ 表示對所需更新的記錄的條件篩選

例(更新Student表中學號為’201615122‘的學生的系為’MA‘

也可以同時對多個表進行更新,這主要用于根據一個表屬性字段去修改另一個表屬性字段,在此不做演示,歡迎讀者自行嘗試。

基本語法:

UPDATE t1,t2,…,tn SET t1.field1=value1,t2.field2=value2,…,tn.fieldn=valuen [WHERE CONDITION];

3.刪除記錄

基本語法:DELETE FROM tablename [WHERE CONDITION];

例(刪除Student表中學號為’201615123‘的學生記錄)

和多表更新一樣,也可以直接刪除多個表,基本語法:DELETE t1,t2,…,tn FROM t1,t2,…,tn [WHERE CONDITION];?在此亦不作相應演示,請讀者自行完成。

4.查詢記錄

實際上在本部分前面已經為大家演示了基本的查詢語句:SELECT * FROM tablename [WHERE CONDITION];

語句中的’*’代表查詢全部屬性字段,故查詢結果顯示了表中全部記錄。而在實際生活應用中,往往需要進行多種條件的查詢,以下將分別進行介紹。

1)查詢不重復記錄

有時查詢需要去除一些重復的記錄,這時可以在查詢時添加關鍵字 DISTINCT 來實現此功能

例1.1(查詢Student表中系種類)

例1.2(查詢Student表中系種類)

2)條件查詢

查詢語句中可選項[WHERE CONDITION]表示條件查詢,條件的種類可以有多種,可以包括比較遠算符(>,<,>=,<=,=,!=)、邏輯運算符(and,or,not)或空值判斷(is null,is not null)等

例1(查詢Student表中年齡小于19歲的學生記錄)

例2(查詢Student表中’MA‘系且年齡大于19雖的學生記錄)

3)排序顯示查詢

在查詢后可以通過關鍵字ORDER BY 和 DESC|ASC 來實現排序顯示,其中DESC代表降序,ASC代表升序,默認為升序。

基本語法:
SELECT * FROM tablename
[WHERE CONDITINO]
[ORDER BY field1 [DESC|ASC],field2 [DESC|ASC],…,fieldn [DESC|ASC]];

例(查詢Student表中全部學生記錄并按照年齡從小到大排序顯示)

4)限制顯示查詢

MYSQL在SQL92中新擴展了一個語法關鍵字 LIMIT,它可以在查詢之后只顯示指定個數的信息

語法格式:SELECT …[LIMIT offset_start,row_count],其中offset_start表示顯示的起始偏移量,默認為0,row_count表示顯示記錄的個數

例(查詢Student表中全部學生記錄并從第2個學生記錄開始顯示2條信息)

5)聚合

聚合,簡單來說就是SQL內置提供的一些常用記錄數據匯總統計方法,在查詢時可以根據需求直接調用。

基本語法:
SELECT [field1,field2,...,fieldn] fun_name
FROM tabename
[WHERE CONDITION]
[GROUP BY field1,field2,...,fieldn]
[WITH ROLLUP]
[HAVING CONDITION];

其中,fun_name代表相應的聚合函數,如count(*)個數統計、max最大值、min最小值、avg平均值以及sum求和等;GROUP BY 表示按照表中屬性字段進行分類;WITH ROLLUP 表示是否對分類聚合后在進行匯總;HAVING 表示分類聚合后再進行條件篩選。建議對查詢先WHERE篩選再HAVING篩選,這樣可以減少聚合開銷,使得查詢效率更高。

例1(統計Student表中各個系的人數)

例2(統計Student表中除開‘IS’系以外每個系的人數并匯總人數)

例3(統計Student表中系人數大于1的系的學生人數)

6)表連接

為將兩個及以上的表的信息同時顯示,SQL中提供了表連接操作。表連接可以分為內連接和外連接,其中內連接僅會顯示出匹配對應上的記錄信息,而外連接則還會同時顯示未完全匹配上的記錄信息。連接操作都是通過多表中的某一共同關聯因素來連接的,如學生表中Sno和選修表中Sno則為對應匹配關聯因素,二者可以借此連接起來。因內連接較為常用,故此僅演示內連接操作。

Course(課程)表:

SC(選修)表:

例(查詢學生選修成績信息)

7)子查詢

在查詢中,有時候可能會需要在一次查詢的基礎上再次查詢,這時候前一次查詢(或下層查詢)稱為子查詢或內層查詢,而后一次查詢(或上層查詢)稱為父查詢或外層查詢,用于子查詢的關鍵字有IN,NOT IN,EXISTS,NOT EXISTS。其中(NOT) IN 相當于集合中的存在或包含于的關系,用來檢索父查詢中記錄是否存在于子查詢返回的記錄中,而帶有(NOT) EXISTS 的子查詢不返回任何數據,它只會產生邏輯真(true)或假(false)

例1(查詢與‘Lisa’在同一個系學習的學生信息,即第一步查詢‘Lisa’所在的系,第二步查詢該系的所有學生信息)

例2.1(查詢所有選修了1號課程的學生姓名)

例2.2(使用EXISTS查詢與‘Lisa’在同一個系學習的學生信息)

8)記錄聯合

由于在查詢時返回的結果是一些記錄的集合,所以可以對多個查詢語句結果進行集合操作,SQL中主要的操作有并(UNION)、交(INTERSECT)和差(EXCEPT)。這里需要注意的是,各查詢的參與對象類型必須是相同的,查詢結果列數也必須是相同的。但是,在MySQL中只保留了并操作,后兩種功能的實現都用其他操作替換了。SQL中提供了UNIONUNION ALL兩種操作,兩者的區別在于UNION中包含了DISTINCT操作,即去除了重復的記錄結果,而UNION ALL則會顯示全部記錄

例(查詢’MA’系的學生及年齡不大于19歲的學生,即’MA’系學生集合與年齡不大于19歲學生集合的并集)

SQL語句第三個類別——DCL 語句

DCL是數據控制語言的縮寫,主要是DBA管理系統對象的使用權限時用的,主要包括權限的授予和回收。由于一般開發人員很少使用該語句,這里僅淺顯地進行介紹

1.權限授予

基本語法:
GRANT privilege[, privilege]…
ON object_type Object_name[,object_type Object_name]...
TO user[,user]...
[WITH GRANT OPTION];

其中privilege代表要授予的權限名,object_type Object_name表示權限作用的對象類型和名稱,user表示授予權限的用戶,WITH GRANT OPTION表示該授予權限的用戶是否能繼續向其他用戶進行此權限的授予

例1(把查詢Student表的權限授予給用戶U1)

例2(把查詢Student表和修改學號的權限授予給用戶U2,同時U2可以繼續授權給其他用戶)

2.權限收回

基本語法:
REVOKE privilege[, privilege]…
ON object_type Object_name[,object_type Object_name]...
FROM user[,user]...[CASCADE|RESTRICT];

其語法含義與GRANT語法大體一致,后面的CASCADE|RESTRICT代表一個回收級聯約束條件,CASCADE表示回收該用戶權限時也將該用戶授權下的其他用戶權限進行回收,而RESTRICT表示若該用戶下有授權其他用戶權限,則拒絕回收該用戶的權限

例(回收用戶U2的修改學號的權限)

?


小結

本次SQL基礎使用入門(二)主要介紹了SQL語句的后兩個分類——DML和DCL,其中著重講解并演示了數據操作語言的基本使用語法,對DCL中權限授權與回收兩大操作做了淺顯簡單的介紹。

轉載于:https://www.cnblogs.com/Unikfox/p/9160684.html

總結

以上是生活随笔為你收集整理的SQL基础使用入门(二): DML语句和DCL语句的全部內容,希望文章能夠幫你解決所遇到的問題。

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