最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL基礎(chǔ)教程之DML語(yǔ)句詳解

 更新時(shí)間:2021年12月21日 10:00:40   作者:持行非就  
DML 語(yǔ)句是指對(duì)數(shù)據(jù)庫(kù)中表的記錄進(jìn)行的操作,下面這篇文章主要給大家介紹了關(guān)于MySQL基礎(chǔ)教程之DML語(yǔ)句的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

DML 語(yǔ)句

DML(Data Manipulation Language)語(yǔ)句:數(shù)據(jù)操縱語(yǔ)句。

用途:用于添加、修改、刪除和查詢數(shù)據(jù)庫(kù)記錄,并檢查數(shù)據(jù)完整性。

常用關(guān)鍵字:insert、update、delete、select等。

DML 操作的對(duì)象是庫(kù)表的數(shù)據(jù)(記錄)。

主要包括插入(insert)、更新(update)、刪除(delete)和查詢(select)。

DML 語(yǔ)句是開(kāi)發(fā)人員使用最頻繁的操作。

1.插入記錄

插入一條記錄

insert into tablename (field1,field2,...,fieldn) values (value1,value2,...,valuen);

一次性插入多條數(shù)據(jù)

insert into tablename

 (field1,field2,...,fieldn)

values

 (value1,value2,...,valuen),

 (value1,value2,...,valuen);

2.更新記錄

更新單表數(shù)據(jù)

update tablename set field1=value1,filed2=value2,...fieldn=valuen [where condition]

同時(shí)更新多個(gè)表的數(shù)據(jù)

update t1,t2,...,tn set t1.field1=expr1,tn.field=exprn [where condition];

通常用于根據(jù)一個(gè)表的字段來(lái)動(dòng)態(tài)地更新另外一個(gè)表的字段

在此說(shuō)明:中括號(hào) “[ ]” 代表的是可選參數(shù),即可有可無(wú)的參數(shù)。

3.簡(jiǎn)單查詢記錄

簡(jiǎn)單的條件查詢。符號(hào)“*”代表查詢所有字段,如果只想看其中某些列,則寫表的列名。

select * from tablename [where condition];

select field1,field2,...,fieldn from tablename [where condition];

別名

? ? 給列名或表名取別名的關(guān)鍵字:AS 或者不寫關(guān)鍵字。如:

select field1 AS f1,field2 f2  from tablename;

select t2.field1 AS f1,t1.field2 f2  from table1 as t1,table2 t2;

不取別名,則查詢結(jié)果的列名為表原本的列名;

取別名,則查詢結(jié)果的列名為別名

4.刪除記錄

刪除單表記錄

delete from tablename [where condition];

同時(shí)刪除多個(gè)表的數(shù)據(jù)

delete t1,t2,...,tn from t1,t2,...,tn [where condition];

說(shuō)明:不加where 條件則刪除全表數(shù)據(jù)

單表“增改查刪”操作案例:

多表“刪除”操作案例:

? 再看個(gè)刪除案例

?最后再看個(gè)刪除案例

多表刪除結(jié)論:

  條件成立,則刪除有條件表的對(duì)應(yīng)數(shù)據(jù),沒(méi)條件的則全表刪除;

  條件不成立,則都不刪除。

留個(gè)疑問(wèn):多表刪除不給where 條件會(huì)怎樣呢?

關(guān)于同時(shí)更新多個(gè)表數(shù)據(jù)的操作,可以自行探索,畢竟有思考的學(xué)習(xí)最有價(jià)值。

5.查詢記錄詳解(DQL語(yǔ)句)

DQL(Data Query Language)即數(shù)據(jù)庫(kù)查詢語(yǔ)言。

數(shù)據(jù)庫(kù)查詢語(yǔ)句就像玩積木一樣,一塊一塊的拼湊,每個(gè)中括號(hào)“[]”代表一塊積木。

先通過(guò)遞進(jìn)的方式一條一條列出查詢語(yǔ)法。

5.1.查詢不重復(fù)的記錄

select distinct filed from tablename;

