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

MySQL中的表操作及查詢方式

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

一.表操作

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

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

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

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

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

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

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

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

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

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

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

二.查詢

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

(1)整體查找

全列查詢

select * from 表名稱;

指定列查詢

select 列名稱…from 表名稱;

查詢字段表達式

select 列名稱… 表達式 from 表名稱;

例如:

SELECT id, name, 10 FROM exam_result;

±–±-------±—+

| id | name | 10 |

±–±-------±—+

| 1 | 張三 | 10 |

| 2 | 李四 | 10 |

| 3 | 王五 | 10 |

| 4 | 趙六 | 10 |

如果表達式與字段無關,則會生成一列表達式數(shù)據(jù)。

SELECT id, name, english + 10 FROM exam_result;

±–±--------±----------------+

| id | name | english + 10|

±–±--------±----------------+

| 1 |張三 | 66 |

| 2 |李四 | 87 |

| 3 |王五 | 100 |

| 4 |趙六 | 77 |

表達式與字段有關:生成表達式為english + 10即將學生的英語成績+10分的列并顯示。

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

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

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

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

SELECT DISTINCT 字段 FROM 表名稱;

通過DISTINCT,可以將查詢結果去重。

(2)定向查找

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

比較運算符:

  • >, >=, <, <= :大于,大于等于,小于,小于等于
  • = :等于,NULL 不安全,例如 NULL = NULL 的結果是 NULL
  • <=> :等于,NULL 安全,例如 NULL <=> NULL 的結果是 TRUE(1)
  • !=, <> :不等于
  • BETWEEN a0 AND a1 :范圍匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
  • IN (option, …) :如果是 option 中的任意一個,返回 TRUE(1)
  • IS NULL :是 NULL
  • IS NOT NULL :不是 NULL
  • LIKE :模糊匹配。% 表示任意多個(包括 0 個)字符;_ 表示任意一個字符

邏輯運算符:

  • AND :多個條件必須都為 TRUE(1),結果才是 TRUE(1)
  • OR :任意一個條件為 TRUE(1), 結果為 TRUE(1)
  • NOT :條件為 TRUE(1),結果為 FALSE(0)

where基本使用

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

例如,查找一張成績表中,英語不及格的學生名單:

SELECT name, english FROM exam_result WHERE english < 60;

多個條件可以通過邏輯運算符相互組合。

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

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

通過 “LIKE” 條件, 其中 ‘%’ 表示該同學的名字可以是任意數(shù)量的字符,‘_’ 表示該同學的名字只有一個字。

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

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

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

select 列名稱… from 表名稱 ORDER BY 列名稱 排序方式;

  • – ASC 為升序(從小到大)
  • – DESC 為降序(從大到小)
  • – 如果不指明排序方式,則默認為 ASC

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

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

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

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

因此可以通過LIMIT 按行篩選數(shù)據(jù)的方式來查詢對應行的數(shù)據(jù)信息:

  • 起始下標為 0
  • 從 0 開始,篩選 n 條結果
  • SELECT 列名稱…FROM 表名稱LIMIT n;
  • 從 s 開始,篩選 n 條結果
  • SELECT 列名稱… FROM 表名稱LIMIT s, n;
  • 從 s 開始,篩選 n 條結果,比第二種用法更明確,建議使用
  • SELECT 列名稱… FROM 表名稱LIMIT n OFFSET s;

因此當我們對未知表進行查詢時,最好加一條 LIMIT 1,避免因為表中數(shù)據(jù)過大,查詢全表數(shù)據(jù)導致數(shù)據(jù)庫卡死。

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

數(shù)據(jù)更新必須配合where使用,因為你不可能將一整列的數(shù)據(jù)全部更新,一般都是對特定行的數(shù)據(jù)進行更新。

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

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

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

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

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

刪除數(shù)據(jù)時,可以使用where來指定要刪除的數(shù)據(jù),如果不使用where,則默認為刪除整張表的全部數(shù)據(jù)

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

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

6.截斷表

TRUNCATE [TABLE] table_name;

截斷表truncate,同樣是清空表的全部數(shù)據(jù),與delete不同的是,它會將自增長****AUTO_INCREMEN同樣清除,從AUTO_INCREMEN的初始值從頭開始增長。

7.聚合函數(shù)

  • COUNT([DISTINCT] expr) :返回查詢到的數(shù)據(jù)的 數(shù)量
  • SUM([DISTINCT] expr) :返回查詢到的數(shù)據(jù)的 總和,不是數(shù)字沒有意義
  • AVG([DISTINCT] expr) :返回查詢到的數(shù)據(jù)的 平均值,不是數(shù)字沒有意義
  • MAX([DISTINCT] expr) :返回查詢到的數(shù)據(jù)的 最大值,不是數(shù)字沒有意義
  • MIN([DISTINCT] expr) :返回查詢到的數(shù)據(jù)的 最小值,不是數(shù)字沒有意義

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

SELECT COUNT(*) FROM 表名稱;

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

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

在select中使用group by 子句可以對指定列進行分組查詢。

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

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

select class_id count(*)from studentgroup by class_id;

having和group by配合使用,對group by結果進行過濾,作用類似用where:

select 列名稱… from table group by 列名稱 having 過濾條件;

總結

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

相關文章

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

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

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

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

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

    Mysql中通用表達式WITH?AS語句的使用實例代碼

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

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

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

    Mysql Explain 詳細介紹

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

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

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

    mysql主從同步快速設置方法

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

    一個單引號引發(fā)的MYSQL性能問題分析

    剛剛我們說過了,生活中難免會有一些不如意,比如,我們用一個字符串類型的字段來作為主鍵,表面上,這太不如意了,然而,事實也證明這是有用的。
    2011-03-03
  • 詳解MySQL的慢查詢日志和錯誤日志

    詳解MySQL的慢查詢日志和錯誤日志

    這篇文章主要詳細介紹了MySQL的慢查詢日志和錯誤日志,文中通過代碼示例講解的非常詳細,對大家學習和了解MySQL的慢查詢日志和錯誤日志有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • mysql中的7種日志小結

    mysql中的7種日志小結

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

最新評論

且末县| 辽阳县| 千阳县| 黄冈市| 织金县| 辽阳市| 新密市| 南昌县| 阜新市| 莎车县| 东安县| 高密市| 盐城市| 象州县| 翼城县| 龙里县| 文水县| 牙克石市| 威远县| 康定县| 淳安县| 亚东县| 手游| 华容县| 松滋市| 屏山县| 工布江达县| 汶上县| 佛山市| 兴宁市| 东丽区| 志丹县| 平利县| 永清县| 广河县| 蒙自县| 晋江市| 汝南县| 常熟市| 喀喇| 新晃|