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

MySQL表操作及查詢功能詳解

 更新時(shí)間:2025年10月24日 10:27:44   作者:很楠不愛  
在MySQL中,表操作主要包括創(chuàng)建表、修改表結(jié)構(gòu)、刪除表以及查詢表數(shù)據(jù)等,本文給大家介紹MySQL表操作及查詢功能,感興趣的朋友跟隨小編一起看看吧

一.表操作

MySQL的操作中,一些專用的詞無(wú)論是大寫還是小寫都是可以通過(guò)的。 

1.插入數(shù)據(jù)

INSERT [INTO] table_name (列名稱...) VALUES (列數(shù)據(jù)...), (列數(shù)據(jù)...);

"[]"表示可有可無(wú),插入時(shí),如果不指定要插入的列,則表示默認(rèn)全部列都要插入數(shù)據(jù),插入數(shù)據(jù)的順序必須和列的順序一致。

如果插入單行數(shù)據(jù),則只需一個(gè)"()",如果想要多行插入,則可以同時(shí)追加多個(gè)"()"。

2.更新數(shù)據(jù)

此外,由于主鍵或者唯一鍵對(duì)應(yīng)的值已經(jīng)存在而導(dǎo)致插入失敗,則可以更新數(shù)據(jù):

INSERT INTO 表名稱 (列名稱...) VALUES (列數(shù)據(jù)...) ON DUPLICATE KEY UPDATE 列名稱=新數(shù)據(jù)...;

除這條語(yǔ)句之外,還有一條語(yǔ)句,名為替換,也可以解決主鍵或唯一鍵沖突問(wèn)題:

 REPLACE INTO 表名稱 (列名稱...) VALUES (列數(shù)據(jù)...);

如果沒(méi)有發(fā)生沖突,就相當(dāng)于直接插入,如果發(fā)生沖突,則刪除原有數(shù)據(jù),重新插入新數(shù)據(jù)。

二.查詢

1.查找數(shù)據(jù)

(1)整體查找

全列查詢

select * from 表名稱;

指定列查詢

 select 列名稱... from 表名稱;

 查詢字段表達(dá)式

 select 列名稱... 表達(dá)式 from 表名稱;

 例如:

SELECT id, name, 10 FROM exam_result;
+---+--------+----+
 | id | name | 10 |
+---+--------+----+
| 1 |   張三  | 10 |
| 2 |   李四  | 10 |
| 3 |   王五  | 10 |
| 4 |   趙六  | 10 |

如果表達(dá)式與字段無(wú)關(guān),則會(huì)生成一列表達(dá)式數(shù)據(jù)。

SELECT id, name, english + 10 FROM exam_result;
+---+---------+-----------------+
| id | name | english + 10|
+---+---------+-----------------+
| 1 |  張三    |         66        |
| 2 |  李四    |         87        |
| 3 |  王五    |        100       |
| 4 |  趙六    |         77        |

表達(dá)式與字段有關(guān):生成表達(dá)式為english + 10即將學(xué)生的英語(yǔ)成績(jī)+10分的列并顯示。

SELECT id, name, chinese + math + english FROM exam_result;

 還有如上表達(dá)式,表示顯示學(xué)生漢數(shù)英的成績(jī)之和。

SELECT id, name, chinese + math + english 總分 FROM exam_result;

還可以給表達(dá)式指定別名,即在表達(dá)式后追加別名。 

SELECT DISTINCT 字段 FROM 表名稱;

 通過(guò)DISTINCT,可以將查詢結(jié)果去重。 

(2)定向查找

上邊的查找操作,都是對(duì)一整個(gè)列的數(shù)據(jù)進(jìn)行查找,如果我們想要對(duì)列中的特定數(shù)據(jù)進(jìn)行查找,則可以通過(guò)WHERE 條件。

比較運(yùn)算符:

>, >=, <, <= :大于,大于等于,小于,小于等于

= :等于,NULL 不安全,例如 NULL = NULL 的結(jié)果是 NULL

<=> :等于,NULL 安全,例如 NULL <=> NULL 的結(jié)果是 TRUE(1)

!=, <> :不等于

BETWEEN a0 AND a1 :范圍匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)

IN (option, ...) :如果是 option 中的任意一個(gè),返回 TRUE(1)

IS NULL :是 NULL