distinct 關(guān)鍵字是對(duì) “查詢結(jié)果集” 去重,再看個(gè)例子就明白了。

5.2.條件查詢

--查詢所有列:

select * from tablename [where condition];

--查詢指定列:

select [field1,field2,...,fieldn] from tablename [where condition];

常用的條件(condition)

等于:field = xxx

大于:field > xxx

小于:field < xxx

不等于:field != xxx

不等于:field <> xxx

等于null:field is null

不等于null:field is not null

多個(gè)條件之間用邏輯運(yùn)算符:and 和 or?

模糊查詢之"_":field like _x_xx_? ? ?符號(hào)"_"代表匹配單個(gè)任意字符,可以在你喜歡的字符旁加上"_"

模糊查詢之"%":field like %x%xx%? ? ?符號(hào)"%"代表匹配0~n個(gè)任意字符,可以在你喜歡的字符旁加上"%"

in語(yǔ)句查詢:field in(value1,value2,...)? 查詢field 和 in 數(shù)組配得上的,不配就沒(méi)有數(shù)據(jù)

not in語(yǔ)句查詢:field not in(value1,value2,...)? ?查詢field 和 in 數(shù)組配不上的,不配就有數(shù)據(jù)

其它常用條件具體怎么用,參考常用條件去操作。

5.3.聚合查詢

--最簡(jiǎn)單的聚合查詢:
select [field1,field2,...,fieldn] fun_name from tablename group by field;
--完整語(yǔ)法:
select [field1,field2,...,fieldn] fun_name from tablename
 [where condition]
 [group by field1,field2,...,fieldn [with rollup]]
 [having condition];

說(shuō)明:

fun_name? 表示聚合函數(shù),常用有:求和sum()、記錄數(shù)count(*)、平均值avg()、最大值max()、最小值min();

[where condition] 就是上面講的條件查詢;

[group by field1,field2,...,fieldn [with rollup]]?

  group by 關(guān)鍵字表示對(duì)field字段進(jìn)行分類聚合;

  with rollup 關(guān)鍵字表示是否對(duì)分類聚合后的結(jié)果進(jìn)行再匯總

[having condition] 對(duì)分類聚合后的查詢結(jié)果集進(jìn)行條件的過(guò)濾

where 和 having 的區(qū)別:

  1. where 是分組前的條件過(guò)濾;having 是分組后的條件過(guò)濾。
  2. where 是用原表列名做條件過(guò)濾;having 是用查詢結(jié)果集列名做條件過(guò)濾。

? ? 優(yōu)先選擇where 條件過(guò)濾,這樣可以減少結(jié)果集,進(jìn)而提高分類聚合的效率。

中括號(hào)"[]"代表可選的意思,也就是說(shuō)group by 前面的[where condition] 可有可無(wú),后面的[with rollup] 和 [having condition] 也是可有可無(wú)。

group by 和distinct 的區(qū)別:? ? group by 是對(duì)指定列進(jìn)行分組;distinct 是對(duì)查詢結(jié)果進(jìn)行去重。

加入where 和 having的例子:

列名為avg(stu_age) 看著有點(diǎn)怪怪,給他取個(gè)別名就一目了然:

5.4.排序查詢

--最簡(jiǎn)單的排序查詢:
select * from tablename order by field;
--完整語(yǔ)法:
select [field1,field2,...,fieldn] fun_name from tablename
 [where condition]
 [group by field1,field2,...,fieldn [with rollup]]
 [having condition]
 [order by field1 [desc|asc], field2 [desc|asc],...,fieldn [desc|asc]];
DESC 代表降序(從大到小);ASC 代表升序(從小到大),asc為默認(rèn)排序。也就是說(shuō)你只要記住desc 就可以了。碰巧的是desc 是查詢表設(shè)計(jì)的關(guān)鍵字,而且語(yǔ)法很簡(jiǎn)單:desc tablename;

單列排序:

多列排序:用符號(hào) “,” 隔開(kāi)即可

5.5.limit查詢

? 又稱為限制查詢、范圍查詢、分頁(yè)查詢

