一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - Mysql - MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

2022-01-20 18:19吞吞吐吐大魔王 Mysql

這篇文章主要介紹了MySQL 數(shù)據(jù)庫中數(shù)據(jù)表的基本操作,下面文章會(huì)從創(chuàng)建表的基本語法伊利舉例說明概括全篇數(shù)據(jù)表的基本操作詳情,需要的小伙伴可以參考一下文章的具體內(nèi)容,希望對你有所幫助

前言:

  • 庫名、表名、列名等等不能和關(guān)鍵字相同,如果一定要用關(guān)鍵字為名,則可以通過反引號(hào)把名字引起來
  • 對表進(jìn)行操作之前,要先選中數(shù)據(jù)庫

MySQL 中支持以下幾種注釋:

  • -- 注釋內(nèi)容:單行注釋,要注意 “–” 和注釋內(nèi)容之間需要有空格
  • #注釋內(nèi)容:單行注釋
  • /*注釋內(nèi)容*/:多行注釋

注意:字段或列的注釋可以用屬性 comment 來添加,例如在建表語句中使用

  • SQL 中單引號(hào)和雙引號(hào)都能表示字符串

1. 查看當(dāng)前數(shù)據(jù)庫中的表

語法:

show tables;

示例:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

2. 創(chuàng)建表

語法:

create table [if not exists] 表名(列名 列類型, 列名 列類型, ..., 列名 列類型);

示例:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

3. 查看指定表結(jié)構(gòu)

語法:

desc 表名;

注意:

desc 是 describe 的縮寫,也可以使用 describe 表名 來查看表結(jié)構(gòu)

示例:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

4. 刪除表

語法:

drop table [if exists] 表名 [, 表名 ...];

示例:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

注意:

刪表操作也是一個(gè)極具風(fēng)險(xiǎn)的操作,甚至要比刪庫操作還危險(xiǎn)。因?yàn)橐坏﹦h除,程序第一時(shí)間就掛了,還能及時(shí)搶救。但是刪表的話,程序不一定第一時(shí)間顯示異常,那么不能及時(shí)處理則會(huì)出現(xiàn)更大的風(fēng)險(xiǎn)。

5. 往表中新增數(shù)據(jù)

語法:

insert [into] 表名 [(列名1, 列名2, ...,列名n)] values (第一行的:值1, 值2, ...,值n) [, ..., (第n行的:值1, 值2, ...,值n)]

補(bǔ)充:

  • 上述語句列名不寫的話就代表全列都要進(jìn)行新增數(shù)據(jù)
  • 每行插入的值要與每行要插入的列名的順序一一對應(yīng)
  • 如果插入時(shí),某列沒有進(jìn)行插入,這個(gè)列就為默認(rèn)值 NULL

實(shí)例1: 全列插入一行

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

結(jié)果為:

id name
1 張三

示例2: 全列插入多行

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

結(jié)果為:

id name
1 張三
2 李四
3 王五

示例3: 指定某些列來插入MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

結(jié)果為:

id name
1 張三
2 李四
3 王五
4 NULL

注意: 一般認(rèn)為,一條語句,一次插入多個(gè)記錄,效率要比多個(gè)語句,每個(gè)語句插入一個(gè)記錄高的多

我們知道 MySQL 是一個(gè)“客戶端—服務(wù)器”結(jié)構(gòu)的程序。用戶在客戶端輸入的 SQL 都會(huì)通過網(wǎng)絡(luò)傳輸給服務(wù)器,然后由服務(wù)器進(jìn)行具體的操作。下面我們來分析下上述兩者的差別

一條語句,一次插入多個(gè)記錄:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

多個(gè)語句,每個(gè)語句插入一個(gè)記錄:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

又由于計(jì)算機(jī)對寄存器的訪問速度 >>> 對內(nèi)存的訪問速度 >>> 對IO設(shè)備(網(wǎng)絡(luò)上傳輸數(shù)據(jù),對于計(jì)算機(jī)來講叫做 IO 操作)的訪問的速度。因此,一般認(rèn)為,一條語句,一次插入多個(gè)記錄,效率要比多個(gè)語句,每個(gè)語句插入一個(gè)記錄高的多