IS NOT NULL :不是 NULL

LIKE :模糊匹配。% 表示任意多個(gè)(包括 0 個(gè))字符;_ 表示任意一個(gè)字符

邏輯運(yùn)算符:

AND :多個(gè)條件必須都為 TRUE(1),結(jié)果才是 TRUE(1)

OR :任意一個(gè)條件為 TRUE(1), 結(jié)果為 TRUE(1)

NOT :條件為 TRUE(1),結(jié)果為 FALSE(0)

where基本使用 

 select 字段... from 表名稱 where 條件;

 例如,查找一張成績(jī)表中,英語(yǔ)不及格的學(xué)生名單:

SELECT name, english FROM exam_result WHERE english < 60;

多個(gè)條件可以通過(guò)邏輯運(yùn)算符相互組合。 

如果現(xiàn)在要查找一個(gè)同學(xué),但是不記得他的全名,只記得他的姓為孫,該怎么找到他呢?

SELECT name FROM exam_result WHERE name LIKE '孫%';
SELECT name FROM exam_result WHERE name LIKE '孫_';

通過(guò) "LIKE" 條件, 其中 '%' 表示該同學(xué)的名字可以是任意數(shù)量的字符'_' 表示該同學(xué)的名字只有一個(gè)字。

值得注意的是,在MySQL中,null 、0、和空字符' ',三者互不相干,執(zhí)行相關(guān)的查詢時(shí)應(yīng)注意。

2.排序數(shù)據(jù)

對(duì)數(shù)據(jù)進(jìn)行排序通常是查找到對(duì)應(yīng)數(shù)據(jù)后的操作。

select 列名稱... from 表名稱 ORDER BY 列名稱 排序方式;
-- ASC 為升序(從小到大)
-- DESC 為降序(從大到?。?
-- 如果不指明排序方式,則默認(rèn)為 ASC

當(dāng)數(shù)據(jù)中有null時(shí),null視為比任何值都小。 

此外,當(dāng)出現(xiàn)多字段排序,比如:查詢同學(xué)各門成績(jī),依次按 數(shù)學(xué)降序,英語(yǔ)升序,語(yǔ)文升序的方式顯示,查詢后的結(jié)果并不是說(shuō),就是按照上述排序方式將單獨(dú)的科目進(jìn)行排序,而是按照書寫優(yōu)先級(jí),先將整體數(shù)據(jù)按照數(shù)學(xué)降序排序,如果出現(xiàn)數(shù)學(xué)成績(jī)相等,再將其后的英語(yǔ)成績(jī)按照升序排序,如果英語(yǔ)成績(jī)也相等,則最后排序語(yǔ)文成績(jī)。

3.篩選數(shù)據(jù)

當(dāng)數(shù)據(jù)量過(guò)大時(shí),如果直接查詢,可能會(huì)引起諸多不便,比如直接就顯示到了數(shù)據(jù)的末尾幾行。

因此可以通過(guò) LIMIT 按行篩選數(shù)據(jù)的方式來(lái)查詢對(duì)應(yīng)行的數(shù)據(jù)信息:

起始下標(biāo)為 0
從 0 開始,篩選 n 條結(jié)果
SELECT 列名稱... FROM 表名稱 LIMIT n;
從 s 開始,篩選 n 條結(jié)果
SELECT 列名稱... FROM 表名稱 LIMIT s, n;
從 s 開始,篩選 n 條結(jié)果,比第二種用法更明確,建議使用
SELECT 列名稱... FROM 表名稱 LIMIT n OFFSET s;

因此當(dāng)我們對(duì)未知表進(jìn)行查詢時(shí),最好加一條 LIMIT 1,避免因?yàn)楸碇袛?shù)據(jù)過(guò)大,查詢?nèi)頂?shù)據(jù)導(dǎo)致數(shù)據(jù)庫(kù)卡死。

4.更新數(shù)據(jù)

數(shù)據(jù)更新必須配合where使用,因?yàn)槟悴豢赡軐⒁徽械臄?shù)據(jù)全部更新,一般都是對(duì)特定行的數(shù)據(jù)進(jìn)行更新。

UPDATE 表名稱 SET 列名稱 = 新數(shù)據(jù) [, column = expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...]