--最簡(jiǎn)單的limit查詢:offset_start和數(shù)組下標(biāo)一樣,從0開(kāi)始算
select * from tablename limit offset_start,row_count;
--完整語(yǔ)法:這條sql是單表查詢的完整版
select [field1,field2,...,fieldn] fun_name from tablename
 [where condition]
 [group by field1,field2,...,fieldn [with rollup]]
 [having condition]
 [order by field1 [desc|asc], field2 [desc|asc],...,fieldn [desc|asc]]
 [limit offset_start,row_count];

例子1:從第1條開(kāi)始,查詢兩條數(shù)據(jù)

例子2:從第2條開(kāi)始,查詢兩條數(shù)據(jù)

=========================

= 以上就是關(guān)于單表查詢的語(yǔ)法 =

= 以下則是關(guān)于兩表聯(lián)查的語(yǔ)法 =

=========================

5.6.連表查詢

在需要關(guān)聯(lián)多個(gè)表數(shù)據(jù)時(shí)使用。 學(xué)習(xí)左連接和內(nèi)連接即可。

左連接:選出左表所有的記錄,不管右表有沒(méi)有和它匹配;左表是主,關(guān)聯(lián)右表信息

select * from t1 left join t2 on t1.field1=t2.field2;

內(nèi)連接:僅選出兩張表中互相匹配的記錄,沒(méi)有匹配則結(jié)果為空

select * from t1 inner join t2 on t1.field1=t2.field2;

select * from t1,t2 where t1.field1=t2.field2;

5.7.子查詢

在需要另外一個(gè)查詢結(jié)果作為查詢條件時(shí)使用。子查詢用“()” 括起來(lái)。

如:查詢學(xué)生“張三”的成績(jī)

某些情況下,子查詢可以轉(zhuǎn)化為連表查詢。如上面的例子可以寫成連表查詢:

5.8.記錄聯(lián)合

?將兩個(gè)過(guò)多個(gè)表的查詢結(jié)果合并成結(jié)果集輸出。合并的條件是多個(gè)表的查詢結(jié)果字段數(shù)要相同,注意是查詢結(jié)果字段數(shù)不是表字段數(shù)。

select f1,f2,...,fn from t1

union/union all

select f1,f2,...,fn from t2

...

union/union all

select f1,f2,...,fn from tn

查詢結(jié)果字段數(shù)不等,則報(bào)錯(cuò)

固定查詢結(jié)果集字段數(shù)

5.9.select語(yǔ)句的執(zhí)行順序

自行證明該執(zhí)行順序是否正確,也算是對(duì)前面所學(xué)知識(shí)的一個(gè)鞏固。?

(7)? SELECT?

(8)? DISTINCT <select_list>

(1)? FROM <left_table>

(3)? <join_type> JOIN <right_table>

(2)? ON <join_condition>

(4)? WHERE <where_condition>

(5)? GROUP BY <group_by_list>

(6)? HAVING <having_condition>

(9)? ORDER BY <order_by_condition>

(10) LIMIT <limit_number>?

6.總結(jié)

到此為止,關(guān)于日常操作最為頻繁的表數(shù)據(jù)的插入(insert)、更新(update)、刪除(delete)和查詢(select)語(yǔ)句就講完了。最為繁雜的查詢語(yǔ)句,又名為DQL語(yǔ)句,是DML語(yǔ)句中的重點(diǎn)。