6. 查找表中的數(shù)據(jù)

語法:

selstc [distinct] {* | 列名1 [, ..., 列名n]} from 表名 [where] [order by 列名1 [ASC | DESC] [, ...,[列名n [ASC | DESC]]] limit 

補(bǔ)充:

  • 查詢結(jié)果是一個(gè)類似于“表”的結(jié)構(gòu),但這個(gè)表是一個(gè)“臨時(shí)表”,僅僅是在內(nèi)存中存了一下,在打印完之后就沒了,不會(huì)持久化存儲(chǔ)。
  • select 不會(huì)修改磁盤數(shù)據(jù),尤其是不會(huì)影響到服務(wù)器的原始磁盤上的數(shù)據(jù)

為了方便下面介紹示例,所以已經(jīng)在數(shù)據(jù)庫中創(chuàng)建了如下的一個(gè)數(shù)據(jù)表:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

6.1 全列查詢

示例:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

注意:

在生產(chǎn)環(huán)境中,謹(jǐn)慎使用上述語句,因?yàn)榉祷氐臄?shù)據(jù)可能超大的。如果數(shù)據(jù)很大的話,就可能把服務(wù)器的網(wǎng)絡(luò)帶寬吃滿,從而導(dǎo)致服務(wù)器無法正常工作。

6.2 指定列查詢

示例:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

注意:

指定列的順序不需要按照定義表時(shí)的順序查詢

6.3 查詢字段為表達(dá)式

示例:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

注意:

  • 上述 chinese+math+english 就是一個(gè)表達(dá)式,結(jié)果就是它們的值相加。但是相加的值不受原來的列的數(shù)據(jù)類型限制
  • 表達(dá)式是進(jìn)行列與列之間的運(yùn)算,與行無關(guān)
  • 表達(dá)式計(jì)算不影響原來的數(shù)據(jù),查詢的結(jié)果是一個(gè)臨時(shí)表

6.4 給某個(gè)列指定常量

select 時(shí)給某個(gè)列指定一個(gè)常量,此時(shí)常量就會(huì)作為一個(gè)表達(dá)式在每行中出現(xiàn)

示例1:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例2:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

6.5 給查詢的表達(dá)式指定別名(as)

示例:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

6.6 去重查詢(distinct)

使用關(guān)鍵字 distinct 可以把某列相同的值的記錄給去重

示例1: 針對某個(gè)列去重

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例2: 針對多個(gè)列去重(要求: distinct 要放在所有列的前面,且當(dāng)每行的每列的值都有其他行的每列的值都相同時(shí),才視為是一個(gè)重復(fù)的記錄)

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

6.7 對查詢結(jié)果進(jìn)行排序(order by)

如果我們的查詢操作沒有加上 order by,此時(shí)查詢出來的結(jié)果順序是未定的。可以在查詢語句的表名后面加上 order by 要排序的列名/表達(dá)式 [asc | desc] 來進(jìn)行排序

補(bǔ)充:

  • asc:表示升序(由小到大),不加具體要排序的方式,默認(rèn)是 asc
  • desc:表示降序(由大到小),是 descending 的縮寫
  • 排序時(shí)如果有的值是 NULL,則視其為最小值
  • 支持對多個(gè)列進(jìn)行排序,按要排序的列的順序進(jìn)行優(yōu)先級(jí)排序,排序的列之間用逗號(hào)隔開
  • 我們知道很多排序的算法,例如:冒泡、選擇、插入、希爾、堆排、快排、歸并…而這其中歸并排序是最適合 MySQL 進(jìn)行數(shù)據(jù)排序的,因?yàn)?MySQL 的數(shù)據(jù)是存儲(chǔ)在硬盤上的,而對于硬盤的讀寫操作,開銷很大,為了減少讀寫次數(shù),所以要找到對于遍歷次數(shù)更少的排序方法。初次之外由于數(shù)據(jù)量可能很大,內(nèi)存一下不能存儲(chǔ)完全,就可以對每一段進(jìn)行排序再存入進(jìn)去。因此歸并排序更加適合 MySQL 對數(shù)據(jù)進(jìn)行排序