可以同時(shí)對(duì)某一行的多個(gè)數(shù)據(jù)進(jìn)行更新,也可以對(duì)更新后的數(shù)據(jù)進(jìn)行排序篩選等操作

值得注意的是,當(dāng)需要對(duì)某數(shù)據(jù)進(jìn)行加減運(yùn)算時(shí),在MySQL中不支持 "+=" 等操作,必須采用    "新數(shù)據(jù) = 原數(shù)據(jù) + 改變值" 的方式。 

5.刪除數(shù)據(jù)

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...] 

刪除數(shù)據(jù)時(shí),可以使用where來(lái)指定要?jiǎng)h除的數(shù)據(jù),如果不使用where,則默認(rèn)為刪除整張表的全部數(shù)據(jù)。 

 值得注意的是,刪除數(shù)據(jù)不會(huì)影響表的各種結(jié)構(gòu)定義,就僅僅是刪除插入的數(shù)據(jù),諸如表字段的類型,以及表的各種約束條件等都不會(huì)受到影響。

特別要注意的是,delete刪除數(shù)據(jù),不會(huì)對(duì)自增長(zhǎng)AUTO_INCREMENT產(chǎn)生影響,比如說(shuō)原本自增長(zhǎng)已經(jīng)到了5,此時(shí)刪除全部數(shù)據(jù),在進(jìn)行插入,自增長(zhǎng)依然會(huì)為6。

6.截?cái)啾?/h3>
TRUNCATE [TABLE] table_name;

截?cái)啾韙runcate,同樣是清空表的全部數(shù)據(jù),與delete不同的是,它會(huì)將自增長(zhǎng)AUTO_INCREMEN同樣清除,從AUTO_INCREMEN的初始值從頭開始增長(zhǎng)。

7.聚合函數(shù)

COUNT([DISTINCT] expr) :返回查詢到的數(shù)據(jù)的 數(shù)量

SUM([DISTINCT] expr) :返回查詢到的數(shù)據(jù)的 總和,不是數(shù)字沒(méi)有意義

AVG([DISTINCT] expr) :返回查詢到的數(shù)據(jù)的 平均值,不是數(shù)字沒(méi)有意義

MAX([DISTINCT] expr) :返回查詢到的數(shù)據(jù)的 最大值,不是數(shù)字沒(méi)有意義

MIN([DISTINCT] expr) :返回查詢到的數(shù)據(jù)的 最小值,不是數(shù)字沒(méi)有意義

聚合函數(shù)可以選擇對(duì)去重后的數(shù)據(jù)操作,通常和數(shù)據(jù)查找共同使用,例如查找某表總共有多少行

SELECT COUNT(*) FROM 表名稱;

使用 * 做統(tǒng)計(jì),不受 NULL 影響。

8.數(shù)據(jù)分組

select中使用group by 子句可以對(duì)指定列進(jìn)行分組查詢。

select 列名稱... from table group by 列名稱;

所謂分組查詢,就是對(duì)表中某一列中的相同數(shù)據(jù)組合,例如,有一張完整的學(xué)生表數(shù)據(jù),其中包含名稱為班級(jí)號(hào)的字段,現(xiàn)在要查詢每個(gè)班級(jí)分別有多少學(xué)生,就可以通過(guò)分組查詢:

select class_id count(*) from student group by class_id;

havinggroup by配合使用,對(duì)group by結(jié)果進(jìn)行過(guò)濾,作用類似用where:

select 列名稱... from table group by 列名稱 having 過(guò)濾條件;

