溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL常用語句

發(fā)布時(shí)間:2020-06-07 19:42:07 來源:網(wǎng)絡(luò) 閱讀:742 作者:ZYJTF_Zhang 欄目:MySQL數(shù)據(jù)庫(kù)

????? Hi,大家好,今天我給大家?guī)淼氖恰?/span>MariaDB(MySQL)常用語句的使用


????? 說明

????????????? 1MySQL語句不區(qū)分字符大小寫,在Unix或類Unix(Linux)系統(tǒng)下“參數(shù)”區(qū)分字符大小寫

????????????? 2、多數(shù)MySQL語句以";"結(jié)尾;如果結(jié)尾處不寫";"MySQL會(huì)等待輸入下一條語句,直到結(jié)尾有";"為止

????????????? 3、一行需要執(zhí)行多條語句用";"進(jìn)行分隔

?????????? 本篇內(nèi)容以Linux系統(tǒng)為例;本文中的[ 符號(hào)里邊的內(nèi)容為可選內(nèi)容,既可有可無的 ]、{ 符號(hào)里的內(nèi)容為必須給出的內(nèi)容 }| 符號(hào)為或者之意;語句之前的符號(hào)# Linux系統(tǒng)的命令提示符(需在系統(tǒng)下執(zhí)行的)、符號(hào)> MySQL數(shù)據(jù)庫(kù)提示符(需在MySQL數(shù)據(jù)庫(kù)中執(zhí)行的);字體顏色為紅色的是需要注意的地方(可能會(huì)出現(xiàn)誤操作的地方)

?

溫馨提示:使用電腦閱讀效果更佳

?

MariaDB(MySQL)語句分類

????? 服務(wù)端命令:通過mysql連接發(fā)往服務(wù)器執(zhí)行并取回結(jié)果(SQL語句)

????????????? DDL(Data Defined Language)要用于管理數(shù)據(jù)庫(kù)組件,例如表、索引、視圖、用戶、存儲(chǔ)過程

???????????????????? CREATE DATABASE, ALTER DATABASE, DROP DATABASE, CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, DROP INDEX, CREATE USER, DROP USER, SELECT

????? ????? DML(Data Manipulation Language)數(shù)據(jù)操縱語言,主要用管理表中的數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的增、刪、改、查

???????????????????? INSERT, DELETE, UPDATE, SELECT

????????????? DCL:權(quán)限管理

???????????????????? GRANT, REVOKE

????? 客戶端命令:本地執(zhí)行

以下語句有兩種表示方式(clear,\c),語句結(jié)尾處不用加; 但加了也不會(huì)出錯(cuò)

語句

說明

? (\?)

獲取命令幫助

clear (\c)

清除當(dāng)前的輸入語句

connect (\r)

重新連接MySQL

delimiter (\d)

設(shè)置語句分隔符,默認(rèn)為分號(hào);

ego (\G)

語句結(jié)束標(biāo)記,結(jié)果以垂直方式顯示

exit (\q)

退出MySQL

go (\g)

語句結(jié)束標(biāo)記

help (\h)

顯示此幫助

prompt (\R)

更改MySQL提示符

quit (\q)

退出MySQL

source (\.)

裝載并運(yùn)行SQL腳本,腳本存放的位置"MySQL"用戶需要有權(quán)限讀取

status (\s)

獲取MySQL狀態(tài)信息

system (\!)

執(zhí)行shell命令

use (\u)

設(shè)定哪個(gè)庫(kù)為默認(rèn)數(shù)據(jù)庫(kù)

?

???? 一、登錄/退出MySQL

?????????? 登錄

???????????????? 登錄本地?cái)?shù)據(jù)庫(kù)

?????? ???????????????? 匿名登錄

?????????????????????????????????? # mysql [數(shù)據(jù)庫(kù)名稱]

?????????????????????????????????? # mysql -p [數(shù)據(jù)庫(kù)名稱]

???????????????????? ????? 指定用戶登錄

?????????????????????????????????? # mysql -u 用戶名 -p [數(shù)據(jù)庫(kù)名稱]

?????????????????????????????????? # mysql -u 用戶名 –p用戶的密碼 [數(shù)據(jù)庫(kù)名稱]

?????? ?????????? 遠(yuǎn)程登錄數(shù)據(jù)庫(kù)

??????????????????????????? # mysql -h 主機(jī) -u 用戶名 -p用戶的密碼 [數(shù)據(jù)庫(kù)名稱]

???????????????? 注意:在登錄時(shí)可指定數(shù)據(jù)庫(kù)"[DATABASE_NAME]"