示例1: 對 math 進(jìn)行升序查詢

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例2: 對 math 進(jìn)行降序查找

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例3: 使用表達(dá)式或者別名進(jìn)行排序

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例4: 對多個(gè)列進(jìn)行綜合排序,要求在 math 最高的情況下,再排 chinese 更低的

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

6.8 條件查詢(where)

條件查詢適用很廣,不限于上述幾種用法基礎(chǔ)之上,例如 updatedelete 等語句也可以使用。它是通過 where 條件表達(dá)式 的形式,去進(jìn)行一個(gè)篩選,相當(dāng)于遍歷查詢結(jié)果,針對每一個(gè)記錄帶入到條件中,將符合條件的記錄保留下來,不符合的則淘汰。

條件表達(dá)式可以使用:比較運(yùn)算符或者邏輯運(yùn)算符

比較運(yùn)算符:

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

邏輯運(yùn)算符:

運(yùn)算符 說明
and 類似于 Java 中的 &&,多個(gè)條件都為 true 時(shí),結(jié)果才是 true
or 類似于 Java 中的 ||,只要有一個(gè)條件為 true,結(jié)果就為 true
not 類似于 Java 當(dāng)中的 ~,條件為 true,結(jié)果則為 false

like 常搭配的通配符:

通配符 說明
% 表示任意多個(gè)字符(包含0個(gè))
_ 表示任意一個(gè)字符

補(bǔ)充:

  • where 條件可以使用表達(dá)式,但不能不使用別名
  • and 的優(yōu)先級(jí)高于 or
  • and 符號(hào)也可以實(shí)現(xiàn) between 的功能,但是 between 其實(shí)就是 SQL 對這種范圍匹配的一種優(yōu)化
  • 通配符: 即可以使用一個(gè)字符去表示其它任意的一個(gè)或多個(gè)字符,用于模糊搜索
  • 模糊匹配涉及到字符串比較,所以當(dāng)前列里存的字符串比較長時(shí),性能就會(huì)大打折扣
  • 模糊匹配不一定要求列為字符串類型,例如數(shù)值類型也可以,但是語句里面要將 like 后面的模糊搜索的值加引號(hào)
  • SQL 中的條件相當(dāng)于是“過濾器”,而不是“邏輯分支”

示例1:查詢英語不及格的同學(xué)及其成績

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例2: 查詢總分小于200的同學(xué)及其總成績(下述方法不包含值為 NULL)

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例3: 查詢總分小于200的同學(xué)及其總成績,且包含值為 NULL 的同學(xué)(為了方便展示,這里我主動(dòng)新增了值為 null 的同學(xué)諸葛亮)

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例4: 查詢語文成績在80到90分之間的同學(xué)及其成績

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例5: 查詢數(shù)學(xué)成績是 98、73和65的同學(xué)和成績

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例6: 查找所有姓孫的同學(xué)

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例7: 查找所有名字以德結(jié)尾的同學(xué)

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例8: 查詢名字包含悟的同學(xué)

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例9: 查找所有姓孫且名字只有兩個(gè)字的同學(xué)

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例10: 查詢數(shù)學(xué)成績有90幾的同學(xué)及數(shù)學(xué)成績

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

6.9 分頁查詢(limit)

當(dāng)查詢結(jié)果很多時(shí),就可以將查詢結(jié)果分為很多頁。

應(yīng)用場景: 當(dāng)我們在百度某個(gè)東西時(shí),我們發(fā)現(xiàn),搜索的結(jié)果很多,為了不一下子得到這么多數(shù)據(jù),所以就用到了分頁查詢

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

注意: 當(dāng)要查詢的數(shù)據(jù)量很大時(shí),其實(shí)網(wǎng)絡(luò)開銷是很大的,包括:

  • 數(shù)據(jù)庫服務(wù)器磁盤 IO
  • 數(shù)據(jù)庫客戶端到數(shù)據(jù)庫服務(wù)器的網(wǎng)絡(luò) IO

