柚子快報激活碼778899分享:數(shù)據(jù)庫 MYSQL基礎(chǔ)語法二
柚子快報激活碼778899分享:數(shù)據(jù)庫 MYSQL基礎(chǔ)語法二
1、數(shù)據(jù)類型
1.1、數(shù)值型
????????MySQL支持多種數(shù)值型數(shù)據(jù)類型,包括整數(shù)型、小數(shù)型和布爾型。
1.1.1、整數(shù)型
????????MySQL支持多種整數(shù)型數(shù)據(jù)類型,包括TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。
TINYINT:1字節(jié),取值范圍為-128到127或0到255。SMALLINT:2字節(jié),取值范圍為-32768到32767或0到65535。MEDIUMINT:3字節(jié),取值范圍為-8388608到8388607或0到16777215。INT:4字節(jié),取值范圍為-2147483648到2147483647或0到4294967295。BIGINT:8字節(jié),取值范圍為-9223372036854775808到9223372036854775807或0到18446744073709551615。
1.1.2、小數(shù)型
????????MySQL支持多種小數(shù)型數(shù)據(jù)類型,包括FLOAT、DOUBLE和DECIMAL。
FLOAT:4字節(jié),單精度浮點(diǎn)數(shù),精度為7位。DOUBLE:8字節(jié),雙精度浮點(diǎn)數(shù),精度為15位。DECIMAL:可變長度,用于存儲精確的小數(shù),精度和數(shù)據(jù)長度可以自定義。
1.1.3、布爾型
????????MySQL支持布爾型數(shù)據(jù)類型,即BOOLEAN或BOOL。它只占用1位,取值為TRUE或FALSE。
1.2、日期型
????????MySQL支持多種日期型數(shù)據(jù)類型,包括DATE、TIME、DATETIME、TIMESTAMP和YEAR。
DATE:用于存儲日期,格式為YYYY-MM-DD。TIME:用于存儲時間,格式為HH:MM:SS。DATETIME:用于存儲日期時間,格式為YYYY-MM-DD HH:MM:SS。TIMESTAMP:用于存儲時間戳,格式為YYYY-MM-DD HH:MM:SS。YEAR:用于存儲年份,格式為YYYY。
1.3、字符串型
????????MySQL支持多種字符串型數(shù)據(jù)類型,包括CHAR、VARCHAR、TEXT、BLOB和ENUM。
1.3.1、CHAR和VARCHAR
????????CHAR和VARCHAR都用于存儲字符串,但它們的存儲方式不同。CHAR是一種固定長度的字符串類型,VARCHAR是一種可變長度的字符串類型。
CHAR:用于存儲固定長度的字符串,長度為0到255個字符。VARCHAR:用于存儲可變長度的字符串,長度為0到65535個字符。
1.3.2、TEXT和BLOB
????????TEXT和BLOB用于存儲大量的文本或二進(jìn)制數(shù)據(jù)。
TEXT:用于存儲大量的文本數(shù)據(jù),最大長度為65535個字符。BLOB:用于存儲大量的二進(jìn)制數(shù)據(jù),最大長度為65535個字節(jié)。
1.3.3、ENUM
ENUM用于存儲枚舉類型的數(shù)據(jù),如性別、狀態(tài)等。
1.4、二進(jìn)制型
????????MySQL支持多種二進(jìn)制型數(shù)據(jù)類型,包括BIT、BINARY和VARBINARY。
BIT:用于存儲比特位,長度為1到64個比特位。BINARY:用于存儲固定長度的二進(jìn)制數(shù)據(jù),長度為0到255個字節(jié)。VARBINARY:用于存儲可變長度的二進(jìn)制數(shù)據(jù),長度為0到65535個字節(jié)。
五、其他類型
????????MySQL還支持多種其他類型的數(shù)據(jù),包括SET、JSON和Geometry。
SET:用于存儲一組可選值,最多可以有64個選項。JSON:用于存儲JSON格式的數(shù)據(jù)。Geometry:用于存儲幾何類型的數(shù)據(jù),如點(diǎn)、線、面等。
2、常用語法
????????MySQL常用列屬性有:null、not null、default、primary key、auto_increment、comment。
2.1、空屬性: null和not null
/*空屬性: null和not null*/
空屬性: null(空,默認(rèn)) 和 not null(不為空). mysql數(shù)據(jù)庫默認(rèn)字段都是為null的,實(shí)際開發(fā)過程中盡可能保證所有的數(shù)據(jù)都不應(yīng)該為null,空數(shù)據(jù)沒有意義.
例如: create table test(
a int not null,
b int
);
insert into test (a,b) values(10,null);
insert into test (a,b) values(null,10);--報錯
2.2、默認(rèn)值:default
/*默認(rèn)值: default*/
default: 自定義默認(rèn)值屬性,通常配合not null一起使用.
例如: create table test1(
a int not null default 200,
b int
);
insert into test1(b) values(20);--或 insert into test1(a,b) values(default,20);
2.3、主鍵:primary key
/*主鍵|唯一索引*/
Mysql中提供了多種索引? (下文索引更多解析)
1.主鍵索引:primary key
2.唯一索引:unique key
3.全文索引:fulltext index
4.普通索引:key 或 index
主鍵:primary key 一張表中只能有一個字段可以使用對應(yīng)的主鍵,用來唯一的約束該字段里面的數(shù)據(jù),不能重復(fù)和不能為null.
設(shè)置主鍵有兩種方式:
(1)在定義一個字段的時候直接在后面進(jìn)行設(shè)置primary key
例如: create table test2(
id int(10) unsigned not null primary key,
name char(20) not null default ''
);
(2)定義完字段后再定義主鍵
例如: create table test3(
id int(10) unsigned not null,
name char(20) not null default '',
primary key (id)
);
唯一鍵:unique key 解決表中多個字段需要唯一性約束的問題.
例如:create table test4(
id int(10) unsigned not null,
name char(20) not null default '',
goods varchar(100) not null default '',
primary key (id),
unique key (name,goods)
);
2.4、自增長:auto_increment
/*自動增長: auto_increment*/
自增長屬性:每次插入記錄的時候,自動的為某個字段的值加1(基于上一個記錄). 通常跟主鍵搭配.
自增長規(guī)則:(1)任何一個字段要做自增長前提必須是一個索引 (2)自增長字段必須是整型數(shù)字
例如: create table test5(
id int(10) unsigned not null auto_increment,
name char(20) not null default '',
primary key (id)
);
2.5、列描述:comment
/*列描述 comment*/
列描述(注釋):comment 與其他的注釋符不同之處在于,這里的注釋內(nèi)容屬于列定義的一部分.
例如:create table user(
id int(10) unsigned not null auto_increment comment 'id',
name char(20) not null default '' comment '名字',
primary key (id)
)engine=InnoDB default charset=utf8 comment='用戶表';
2.6、索引
#索引
/*索引的概述和優(yōu)缺點(diǎn)和種類*/
什么是索引?
索引是一種特殊的文件(InnoDB數(shù)據(jù)表上的索引是表空間的一個組成部分),它們包含著對數(shù)據(jù)表里所有記錄的引用指針.
類比理解:數(shù)據(jù)庫中的索引相當(dāng)于書籍目錄一樣,能加快數(shù)據(jù)庫的查詢速度.
沒有索引的情況,數(shù)據(jù)庫會遍歷全部數(shù)據(jù)后選擇符合條件的選項.
創(chuàng)建相應(yīng)的索引,數(shù)據(jù)庫會直接在索引中查找符合條件的選項.
索引的性質(zhì)分類:
索引分為聚集索引和非聚集索引兩種,聚集索引是索引中鍵值的邏輯順序決定了表中相應(yīng)行的物理順序,而非聚集索引是不一樣;
聚集索引能提高多行檢索的速度,而非聚集索引對于單行的檢索很快.
索引的優(yōu)點(diǎn):
(1)加快數(shù)據(jù)檢索速度 (創(chuàng)建索引主要原因)
(2)創(chuàng)建唯一性索引,保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性
(3)加速表和表之間的連接
(4)使用分組和排序子句對數(shù)據(jù)檢索時,減少檢索時間
(5)使用索引在查詢的過程中,使用優(yōu)化隱藏器,提高系統(tǒng)的性能
索引的缺點(diǎn):
(1)創(chuàng)建索引和維護(hù)索引要耗費(fèi)時間,時間隨著數(shù)據(jù)量的增加而增加
(2)索引需要占用物理空間和數(shù)據(jù)空間
(3)表中的數(shù)據(jù)操作插入、刪除、修改, 維護(hù)數(shù)據(jù)速度下降
索引種類
(1)普通索引: 僅加速查詢
(2)唯一索引: 加速查詢 + 列值唯一(可以有null)
(3)主鍵索引: 加速查詢 + 列值唯一(不可以有null)+ 表中只有一個
(4)組合索引: 多列值組成一個索引,專門用于組合搜索,其效率大于索引合并
(5)全文索引: 對文本的內(nèi)容進(jìn)行分詞,進(jìn)行搜索 (注意:目前僅有MyISAM引擎支持)
/*創(chuàng)建表時直接指定索引*/
--創(chuàng)建主鍵索引
例如:create table student(
id int(10) unsigned not null auto_increment comment 'id主鍵索引',
name char(20) not null default '' comment '名字',
class varchar(50) not null default '' comment '班級',
seat_number smallint(5) not null default 0 comment '座位編號',
primary key (id)
)engine=InnoDB default charset=utf8 comment='學(xué)生表';
/*創(chuàng)建索引*/
create [unique唯一索引][clustered聚集索引] index <索引名>
on <表名>(<列名稱>[<排序>],<列名稱>[<排序>]…);
語法解析:其中unique和clustered為可選項. 注意:基本表上最多僅僅能建立一個聚集索引.
"列名稱":規(guī)定需要索引的列. "排序":可選asc(升序)和desc(降序)缺省值為asc.
--創(chuàng)建唯一索引(unique key 簡寫 unique)
例如:create unique index number on student(seat_number desc);
--創(chuàng)建普通索引
例如:create index name_class on student(name asc,class desc);
/*刪除索引*/
drop index <索引名> on 表名;
例如:drop index number on student;
2.7、外鍵
/*外鍵約束: foreign key */
外鍵約束: foreign key 被約束的表叫做副表,外鍵設(shè)置在副表上面,外鍵引用主鍵字段所在的表叫做主表. (作用:約束兩張表的數(shù)據(jù))
外鍵定義語法: constraint 外鍵約束名稱 foreign key(外鍵字段) references 主表名稱(引用字段)
外鍵數(shù)據(jù)操作:
1.當(dāng)有外鍵約束之后,添加數(shù)據(jù)的時候,先添加主表數(shù)據(jù),再添加副表數(shù)據(jù)
2.當(dāng)有了外鍵約束,修改數(shù)據(jù)的時候,先改副表的數(shù)據(jù),在修改主表的數(shù)據(jù)
3.當(dāng)有了外鍵約束,刪除數(shù)據(jù)的時候,也是先刪除副表的數(shù)據(jù),再刪除主表的數(shù)據(jù)
外鍵注意事項:
1.外鍵約束只有InnoDB存儲引擎才支持.
2.實(shí)際項目中往往會用到外鍵的設(shè)計思想,但往往不會真正的從語法上進(jìn)行外鍵約束. 因為外鍵約束的級聯(lián)操作可能會帶來一些現(xiàn)實(shí)的邏輯問題. 另外使用外鍵會較低mysql的效率.
2.8、儲存引擎
/*儲存引擎: engine*/
常見的引擎:Myisam InnoDB BDB Memory Archive 等
不同的引擎在保存表的結(jié)構(gòu)和數(shù)據(jù)時采用不同的方式?
MyISAM表文件含義:.frm表定義,.MYD表數(shù)據(jù),.MYI表索引
InnoDB表文件含義:.frm表定義,表數(shù)據(jù)空間文件(存放表的數(shù)據(jù)和索引)和日志文件
2.9、innodb與myisam的區(qū)別
MySQL中innodb與myisam的區(qū)別
(1):InnoDB支持事物,MyISAM不支持事物
(2):InnoDB支持行級鎖,MyISAM支持表級鎖
(3):InnoDB支持快照數(shù)據(jù)(MVCC),MyISAM不支持
(4):InnoDB支持外鍵,MyISAM不支持
(5):InnoDB不支持全文索引,MyISAM支持
innodb使用的是行級鎖:只有在增刪改查時匹配的條件字段帶有索引時,innodb才會使用行級鎖.(行級鎖:要為匹配條件字段加索引)
innodb使用的是表級鎖:如果增刪改查時匹配的條件字段不帶有索引時,innodb使用的將是表級鎖.(表級鎖:數(shù)據(jù)庫全表查詢,需要將整張表加鎖,保證查詢匹配的正確性)
觸發(fā)讀鎖:就是用select命令時觸發(fā)讀鎖.
觸發(fā)寫鎖:就是在你使用update,delete,insert時觸發(fā)寫鎖,并且使用rollback或commit后解除本次鎖定
更好的區(qū)分:讀寫鎖和表級鎖行級鎖. 將讀寫鎖叫做權(quán)限鎖(決定了加鎖后用戶有哪些操作權(quán)限),將表級鎖行級鎖叫做對象鎖(決定將鎖加在某一行還是整張表)
MVCC多版本并發(fā)控制,也可稱之為一致性非鎖定讀;它通過行的多版本控制方式來讀取當(dāng)前執(zhí)行時間數(shù)據(jù)庫中的行數(shù)據(jù). 實(shí)質(zhì)上使用的是快照數(shù)據(jù).
為什么要使用MVCC?
消除鎖的開銷. (如果要保證數(shù)據(jù)的一致性,最簡單的方式就是對操作數(shù)據(jù)進(jìn)行加鎖,但是加鎖不可避免的會有鎖開銷. 所以使用MVCC能避免進(jìn)行加鎖的方式并提高并發(fā).)
2.10、運(yùn)算符和邏輯運(yùn)算符
--比較運(yùn)算符(常用示例) <, >, <=, >=, =, !=或<>, IS NULL
between and | not between and --例如: between A and B; 相當(dāng)于區(qū)間[A,B];
in | not in --例如:in表示某個值出現(xiàn);
not in表示沒出現(xiàn)在一個集合之中;
is null | is not null --空值查詢;
like --通配符;
_ 代表任意的單個字符;
% 代表任意的字符;
--邏輯運(yùn)算符
&&(AND), ||(OR), !(NOT), XOR異或
2.11、group by
--group by子句 (分組)
--group by 字段/別名 [排序方式] 分組后排序: asc 升序(默認(rèn)),desc 降序
--統(tǒng)計函數(shù)需配合group by使用:
count 返回不同的非NULL統(tǒng)計值 count(*)、count(字段)
sum 求和; max 求最大值; min 求最小值; avg 求平均值
select class, sum(score) as sum
from student
group by class desc;--查詢各個班級總成績,分組班級降序.
select id,class, max(score) as max
from student where score>80
group by class;--查詢各個班級最高成績,分?jǐn)?shù)要大于80,分組班級升序.
2.12、having
--having 子句 (條件查詢)
--where功能、用法相同,執(zhí)行時機(jī)不同.
--本質(zhì)區(qū)別:where子句是把磁盤上的數(shù)據(jù)篩選到內(nèi)存上,而having子句是把內(nèi)存中的數(shù)據(jù)再次進(jìn)行篩選.
--where不可以使用統(tǒng)計函數(shù). 一般需用統(tǒng)計函數(shù)配合group by才會用到having
例如:
select class, min(score) as min
from student
where min(score)>80
group by class;--報錯
select class, min(score) as min
from student
group by class
having min(score)>80;--查詢各個班級最低成績,分組班級,最低分?jǐn)?shù)大于80
2.13、order by
--order by子句 (排序)
--order by 字段1[asc|desc],字段n[asc|desc]
--排序: asc 升序(默認(rèn)),desc 降序
例如:
select * from
student
where score > 80
order by score,name desc;--查詢score大于80,排序score升序和name降序
2.14、聯(lián)合查詢
/*聯(lián)合查詢 關(guān)鍵字:union*/
--聯(lián)合查詢:就是將多個查詢結(jié)果進(jìn)行縱向上的拼接. (select語句2的查詢結(jié)果放在select語句1查詢結(jié)果的后面)
--語法:
select語句1
union [all | distinct]
select 語句2
union [all | distinct]
select 語句n
例如:查詢A班級最高成績和B班級最低成績?
(select name, class,score from student where class='A' order by score desc limit 1)
union
(select name, class,score from student where class='B' order by score limit 1);
2.15、連接查詢
/*連接查詢*/
將多個表的字段進(jìn)行連接,可以指定連接條件.
--交叉連接 cross join
select *|字段列表 from 表名1 cross join 表名2;
一張表的一條記錄去連接另一張表中的所有記錄,并且保存所有的記錄包含兩個表的所有的字段.
結(jié)果上看,就是對兩張表做笛卡爾積,有n1*n2條記錄.
例如:select * from student cross join score;
2.16、內(nèi)連接
--內(nèi)連接 inner join
select *|字段列表 from 左表 [inner] join 右表 on 左表.字段 = 右表.字段 [五子句];
數(shù)據(jù)在左表中存在,同時在右表中又有對應(yīng)的匹配的結(jié)果才會被保存. 如果沒有匹配上,數(shù)據(jù)沒有意義不會保存.
通常就是兩張表中存在相同的某個字段.(項目中通常是關(guān)聯(lián)主鍵ID) using() 用法連接兩表公共字段. 例如:using(ID)
select student.*, teacher.class as t_class, teacher.name as t_name
from student join teacher on student.class = teacher.class;
2.17、左外連接
-- 左外連接 left join
select *|字段列表 from 左表 left [outer] join 右表 on 左表.字段 = 右表.字段 [五子句];
如果數(shù)據(jù)不存在,左表記錄會出現(xiàn),而右表為null填充
例如:
select student.*, teacher.class as t_class, teacher.name as t_name
from student left join teacher on student.class = teacher.class;
2.18、右連接
-- 右外連接 right join
select *|字段列表 from 右表 right [outer] join 左表 on 右表.字段 = 左表.字段 [五子句];
如果數(shù)據(jù)不存在,右表記錄會出現(xiàn),而左表為null填充
例如:
select student.*, teacher.class as t_class, teacher.name as t_name
from student right join teacher on student.class = teacher.class;
2.19、自然連接
--自然連接 natural join
自動判斷連接條件完成連接.
--自然內(nèi)連接 natural inner join
select *|字段列表 from 左表 natural [inner] join 右表;
自然內(nèi)連接其實(shí)就是內(nèi)連接,這里的匹配條件是由系統(tǒng)自動指定.
--自然外連接 natural outer join
自然外連接分為自然左外連接和自然右外連接.匹配條件也是由系統(tǒng)自動指定.
--自然左外連接 natural left join
select *|字段列表 from 左表 natural left [outer] join 右表;
--自然右外連接 natural right join
select *|字段列表 from 右表 natural right [outer] join 左表;
2.10、子查詢
/*子查詢*/
子查詢(內(nèi)查詢)在主查詢(外查詢)之前一次執(zhí)行完成,子查詢的結(jié)果被主查詢使用.
使用子查詢需用括號包裹.
select *
from student
where score=(select max(score) as max from student);--查詢班級最高成績學(xué)生的記錄
根據(jù)子查詢返回值的形式:
1.單一值: 返回單行單列的子查詢,也叫標(biāo)量子查詢.
例如:select max(score) as max from student;
2.21、判斷exists
--exists
--主要作用就是判斷后面的select語句有沒有查詢到數(shù)據(jù).結(jié)果為true有返回數(shù)據(jù),否則就是false.
例如:select exists (select * from student where name ='uzi');--有
3、補(bǔ)充
3.1、三范式
/*數(shù)據(jù)庫三范式*/
--建表規(guī)范
- 每個表保存一個實(shí)體信息
- 每個具有一個ID字段作為主鍵
- ID主鍵 + 原子表
--第一范式
字段不能再分,確保每列保持原子性.
--第二范式
滿足第一范式的基礎(chǔ)上,不能有部分依賴.
消除符合組合主鍵(A,B)就可以避免部分依賴. 增加單列關(guān)鍵字.
--第三范式
滿足第二范式的基礎(chǔ)上,不能有傳遞依賴.
某個字段依賴于主鍵,而有其他字段依賴于該字段. 這就是傳遞依賴.
將一個實(shí)體信息的數(shù)據(jù)放在一個表內(nèi)實(shí)現(xiàn)
3.2、視圖
????????視圖是一張?zhí)摂M表,它表示一張表的部分?jǐn)?shù)據(jù)和多張表的綜合數(shù)據(jù),視圖的結(jié)構(gòu)和數(shù)據(jù)都是建立在基表上.視圖僅僅是一個表結(jié)構(gòu),視圖的數(shù)據(jù)并不在數(shù)據(jù)庫中存儲,數(shù)據(jù)保存在基表中. 一張表可以創(chuàng)建多個視圖. ????????視圖作用:簡化業(yè)務(wù)邏輯,對客戶端隱藏真實(shí)的表結(jié)構(gòu)
--創(chuàng)建視圖
create [algorithm = undefined | merge | temptable] view 視圖名稱 [(字段列表)]
as
sql語句
?語法解析: 1.視圖名必須唯一,同時不能與表重名. 2.指定視圖執(zhí)行的算法,通過algorithm指定. 3.merge: 合并算法,將視圖的語句和外層的語句合并后再執(zhí)行. 4.temptable: 臨時表算法,將視圖執(zhí)行的結(jié)果生成一張臨時表,再執(zhí)行外層語句. 5.undefined: 未定義型,用哪種算法有MySQL決定,默認(rèn)算法merge. 6."字段列表"如果存在,數(shù)目必須等于select語句檢索的列數(shù)
例如:
create view v_student (v_name,v_score)
as
select name,score from student where score >80;
--查看結(jié)構(gòu)
show create view 視圖名稱
--刪除視圖
drop view [if exists] 視圖名稱
注意: 刪除視圖后,數(shù)據(jù)庫中的數(shù)據(jù)依然存在.(對當(dāng)前視圖刪除)
--修改視圖結(jié)構(gòu)?
alter view 視圖名稱 [(字段列表)]
as
sql語句
3.3、事物
????????事物:是并發(fā)控制的基本單位.事務(wù)就是一系列的操作,這些操作要么都執(zhí)行,要么都不執(zhí)行.(事務(wù)中可以保存多個SQL語句. 這些SQL語句是一個整體. 要么都執(zhí)行,要么都不執(zhí)行.)
--事務(wù)操作
--開啟事務(wù)
start transaction; 或者 begin;
--提交事務(wù)
commit;
--回滾事務(wù)
rollback;
start transaction;--開啟事物
insert into goods(goods_name,price) values('milk','43');
insert into goods(goods_name,price) values('bread','15');
commit;--提交事物
begin;--開啟事物
insert into goods(goods_name,price) values('book','99');
rollback;--回滾事物
事務(wù)的特性
原子性: 事務(wù)是一個不可分割的工作單位,事務(wù)中的操作要么都執(zhí)行,要么都不執(zhí)行.一致性: 事務(wù)前后數(shù)據(jù)的完整性必須保持一致. (事務(wù)開始和結(jié)束時,外部數(shù)據(jù)一致. 在整個事務(wù)過程中,操作是連續(xù)的.)隔離性: 多個用戶并發(fā)訪問數(shù)據(jù)庫時,一個用戶的事務(wù)不能被其它用戶的事物所干擾,多個并發(fā)事務(wù)之間的數(shù)據(jù)要相互隔離.持久性: 一個事務(wù)一旦被提交,它對數(shù)據(jù)庫中的數(shù)據(jù)改變就是永久性的.
事務(wù)的原理
????????利用InnoDB的自動提交(autocommit)特性完成. 普通的Mysql執(zhí)行語句后,當(dāng)前的數(shù)據(jù)提交操作均可被其它客戶端可見. ????????事務(wù)是暫時關(guān)閉“自動提交”機(jī)制,需要commit提交持久化數(shù)據(jù)操作.
????????注意: 修改事務(wù)自動提交 set autocommit = 0 | 1 (0:取消自動提交;1:自動提交)--設(shè)置為不自動提交,因為Mysql默認(rèn)自動提交執(zhí)行.
3.4、用戶權(quán)限管理
/*用戶權(quán)限管理*/
用戶信息表:mysql數(shù)據(jù)庫的下, user表中
--創(chuàng)建用戶
create user 用戶名[@主機(jī)地址] identified by '密碼';
例如:create user 'user_one'@'localhost' identified by '1234';--創(chuàng)建一個只能本機(jī)訪問的用戶
create user 'user_two'@'192.168.1.204.%' identified by '1234';--創(chuàng)建一個可以局域網(wǎng)訪問的用戶
create user 'user_three' identified by '1234';--創(chuàng)建一個可全網(wǎng)訪問的用戶
select host,user,password from user;--查看user表,host用戶名和密碼
--重命名用戶
rename user 老用戶名[@老主機(jī)地址] to 新用戶名[@新主機(jī)地址];
-- 設(shè)置密碼
set password = password('修改密碼'); -- 為當(dāng)前用戶設(shè)置密碼
set password for 用戶名 = password('修改密碼'); -- 為指定用戶設(shè)置密碼
例如:set password for 'user_three' = password('123456789'); -- 指定'user_three'用戶設(shè)置密碼
-- 刪除用戶
drop user 用戶名[@主機(jī)地址];
例如:drop user 'user_two'@'192.168.1.204.%';
--分配權(quán)限給用戶
grant 權(quán)限列表 on *|庫名 . *|表名 to 用戶名[@主機(jī)地址] [identified by "用戶密碼"] [with grant option];
語法解析:
權(quán)限列表: all [privileges]: 表示所有權(quán)限; delete:允許使用delete; select:允許使用select; update:允許使用update; insert:允許使用insert 等...
*.* :表示所有庫的所有表
庫名.表名 :表示某庫下面的某表
例如: grant update,insert on *.* to user_one@'localhost' identified by "1234" with grant option;
--刷新權(quán)限
flush privileges;
--查看權(quán)限
show grants for 用戶名[@主機(jī)地址];
show grants for 'user_one'@'localhost';
--查看當(dāng)前用戶權(quán)限
show grants;
--撤消權(quán)限
revoke 權(quán)限列表 on *|庫名 . *|表名 from 用戶名[@主機(jī)地址];
revoke all privileges, grant option from 用戶名[@主機(jī)地址];-- 撤銷所有權(quán)限
例如:revoke update on *.* from 'user_one'@'localhost';
柚子快報激活碼778899分享:數(shù)據(jù)庫 MYSQL基礎(chǔ)語法二
推薦閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。