?????????? 退出

???????????????????? > exit

???????????????????? > quit

???????????????????? > \q

???????????????????? Ctrl+C

MySQL常用語句

???? 二、選擇/切換數(shù)據(jù)庫(kù):在數(shù)據(jù)庫(kù)中執(zhí)行的操作都要先選擇數(shù)據(jù)庫(kù)

????????????? > USE 數(shù)據(jù)庫(kù)名稱;

MySQL常用語句

?

???? 三、數(shù)據(jù)庫(kù)管理

?????????? 創(chuàng)建

???????????????? 創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)

??????????????????????????? > CREATE {DATABASE | SCHEMA} 數(shù)據(jù)庫(kù)名稱;

???????????????? 創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)不存在,則創(chuàng)建

??????????????????????????? > CREATE DATABASE IF NOT EXISTS 數(shù)據(jù)庫(kù)名稱;

????????????????????? 注意:數(shù)據(jù)庫(kù)名稱在創(chuàng)建時(shí)定義,后期不可更改

MySQL常用語句

?????????? 修改

???????????????? 修改指定數(shù)據(jù)庫(kù)的默認(rèn)字符集

??????????????????????????? > ALTER DATABASE 數(shù)據(jù)庫(kù)名稱 CHARACTER SET '字符集名稱';

?????????? 查詢

?????? ?????????? 查看當(dāng)前設(shè)備上已有的數(shù)據(jù)庫(kù)

??????????????????????????? > SHOW DATABASES;

???????????????????? 查看以指定字符開頭的數(shù)據(jù)庫(kù)

??????????????????????????? > SHOW DATABASES LIKE 'name%';

???????????????????? 查看以指定字符結(jié)尾的數(shù)據(jù)庫(kù)

??????????????????????????? > SHOW DATABASES LIKE '%name';


MySQL常用語句

???????????????????? 查看數(shù)據(jù)庫(kù)所支持的引擎

??????????????????????????? > SHOW ENGINES;

????????????? ????? 查看所支持的字符集

??????????????????????????? > SHOW CHARACTER SET;

????????????????????? 常見字符集

?????????????????????????????????? big5:繁體中文

?????????????????????????????????? gb2312:簡(jiǎn)體中文

?????????????????????????????????? utf8:統(tǒng)一的字符編碼標(biāo)準(zhǔn)

????????????? ????? 查看字符集的排序方式

??????????????????????????? > SHOW COLLATION;

???????????????????? 看當(dāng)前數(shù)據(jù)庫(kù)的版本號(hào)和當(dāng)前日期

??????????????????????????? > SELECT VERSION(), CURRENT_DATE;

?????????? 刪除

????????????? ????? 刪除數(shù)據(jù)庫(kù):刪庫(kù)需小心(MySQL沒有回收站)

??????????????????????????? > DROP {DATABASE | SCHEMA} 數(shù)據(jù)庫(kù)名稱;

??????????????????????????? > DROP {DATABASE | SCHEMA} [IF EXISTS] 數(shù)據(jù)庫(kù)名稱;

MySQL常用語句

???????????????????? 建議把不用的數(shù)據(jù)庫(kù)移動(dòng)到其他位置,而不是刪除

??????????????????????????? # mv /var/lib/mysql/DATABASE_NAME??/PATH/TO/DIRECTORY_NAME

MySQL常用語句

MySQL常用語句

?

???? 四、數(shù)據(jù)表管理

?????????? 創(chuàng)建

????????????? ????? 在數(shù)據(jù)庫(kù)內(nèi)創(chuàng)建數(shù)據(jù)表

??????????????????????????? > USE 數(shù)據(jù)庫(kù)名稱;

??????????????????????????? > CREATE TABLE 數(shù)據(jù)表名稱 (字段1 數(shù)據(jù)類型 修飾符,字段2 數(shù)據(jù)類型 修飾符,字段3 數(shù)據(jù)類型 修飾符 ...) [table_option];

? ? ? ? ? ? ????????MySQL數(shù)據(jù)類型參考:點(diǎn)我查看

?????? ???????????????? 在創(chuàng)建數(shù)據(jù)表時(shí)還可以定義以下內(nèi)容:

? ? ? ? ? ? ? ? ? ? ? ? ? ??定義鍵

????????????????????????????????????????? 主鍵:PRIMARY KEY (字段1, 字段2, ...)

????????????????????????????????????????? 唯一鍵:UNIQUE KEY? (字段1, 字段2,...)

????????????????????????????????????????? 外鍵:FOREIGN KEY (column)