因此通過分頁查詢就可以限制一次查詢的結(jié)果數(shù)目,來防止較大的網(wǎng)絡(luò)開銷

示例1:limit n 返回查詢不多于 n 行的結(jié)果(n 表示查詢結(jié)果的最大數(shù)目,默認(rèn)從行0開始)

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例2:limit m, n 返回查詢從行 m 開始,不多于 n 行的結(jié)果

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例3:limit n offset m 返回查詢從行 m 開始,不多于 n 行的結(jié)果

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

補(bǔ)充:

檢索出來的第一行為行0,而不是行1,上述示例2和示例3中的 m,代表行 m 或者 第 m+1 行

7. 修改表中的數(shù)據(jù)

語法:

update 表名 set 列名1 = 要修改的值 [, ..., 列名n = 要修改的值] [where 條件] [order by ...] [limit...];
1


補(bǔ)充:

  • update 會(huì)正真修改數(shù)據(jù)庫服務(wù)器硬盤的數(shù)據(jù)
  • update 中的 =,相當(dāng)于賦值
  • 如果數(shù)據(jù)結(jié)果為 NULL,在這個(gè)基礎(chǔ)上進(jìn)行運(yùn)算,結(jié)果還是 NULL

示例1: 將孫悟空的數(shù)學(xué)成績修改成80(修改一個(gè)列)

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例2: 將曹孟德的數(shù)學(xué)成績改為60,語文成績改為70(修改多個(gè)列)

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例3: 將總成績倒數(shù)前三的3位同學(xué)的數(shù)學(xué)成績加上10分

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例4: 將所有同學(xué)的語文成績減10

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

8. 刪除表中的數(shù)據(jù)

語法:

delete from 表名 [where ...] [order by ...] [limit ...]

示例1: 刪除孫悟空同學(xué)的考試成績

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

示例2: 刪除整張表數(shù)據(jù)

MySQL 數(shù)據(jù)庫中數(shù)據(jù)表超詳細(xì)的基本操作

注意:

  • 刪除操作需要很謹(jǐn)慎
  • delete from 刪表是一條一條刪除的,如果數(shù)據(jù)量很大,刪除的速度就很慢。相比之下,直接刪表速度更快

到此這篇關(guān)于MySQL 數(shù)據(jù)庫中數(shù)據(jù)表的基本操作的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)表的基本操作內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/weixin_51367845/article/details/121461842

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品国产在线 | 妹妹骑上来蹭着蹭着就射了 | 亚洲国产99在线精品一区二区 | 500第一精品 | 疯狂刺激的3p国产在线 | 男人j放进女人的p免费看视频 | 国产色视频网站 | 卫生间被教官做好爽HH视频 | 午夜国产精品影院在线观看 | 女仆掀起蕾丝裙被打屁股作文 | 毛片网站观看 | 日韩一区二区三区在线 | 国内精品91久久久久 | 色综合伊人色综合网站中国 | 色女的乖男人 | 久久亚洲国产成人影院 | 超兴奋朋友的中文字幕下 | blacked最大的吊 | 国产传媒在线播放 | 免费一级毛片完整版在线看 | 明星ai人脸替换脸忘忧草 | 国产精品日本亚洲777 | 国产专区日韩精品欧美色 | 国产精品亚洲精品日韩已方 | 久草在线精彩免费视频 | 美女露全身永久免费网站 | 国产精品福利在线观看秒播 | 亚洲欧美久久久久久久久久爽网站 | 国产精品视频第一页 | 国内外成人在线视频 | 亚洲午夜精品久久久久久人妖 | 99久久成人 | 九九热免费在线观看 | 国产一区私人高清影院 | 国产老熟 | 欧美式禁忌 | 成人欧美一区在线视频在线观看 | 全彩调教侵犯h本子全彩妖气he | 青青国产成人久久91网 | 国产美女做爰免费视频软件 | 视频一区二区三区在线观看 |