到此這篇關(guān)于MySQL基礎(chǔ)教程之DML語(yǔ)句的文章就介紹到這了,更多相關(guān)MySQL基礎(chǔ)之DML語(yǔ)句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql使用from與join兩表查詢的區(qū)別總結(jié)

    mysql使用from與join兩表查詢的區(qū)別總結(jié)

    這篇文章主要給大家介紹了關(guān)于mysql使用from與join兩表查詢的區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • mysql優(yōu)化的重要參數(shù) key_buffer_size table_cache

    mysql優(yōu)化的重要參數(shù) key_buffer_size table_cache

    MySQL服務(wù)器端的參數(shù)有很多,但是對(duì)于大多數(shù)初學(xué)者來(lái)說(shuō),眾多的參數(shù)往往使得我們不知所措,但是哪些參數(shù)是需要我們調(diào)整的,哪些對(duì)服務(wù)器的性能影響最大呢
    2016-05-05
  • centos下mysql主從同步快速設(shè)置步驟分享

    centos下mysql主從同步快速設(shè)置步驟分享

    記錄一個(gè)比較簡(jiǎn)便的mysql的主從同步設(shè)置步驟,方便日后使用。
    2012-06-06
  • 關(guān)于MySQL報(bào)警的一次分析處理詳解

    關(guān)于MySQL報(bào)警的一次分析處理詳解

    這篇文章主要給大家介紹了關(guān)于MySQL報(bào)警的一次分析處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL之Explain詳解

    MySQL之Explain詳解

    使用Explain關(guān)鍵字可以模擬優(yōu)化器執(zhí)行SQL語(yǔ)句,分析你的查詢語(yǔ)句或是結(jié)構(gòu)的性能瓶頸,感興趣的的同學(xué)可以參考閱讀
    2023-04-04
  • MySQL聯(lián)結(jié)表介紹以及使用詳解

    MySQL聯(lián)結(jié)表介紹以及使用詳解

    這篇文章主要給大家介紹了關(guān)于MySQL聯(lián)結(jié)表介紹及使用的相關(guān)資料,聯(lián)結(jié)SQL最強(qiáng)大的功能之一就是能在數(shù)據(jù)檢索查詢的執(zhí)行中聯(lián)結(jié)表,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • MySQL8.0修改密碼的正確姿勢(shì)分享

    MySQL8.0修改密碼的正確姿勢(shì)分享

    如果當(dāng)初設(shè)置了一個(gè)很復(fù)雜的數(shù)據(jù)庫(kù)密碼,是很可能忘記的,下面這篇文章主要給大家介紹了關(guān)于MySQL8.0修改密碼的正確姿勢(shì),需要的朋友可以參考下
    2022-03-03
  • mysql函數(shù)group_concat()返回結(jié)果不全問(wèn)題

    mysql函數(shù)group_concat()返回結(jié)果不全問(wèn)題

    文章介紹了MySQL中使用group_concat()函數(shù)拼接返回字段時(shí)遇到的字符長(zhǎng)度問(wèn)題,分析了問(wèn)題原因,并提供了兩種解決方法:臨時(shí)修改group_concat_max_len配置和永久修改MySQL配置文件
    2024-11-11
  • 探究MySQL中索引和提交頻率對(duì)InnoDB表寫入速度的影響

    探究MySQL中索引和提交頻率對(duì)InnoDB表寫入速度的影響

    這篇文章主要介紹了MySQL中索引和提交頻率對(duì)InnoDB表寫入速度的影響,作者通過(guò)實(shí)際測(cè)試運(yùn)行時(shí)間的對(duì)比來(lái)驗(yàn)證,需要的朋友可以參考下
    2015-05-05
  • 解決Mysql多行子查詢的使用及空值問(wèn)題

    解決Mysql多行子查詢的使用及空值問(wèn)題

    所謂多行子查詢,是指執(zhí)行查詢語(yǔ)句獲得的結(jié)果集中返回了多行數(shù)據(jù)的子查詢,今天通過(guò)本文給大家分享Mysql多行子查詢的使用及空值問(wèn)題,感興趣的朋友一起看看吧
    2022-01-01

最新評(píng)論

哈巴河县| 澜沧| 大名县| 大冶市| 郑州市| 攀枝花市| 本溪| 林周县| 麦盖提县| 惠来县| 恩平市| 通许县| 客服| 武安市| 古浪县| 梧州市| 九江市| 黄陵县| 全椒县| 张家口市| 华宁县| 开封市| 建水县| 光泽县| 平谷区| 普安县| 长春市| 阆中市| 邯郸市| 临沂市| 岳普湖县| 济南市| 平凉市| 高阳县| 凤凰县| 吴旗县| 彰武县| 许昌市| 安宁市| 治多县| 响水县|