??????????????????????????? 定義索引

????????????????????????????????????????? KEY|INDEX [索引名稱] (字段1, 字段2,...)

MySQL常用語句

> CREATE TABLE server ( IDC_ROOM VARCHAR(3) NOT NULL,RACK_SLOT VARCHAR(10)NOT NULL ,SN VARCHAR(30) PRIMARY KEY,HOSTNAME VARCHAR(16) NOT NULL,MACHINE_TYPE VARCHAR(10) NOT NULL ) ;

???????????????????? ????? table_option:

??????????????????????????? ? | ENGINE [=] engine_name 【定義存儲(chǔ)引擎】

??????????????????????????? ? | AUTO_INCREMENT [=] value 【設(shè)置默認(rèn)自動(dòng)增長(zhǎng)數(shù)據(jù)從數(shù)字幾開始算,默認(rèn)為1

??????????????????????????? ? | [DEFAULT] CHARACTER SET [=] charset_name 【定義字符集,如不定義則從數(shù)據(jù)庫(kù)繼承】

??????????????????????????? ? | [DEFAULT] COLLATE [=] collation_name 【定義排序規(guī)則】

??????????????????????????? ? | COMMENT [=] 'string' 【定義數(shù)據(jù)表的注釋信息】

??????????????????????????? ? | MAX_ROWS [=] value 【定義最大行數(shù)】

??????????????????????????? ? | MIN_ROWS [=] value 【定義最小行數(shù)】

??????????????????????????? ? | PASSWORD [=] 'string' 【加密】

?????????????????????????? ? | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} 【定義行格式】

??????????????????????????? ? ?????????? DEFAULT:默認(rèn)格式

??????????????????????????? ? ?????????? DYNAMIC:動(dòng)態(tài)格式

??????????????????????????? ? ?????????? FIXED:固定長(zhǎng)度

??????????????????????????? ? ?????????? COMPRESSED:壓縮存儲(chǔ)

??????????????????????????? ? ?????????? REDUNDANT:冗余存儲(chǔ)

??????????????????????????? ? ?????????? COMPACT:緊致存儲(chǔ)

?

???????????????????? ????? 鍵類型可以在字段中指明

?????????????????????????????????? > CREATE TABLE 數(shù)據(jù)表名稱 (ID TINYINT NOT NULL AUTO_INCREMENT UNIQUE KEY,NAME VARCHAR(20) NOT NULL UNIQUE KEY);


????????????? ?????????? 也可以單獨(dú)指明:把多個(gè)字段聯(lián)合起來定義(多字段索引)

?????????????????????????????????? > CREATE TABLE 數(shù)據(jù)表名稱 (ID TINYINT NOT NULL AUTO_INCREMENT ,NAME VARCHAR(20) NOT NULL,UNIQUE KEY(ID,NAME));

???????????????????? ??????????????????????注意:創(chuàng)建數(shù)據(jù)表的時(shí)候,表名不可使用"table"作為其名稱


?????? ?????????? 在指定數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)表

??????????????????????????? > CREATE TABLE 數(shù)據(jù)庫(kù)名稱.數(shù)據(jù)表名稱 (字段1 數(shù)據(jù)類型 修飾符,字段2 數(shù)據(jù)類型 修飾符,字段3 數(shù)據(jù)類型 修飾符 ...) [table_option];


?????????? 插入

?????? ?????????? 向數(shù)據(jù)表中插入數(shù)據(jù)

? ? ????????????????????一次插入一行

