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

MySQL中的表操作及查詢方式

 更新時(shí)間:2025年12月27日 14:40:59   作者:百***5588  
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)中常用的表操作和查詢語(yǔ)句,包括插入、更新、刪除、查詢、排序、篩選等操作

一.表操作

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 為降序(從大到?。?/li>
  • – 如果不指明排序方式,則默認(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 studentgroup by class_id;

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

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

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL數(shù)據(jù)的讀寫分離之maxscale的使用方式

    MySQL數(shù)據(jù)的讀寫分離之maxscale的使用方式

    這篇文章主要介紹了MySQL數(shù)據(jù)的讀寫分離之maxscale的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Mysql8.0使用窗口函數(shù)解決排序問(wèn)題

    Mysql8.0使用窗口函數(shù)解決排序問(wèn)題

    窗口的概念非常重要,它可以理解為記錄集合,窗口函數(shù)也就是在滿足某種條件的記錄集合上執(zhí)行的特殊函數(shù)。這篇文章主要介紹了Mysql8.0使用窗口函數(shù)解決排序問(wèn)題,需要的朋友可以參考下
    2020-01-01
  • Mysql中通用表達(dá)式WITH?AS語(yǔ)句的使用實(shí)例代碼

    Mysql中通用表達(dá)式WITH?AS語(yǔ)句的使用實(shí)例代碼

    with as也叫子查詢,用來(lái)定義一個(gè)sql片段,且該片段會(huì)被整個(gè)sql語(yǔ)句反復(fù)使用很多次,這個(gè)sql片段就相當(dāng)于是一個(gè)公用臨時(shí)表,下面這篇文章主要給大家介紹了關(guān)于Mysql中通用表達(dá)式WITH?AS語(yǔ)句使用的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • MySQL數(shù)據(jù)庫(kù)卸載以及刪除所有有關(guān)信息詳細(xì)步驟

    MySQL數(shù)據(jù)庫(kù)卸載以及刪除所有有關(guān)信息詳細(xì)步驟

    在MySQL中數(shù)據(jù)刪除操作不僅僅是簡(jiǎn)單地將某一個(gè)或多個(gè)行刪除,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)卸載以及刪除所有有關(guān)信息的詳細(xì)步驟,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Mysql Explain 詳細(xì)介紹

    Mysql Explain 詳細(xì)介紹

    這篇文章主要介紹了Mysql Explain 詳細(xì)介紹的相關(guān)資料,這里對(duì)Mysql Explain 的語(yǔ)法,屬性,以及如何使用,做了全面介紹,需要的朋友可以參考下
    2016-11-11
  • MySQL刪除表的三種方式(小結(jié))

    MySQL刪除表的三種方式(小結(jié))

    這篇文章主要介紹了MySQL刪除表的三種方式(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • mysql主從同步快速設(shè)置方法

    mysql主從同步快速設(shè)置方法

    記錄一個(gè)比較簡(jiǎn)便的mysql的主從同步設(shè)置步驟,方便日后使用。
    2010-12-12
  • 一個(gè)單引號(hào)引發(fā)的MYSQL性能問(wèn)題分析

    一個(gè)單引號(hào)引發(fā)的MYSQL性能問(wèn)題分析

    剛剛我們說(shuō)過(guò)了,生活中難免會(huì)有一些不如意,比如,我們用一個(gè)字符串類型的字段來(lái)作為主鍵,表面上,這太不如意了,然而,事實(shí)也證明這是有用的。
    2011-03-03
  • 詳解MySQL的慢查詢?nèi)罩竞湾e(cuò)誤日志

    詳解MySQL的慢查詢?nèi)罩竞湾e(cuò)誤日志

    這篇文章主要詳細(xì)介紹了MySQL的慢查詢?nèi)罩竞湾e(cuò)誤日志,文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家學(xué)習(xí)和了解MySQL的慢查詢?nèi)罩竞湾e(cuò)誤日志有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • mysql中的7種日志小結(jié)

    mysql中的7種日志小結(jié)

    這篇文章主要介紹了mysql中的7種日志小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論

阿荣旗| 日喀则市| 墨脱县| 吴旗县| 綦江县| 进贤县| 禹州市| 翁源县| 江川县| 苍南县| 来宾市| 贡山| 阳西县| 黑龙江省| 二连浩特市| 奉贤区| 勐海县| 犍为县| 新晃| 教育| 图木舒克市| 广饶县| 韶关市| 芜湖县| 凤台县| 武山县| 宁夏| 浙江省| 宜都市| 西乌珠穆沁旗| 满洲里市| 涡阳县| 连山| 威海市| 介休市| 东兰县| 乐东| 堆龙德庆县| 卢龙县| 星子县| 郧西县|