到此這篇關(guān)于MySQL表操作及查詢功能詳解的文章就介紹到這了,更多相關(guān)mysql表查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql連接無(wú)效(invalid connection)問(wèn)題及解決

    Mysql連接無(wú)效(invalid connection)問(wèn)題及解決

    這篇文章主要介紹了Mysql連接無(wú)效(invalid connection)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • MySQL 5.6 中 TIMESTAMP有那些變化

    MySQL 5.6 中 TIMESTAMP有那些變化

    前段時(shí)間,系統(tǒng)MySQL從5.5升級(jí)到了5.6,系統(tǒng)出現(xiàn)了大量的異常。大部分異常引起原因是由于TIMESTAMP的行為發(fā)生了變化,下面通過(guò)此篇文章給大家詳解MySQL 5.6 中 TIMESTAMP有那些變化,需要的朋友可以參考下
    2015-08-08
  • mysql中獲取一天、一周、一月時(shí)間數(shù)據(jù)的各種sql語(yǔ)句寫法

    mysql中獲取一天、一周、一月時(shí)間數(shù)據(jù)的各種sql語(yǔ)句寫法

    今天抽時(shí)間整理了一篇mysql中與天、周、月有關(guān)的時(shí)間數(shù)據(jù)的sql語(yǔ)句的各種寫法,部分是收集資料,全部手工整理,自己學(xué)習(xí)的同時(shí),分享給大家,并首先默認(rèn)創(chuàng)建一個(gè)表、插入2條數(shù)據(jù),便于部分?jǐn)?shù)據(jù)的測(cè)試,其中部分名詞或函數(shù)進(jìn)行了解釋說(shuō)明。直入主題
    2014-05-05
  • Mysql使用union合并查詢結(jié)果的實(shí)現(xiàn)

    Mysql使用union合并查詢結(jié)果的實(shí)現(xiàn)

    本文詳細(xì)介紹了MySQL中UNION操作符的使用方法,UNION用于合并多個(gè)SELECT語(yǔ)句的結(jié)果集,要求各查詢列數(shù)相同、數(shù)據(jù)類型兼容且順序一致,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-08-08
  • MySQL實(shí)現(xiàn)免密登錄的三種配置方式

    MySQL實(shí)現(xiàn)免密登錄的三種配置方式

    我們登錄MySQL的時(shí)候有時(shí)候會(huì)忘記root密碼,這時(shí)我們需要免密登錄,所以這篇文章給大家介紹了MySQL免密登錄的三種方式,文章通過(guò)是示例代碼給出了詳細(xì)的配置方案,需要的朋友可以參考下
    2024-03-03
  • MySQL慢查詢?nèi)罩局械腖ock_time由來(lái)解析

    MySQL慢查詢?nèi)罩局械腖ock_time由來(lái)解析

    這篇文章主要為大家介紹了慢查詢?nèi)罩局蠰ock_time的由來(lái)解析,以及Lock_time?包含哪些鎖等待時(shí)間、以及是怎么計(jì)算得到的,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-06-06
  • linux下講解MySQL安裝與登錄方法

    linux下講解MySQL安裝與登錄方法

    MySQL安裝文件已被廣泛應(yīng)用但是也在不斷的更新,這里介紹MySQL安裝文件設(shè)置使用,幫助大家安裝更新MySQL安裝文件系統(tǒng)。
    2010-11-11
  • MySQL創(chuàng)建表時(shí)字符串的默認(rèn)值問(wèn)題

    MySQL創(chuàng)建表時(shí)字符串的默認(rèn)值問(wèn)題

    這篇文章主要介紹了MySQL創(chuàng)建表時(shí)字符串的默認(rèn)值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • log引起的mysql不能啟動(dòng)的解決方法

    log引起的mysql不能啟動(dòng)的解決方法

    今天服務(wù)器掛了原來(lái)服務(wù)器的硬盤進(jìn)行了數(shù)據(jù)轉(zhuǎn)移 弄到mysql的時(shí)候發(fā)現(xiàn)里面log日志文件高達(dá)900MB
    2008-07-07
  • mysql中g(shù)roup by與having合用注意事項(xiàng)分享

    mysql中g(shù)roup by與having合用注意事項(xiàng)分享

    在mysql中g(shù)roup by分組查詢我們經(jīng)常會(huì)用到,并且還同時(shí)會(huì)與having合用,下面我介紹group by用法與having合用注意事項(xiàng),希望此教程對(duì)各位朋友有所幫助
    2013-10-10

最新評(píng)論

青神县| 孟连| 泰安市| 大埔区| 昭通市| 仁寿县| 榆社县| 龙里县| 林州市| 恭城| 邹平县| 正宁县| 郴州市| 红桥区| 博罗县| 大名县| 鲁山县| 城口县| 土默特右旗| 乌拉特中旗| 射洪县| 北京市| 松原市| 汤阴县| 鹰潭市| 临桂县| 织金县| 屯昌县| 元阳县| 梁河县| 英山县| 苍山县| 堆龙德庆县| 伽师县| 太白县| 武宁县| 津市市| 阿拉善左旗| 满城县| 大理市| 额尔古纳市|