?????????????????????????????????? > INSERT INTO [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱(字段1,字段2,字段3 ...)

?????? ???????????????? 一次插入多行

?????????????????????????????????? > INSERT INTO [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱(字段1,字段2,字段3 ...) {VALUES | VALUE} (DATE1: '字段1的值','字段2的值',字段3的值' ...),(DATE2: '字段1的值','字段2的值','字段3的值' ...) ...;

注意

?????????????????????????????????? (1) 使用INSERT語句,可以一次插入一行,也可以一次插入多行"(line1_data),(line2_data)..."

?????????????????????????????????? (2) 如果想用INSERT語句插入空值時(shí),可以直接用NULL

????????????????????

???????????????????? 替換表中已有數(shù)據(jù):如果沒有數(shù)據(jù),則插入;如果已有數(shù)據(jù),則替換(支持單行插入、多行插入、給定字段插入或全字段插入)

??????????????????????????? > REPLACE [INTO] 數(shù)據(jù)表名稱(字段1,字段2,字段3 ...) VALUES ('字段1的值','字段2的值','字段3的值','字段4的值','字段5的值','字段6的值')[,(line2_data)...];


???????????????? 從文件中讀取數(shù)據(jù)并插入到表中:一個(gè)空表,填充它的一個(gè)簡(jiǎn)易方法是創(chuàng)建一個(gè)文本文件,每條信息各一行,然后用一個(gè)語句將文件的內(nèi)容裝載到表中

??????????????????????????? > LOAD DATA LOCAL INFILE '/PATH/TO/ FILE_NAME' INTO TABLE [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱;

????????????????????? 注意:如果需要填充空值時(shí),使用\N(反斜線+字母N)表示

???????????????? ????? 我演示的是從文件中導(dǎo)入到數(shù)據(jù)庫(kù),表中的敏感數(shù)據(jù)我已修改

MySQL常用語句

???????????????? EXCEL表格中插入數(shù)據(jù):點(diǎn)我查看

?????????? 修改

?????? ?????????? 修改數(shù)據(jù)表的名稱

??????????????????????????? > RENAME TABLE [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 TO 數(shù)據(jù)庫(kù)名稱.新表名稱 ;

??????????????????????????? > ALTER TABLE [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 RENAME TO 數(shù)據(jù)庫(kù)名稱.新表名稱;

MySQL常用語句

???????????????? 修改注釋信息

??????????????????????????? > ALTER TABLE [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 COMMENT = '注釋信息';

MySQL常用語句

???????????????????? 給表中添加一個(gè)新字段

??????????????????????????? > ALTER TABLE 數(shù)據(jù)表名稱 ADD 新字段名 數(shù)據(jù)類型 修飾符 [FIRST | AFTER 字段名];

?????????????????????????????????? 指明字段位置

????????????????????????????????????????? FIRST:添加到第一字段

????????????????????????????????????????? AFTER:添加到哪個(gè)字段后面

????????????????????????????????????????? 如果不指定字段位置,則放在最后

MySQL常用語句

???????????????? 修改字段名稱(CHANGE)

??????????????????????????? > ALTER TABLE 數(shù)據(jù)表名稱 CHANGE 原名稱 新名稱 原有屬性信息(數(shù)據(jù)類型、修飾符...;

???????????????? 修改/更新指定字段

??????????????????????????? > UPDATE [LOW_PRIORITY] [IGNORE] [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 SET 字段1=字段1的值[,字段2=字段2的值] ... WHERE where_condition [ORDER BY ...] [LIMIT row_count]

MySQL常用語句

????????????? ?????????? 注意:用UPDATE修改行時(shí)必須使用WHERE子句指明條件(盡量指主鍵),否則將修改所有

?????????? 查詢

????????????? ????? 查詢當(dāng)前數(shù)據(jù)庫(kù)中的數(shù)據(jù)表

??????????????????????????? > USE 數(shù)據(jù)庫(kù)名稱;

??????????????????????????? > SHOW TABLES;

????????????? ????? 查詢指定庫(kù)中的數(shù)據(jù)表

??????????????????????????? > SHOW TABLES IN 數(shù)據(jù)庫(kù)名稱;

??????????????????????????? > SHOW TABLES FROM 數(shù)據(jù)庫(kù)名稱;

???????????????????? 查看數(shù)據(jù)表的詳細(xì)信息

??????????????????????????? > DESCRIBE [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱;

??????????????????????????? > DESC [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱;

MySQL常用語句

????????????? ????? 查看數(shù)據(jù)表的狀態(tài)信息

??????????????????????????? > SHOW TABLE STATUS [LIKE '數(shù)據(jù)表名稱'];

?????? ?????????? 查看數(shù)據(jù)表的狀態(tài)信息(垂直顯示)

??????????????????????????? > SHOW TABLE STATUS [LIKE '數(shù)據(jù)表名稱']\G;

??????????????????????????? ????????????? 輸出內(nèi)容說明

MySQL常用語句

?????? ?????????? ?查看創(chuàng)建命令

???????????????????? ????? > SHOW CREATE TABLE [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱;

MySQL常用語句

???????????????? 顯示以指定字符開頭的表的狀態(tài)

??????????????????????????? > SHOW TABLE STATUS WHERE Name LIKE '數(shù)據(jù)表名稱%'\G;

???????????????? 顯示指定時(shí)間創(chuàng)建的表

??????????????????????????? > SHOW TABLE STATUS WHERE Create_time LIKE '時(shí)間%'\G;

MySQL常用語句

?????????? SELECT語句:用來從數(shù)據(jù)表中檢索信息

??????????????????????????? > SELECT SELECT_EXPR FROM [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱1,[數(shù)據(jù)表名稱2 ...] [WHERE where_condition];

SELECT語句的子句的執(zhí)行過程

MySQL常用語句

???????????????????? ????? SELECT_EXPR

?????????????????????????????????? *:所有字段(所有行,所有列)

?????????????????????????????????? ALL

?????????????????????????????????? 字段1,字段2,字段3:投影;只顯示指定字段

?????????????????????????????????? DISTINCT:相同的數(shù)據(jù),只顯示一次

?????????????????????????????????? field AS field_alias:給field取個(gè)別名field_alias

?

??????????????????????????? 只查看表中不同的數(shù)據(jù)

?????????????????????????????????? > SELECT DISTINCT FROM [數(shù)據(jù)庫(kù)名稱.]?數(shù)據(jù)表1,[數(shù)據(jù)表2 ...];

???????????????????? ????? 查看指定表中所有字段(慎用)

?????????????????????????????????? > SELECT * FROM [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱1,[數(shù)據(jù)表2 ...];

MySQL常用語句

??????????????????????????? 查看指定表中的指定列(如果表太大則不適合執(zhí)行)

?????????????????????????????????? > SELECT 字段1,字段2,字段3 ... FROM [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱;

????????????????????? 定義顯示的字段別名

?????????????????????????????????? > SELECT 字段 AS 字段別名 FROM [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱;

MySQL常用語句

MySQL常用語句

???????????????????? ????? FROM子句:指定要查詢的關(guān)系

?????????????????????????????????? 單表查詢(簡(jiǎn)單查詢):后面跟一個(gè)表名

?????????????????????????????????? 多表查詢:后面跟多個(gè)表名

?????????????????????????????????? 子查詢:后面跟WHERE子句

?

??????????????????????????? WHERE子句:選擇、指明條件;只輸出符合條件的行(重要)

?????????????????????????????????? > SELECT 字段1,字段2,字段3 ... FROM [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 WHERE where_condition;

?????????????????????????????????? ????? where_condition

??????????????????????????? ???????????????? 操作符

BETWEEN x AND y

xy范圍之間的值

IS NULL

空值

IS NOT NULL

非空值

IN (LIST)

使用列表給出的值;用于離散取值

MySQL常用語句

MySQL常用語句

????????????????????????????????????????? ????? 算數(shù)運(yùn)算

+

-

*

/

%

取模

????????????????????????????????????????? ????? 比較表達(dá)式

>?

大于

<?

小于

>=

大于等于

<=

小于等于

=

等于

!= <>

不等于

<=>

空值比較

MySQL常用語句

???????????????????? ????????????????????? 組合條件(邏輯運(yùn)算)

AND (&&)

與;并且關(guān)系,既兩個(gè)條件同時(shí)滿足

OR (||)

或;或者關(guān)系,既兩個(gè)條件滿足一個(gè)

NOT (!)

非;條件不滿足即為真

???????????????????????????????????????????????? ?????????? 注意:ANDOR可以混用,但ANDOR具有更高的優(yōu)先級(jí)。如果你使用兩個(gè)操作符,使用圓括號(hào)指明如何對(duì)條件進(jìn)行分組是一個(gè)好主意( NOT xxx AND NOT xxx AND NOT xxx 等于NOT ( xxx OR xxx OR xxx ) )

MySQL常用語句

?????????????????????????????????????? 字符串比較

???????????????????????????????????????????? 通配符

?????????????????????????????????????????????????????????????? LIKE '模式':支持使用“通配符”做模糊匹配

????????????????????????????????????????????????????????????????????? %:任意長(zhǎng)度的任意字符

????????????????????????????????????????????????????????????????????? _:任意單個(gè)字符

MySQL常用語句

???????????????????????????????????????????? 正則表達(dá)式

?????????????????????????????????????????????????????????????? {RLIKE | REGEXP} '模式':基基于正則表達(dá)式做模式匹配;不用索引、效率低

?????????????????????????????????????????????????????????????? 正則表達(dá)式元字符:點(diǎn)我查看

????????????????????? 排序(ORDER BY):將查詢到的結(jié)果排序顯示;如果表太大,排序操作極其消耗資源

????????????????????? ?????? > ORDER BY 字段名稱 {ASC | DESC}

??????????????????????????? 升序:默認(rèn)(ASC)

????????????????????????????????????????? ?> SELECT 字段1,字段2,字段3 ... FROM [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 ORDER BY?字段名稱?ASC;

??????????????????????????? 降序(DESC)

????????????????????????????????????????? ?> SELECT 字段1,字段2,字段3 ... FROM [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 ORDER BY 字段名稱?DESC;

MySQL常用語句

?????????????????????????????????? 注意:默認(rèn)是區(qū)分字符大小寫的,如不想?yún)^(qū)分字符大小寫則執(zhí)行“ORDER BY BINARY 字段名稱

????????????????????? LIMIT子句

?????????????????????????????????? LIMIT [offset,]count

?????????????????????????????????? LIMIT #:只顯示前#行的內(nèi)容

?????????????????????????????????? LIMIT x,y:忽略x行,顯示y行后的行

???????????????????? ???????????????????? x:偏移量

????????????????????????????????????????? y:偏移后取幾個(gè)值予以顯示

?????? ????????????????????? 注意:在MySQL中字符串必須加引號(hào),而數(shù)值一定不能加引號(hào)

????????????????????? 聚合計(jì)算

?????????????????????????????????? > SELECT 聚合計(jì)算函數(shù) FROM [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱;

?????????????????????????????????? 聚合計(jì)算函數(shù)

????????????????????????????????????????? AVG(字段名稱):求平均值

????????????????????????????????????????? MAX(字段名稱):求最大值

????????????????????????????????????????? MIN(字段名稱):求最小值

????????????????????????????????????????? SUM(字段名稱):求合

????????????????????????????????????????? COUNT(字段名稱):求個(gè)數(shù)之和

MySQL常用語句

????????????????????? 分組(GROUP BY):分組主要目的是為了做聚合計(jì)算

?????????????????????????????????? > SELECT * FROM [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 GROUP BY '字段名';

?????????????????????????????????? 對(duì)分組進(jìn)行過濾

????????????????????????????????????????? > HAVING conditions;

?????????? 復(fù)制

????????????? ????? 復(fù)制表結(jié)構(gòu)

??????????????????????????? > CREATE TABLE 數(shù)據(jù)表名稱 LIKE?原數(shù)據(jù)庫(kù).原數(shù)據(jù)表;

???????????????? 復(fù)制表中的幾個(gè)字段并將其創(chuàng)建成一個(gè)新表(不會(huì)復(fù)制其屬性)

??????????????????????????? > CREATE TABLE 數(shù)據(jù)表名稱 SELECT 字段1,字段2,字段3 ... FROM 原數(shù)據(jù)庫(kù).原數(shù)據(jù)表;

?????????? 刪除???

???????????????? 刪除表:刪表需小心(MySQL沒有回收站)

??????????????????????????? > DROP TABLE [IF EXISTS] [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱;

???????????????? 刪除表中的行(DELETE)

??????????????????????????? > DELETE FROM [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 [WHERE where_condition];

??????????????????????????? > DELETE FROM 數(shù)據(jù)表名稱 [ORDER BY ...] [LIMIT row_count]

MySQL常用語句

???????????????????? ????? 注意:用DELETE刪除行時(shí)必須使用WHERE子句,否則將清空整張表(DELETE FROM table_name)

???????????????? 先排序后刪除

??????????????????????????? > DELETE FROM [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 [WHERE where_condition] [ORDER BY '字段名' [DESC]]

???????????????? 刪除字段(列)

??????????????????????????? > ALTER TABLE 數(shù)據(jù)表名稱 DROP 字段名稱;

???????????????? 清空整張數(shù)據(jù)表

??????????????????????????? > TRUNCATE [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱;

?

???? 五、索引管理

?????? ????? 創(chuàng)建

???????????????????? 創(chuàng)建索引

??????????????????????????? > CREATE {INDEX | INDEXES} 索引名稱 ON [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱(字段1,字段2,字段3 ...);

MySQL常用語句

???????????????? 創(chuàng)建多列索引

??????????????????????????? > CREATE UNIQUE {INDEX | INDEXES} 索引名稱 ON [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱;??????

???????????????????? 給表中指定的字段加入索引

??????????????????????????? > ALTER TABLE [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱?ADD INDEX(‘字段名稱’);

?????? ????? 查詢

???????????????? 查看表中索引

??????????????????????????? > SHOW {INDEX | INDEXES} FROM [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱;

MySQL常用語句

、??? ????? 刪除:索引不用時(shí),要立即刪除

?????? ?????????? 刪除索引:這可能會(huì)導(dǎo)致查詢操作降低

??????????????????????????? > DROP {INDEX | INDEXES} 索引名稱 ON [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱;

MySQL常用語句

?????????? 注意:INDEX為一個(gè)索引,INDEXES為多個(gè)索引

?

???? 六、鍵管理

?????????? 創(chuàng)建

???????????????? (1) 在數(shù)據(jù)表創(chuàng)建的時(shí)候定義主鍵

???????????????? (2) 給已有的表中指定的字段加入主鍵

??????????????????????????? ALTER TABLE [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 ADD {PRIMARY KEY | UNIQUE KEY}(‘字段名稱’);

?????????? 修改

?????? ????????????? 先刪除鍵,再添加鍵

?????????? 查詢

????? ????????????? 查詢主鍵

???????????????? ?????? > SHOW KEYS FROM [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 WHERE key_name='PRIMARY';

?????????? 刪除

???????????????????? 刪除鍵:不是自增長(zhǎng)的才可以刪除,如果是自增長(zhǎng)(有auto_increment屬性)必須先將表中其他屬性刪除

??????????????????????????? > ALTER TABLE [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 DROP {PRIMARY KEY | UNIQUE KEY};

?

???? 七、用戶管理

?????????? MySQL用戶和操作系統(tǒng)中的用戶不同;不能用MySQL用戶登錄操作系統(tǒng),同樣也不能用操作系統(tǒng)用戶訪問MySQL

?????????? 用戶是公開的,大家都可以看到;而密碼只有某個(gè)授權(quán)使用用戶才能獲取

?????????? MySQL使用自己獨(dú)有的加密機(jī)制password()函數(shù)加密用戶密碼

?????????? MySQL默認(rèn)管理員是root,和操作系統(tǒng)管理員名稱一致

?????????? MySQL用戶由'用戶名'@'主機(jī)'共同組成

????????????? ?????? MySQL用戶名:不能超過16個(gè)字符

???????????????? 主機(jī)

???????????????????? ????? 主機(jī)名:zhangdaifu

??????????????????????????? IP地址:10.0.0.1

???????????????????? ????? 網(wǎng)絡(luò)地址:10.0.0.1/255.0.0.0

?????????????????????????????????? 支持使用通配符表示:10.%.%._/255.0.0.0

????????????????????????????????????????? 如需表示通配符本身的含義則需要進(jìn)行轉(zhuǎn)義\

?????????? 創(chuàng)建

?????? ?????????? 創(chuàng)建用戶帳號(hào)

??????????????????????????? > CREATE USER '用戶名'@'主機(jī)';

????????????? ????? 創(chuàng)建用戶賬號(hào)并設(shè)置其密碼

??????????????????????????? > CREATE USER '用戶名'@'主機(jī)' IDENTIFIED BY '密碼';

?

?????????? 修改

?????? ?????????? 修改用戶名

??????????????????????????? > UPDATE mysql.user SET USER='新用戶名稱' WHERE User='用戶名';

????????????? 查詢:MySQL用戶在mysql.user表中保存

???????????????? 查看所有用戶信息

??????????????????????????? > SELECT User,Host[, ...] FROM mysql.user;

???????????????? 查看指定用戶信息

??????????????????????????? > SELECT User,Host[, ...] FROM mysql.user WHERE User='用戶名';

?????????? 刪除

????????????? ????? 刪除用戶帳號(hào)

??????????????????????????? > DROP USER '用戶名'[@'主機(jī)' [, 用戶名@主機(jī)] ...] ;

?

???? 八、密碼管理

?????????? 創(chuàng)建

????????????? ????? 給用戶配置密碼

??????????????????????????? 為當(dāng)前登錄用戶配置密碼

?????????????????????????????????? > SET PASSWORD = PASSWORD("用戶的密碼");

?????????? 修改

????????????? ????? 通過命令行修改

??????????????????????????? # mysqladmin -u'用戶名' -p'老密碼' password '新密碼'

???????????????????? 使用UPDATE直接編輯user?

??????????????????????????? > UPDATE mysql.user SET PASSWORD=用戶的密碼 WHERE User='用戶名';

??????????????????????????? 刷新權(quán)限:flush privileges;

?????? ?????????? 通過SET PASSWORD語句修改

??????????????????????????? > SET PASSWORD FOR 用戶名=PASSWORD('用戶的密碼');

???????????????????? 參考:https://blog.csdn.net/qq_33285112/article/details/78982766

?????????? 查詢

???????????????????? > SELECT User,Password FROM mysql.user WHERE User='用戶名';

?????????? 刪除???

????????????? ????? 清除指定用戶密碼

??????????????????????????? > UPDATE mysql.user SET PASSWORD='' WHERE User='用戶名'

?

???? 九、權(quán)限管理

?????????? MySQL使用帳號(hào)的目的是為了“認(rèn)證”

?????????? MySQL用戶信息存儲(chǔ)在以下表中

user

存儲(chǔ)了用戶的賬號(hào)、全局權(quán)限及其他非權(quán)限字段

db

數(shù)據(jù)庫(kù)級(jí)別的權(quán)限、庫(kù)級(jí)別的權(quán)限

host

已被廢棄,已被整合進(jìn)user

tables_priv

表級(jí)別的權(quán)限

columns_priv

列(字段)級(jí)別的權(quán)限

procs_priv

存儲(chǔ)過程和存儲(chǔ)函數(shù)相關(guān)的權(quán)限

proxies_priv

代理用戶權(quán)限

???????????????????? MySQL服務(wù)器在啟動(dòng)時(shí)會(huì)讀取這6張表,并在內(nèi)存中生成“授權(quán)表”

?????????? 授權(quán)

???????????????????? 權(quán)限級(jí)別:管理權(quán)限、數(shù)據(jù)庫(kù)、數(shù)據(jù)表、字段、存儲(chǔ)例程

??????????????????????????? > GRANT permissions_type,... ON [object_type] { [數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 | function_name | procedure_name } TO 'user_name'@'host' [IDENTIFIED BY 'password'] [WITH GRANT OPTION];

??????????????????????????? > flush privileges

?????????????????????????????????? 權(quán)限類型

????????????????????????????????????????? ALL:所有權(quán)限;不安全

??????????????????????????? database_name.table_name

?????????????????????????????????? ????? *.*:所有庫(kù)的所有表

??????????????????????????? ??????????數(shù)據(jù)庫(kù).*:指定庫(kù)的所有表

?????? ??????????????????????????? 數(shù)據(jù)庫(kù).數(shù)據(jù)表:指定庫(kù)的指定表

????????????? ????????????? ?????????? 數(shù)據(jù)庫(kù).routine_name:指定庫(kù)上的存儲(chǔ)過程或存儲(chǔ)函數(shù)

?????????????????????????????????? [object_type]

???????????????????? ???????????????? TABLE給數(shù)據(jù)表授權(quán);默認(rèn)

????????????????????????????????? FUNCTION給存儲(chǔ)函數(shù)授權(quán)

???????????????????? ???????????????? PROCEDURE給存儲(chǔ)過程授權(quán)

??????????????????????????? ????? [WITH GRANT OPTION]將自己所擁有的權(quán)限轉(zhuǎn)權(quán)一個(gè)副本給其他用戶

?

?????????? 查詢

???????????????????? 查看當(dāng)前用戶所擁有的權(quán)限

??????????????????????????? > SHOW GRANTS;

???????????????????? 查看指定用戶所擁有的權(quán)限

??????????????????????????? > SHOW GRANTS FOR '用戶名'@'權(quán)限類型';

?????????? 刪除

???????????????????? 回收授權(quán)

??????????????????????????? > REVOKE 權(quán)限類型[, ...] ON ?[數(shù)據(jù)庫(kù)名稱.]數(shù)據(jù)表名稱 FROM '用戶名'@'主機(jī)';

?????????? 注意:MariaDB服務(wù)進(jìn)程啟動(dòng)時(shí),會(huì)讀取mysql庫(kù)的所有授權(quán)表至內(nèi)存中

????????????? ?????? (1) GRANTREVOKE命令等執(zhí)行的權(quán)限操作會(huì)保存于表中,MariaDB此時(shí)一般會(huì)自動(dòng)重讀授權(quán)表,權(quán)限修改會(huì)立即生效

???????????????????? (2) 其它方式實(shí)現(xiàn)的權(quán)限修改,要想生效,必須手動(dòng)運(yùn)行FLUSH PRIVILEGES命令方可

?

?????????? 檢查上一條語句是否正確執(zhí)行(類似于Shell變量"$?"

???????????????????? > SHOW WARNINGS;

?

????? 常見錯(cuò)誤

????????????? (1) ERROR 1046 (3D000): No database selected

???????????????????? 未選擇數(shù)據(jù)庫(kù)

????????????? (2) ERROR 1050 (42S01): Table 'table1' already exists

???????????????????? 'table1'已存在

????????????? (3) ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

???????????????????? 登錄數(shù)據(jù)庫(kù)沒有輸入密碼

????????????? (4)?? ERROR 1317 (70100): Query execution was interrupted

???????????????????? 查詢執(zhí)行被中斷

?

?????? 更多參考: http://www.bluestep.cc/demos/mysql/manual/index.htm


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI