MySQL數(shù)據(jù)庫(kù)基本SQL語(yǔ)句教程之高級(jí)操作
前言:
了解了一下MySQL數(shù)據(jù)庫(kù)的基本語(yǔ)句,這章了解一下它的高級(jí)操作,包括用戶增刪除與給予相對(duì)應(yīng)的權(quán)限
一.克隆表
1.1克隆方法一(將表與內(nèi)容分開克?。?/h3>
#?create table 新表名 like 復(fù)制的表名; ?
?復(fù)制格式,能將復(fù)制表的格式到新表,但是里面的內(nèi)容無(wú)法復(fù)制?
?insert into 新表名 select * from 復(fù)制的表名; ?
?復(fù)制原表內(nèi)容到新表
#?create table 新表名 like 復(fù)制的表名; ? ?復(fù)制格式,能將復(fù)制表的格式到新表,但是里面的內(nèi)容無(wú)法復(fù)制? ?insert into 新表名 select * from 復(fù)制的表名; ? ?復(fù)制原表內(nèi)容到新表
1.2克隆方法二(將表與內(nèi)容一起復(fù)制)
create table 新表名 (select * from 復(fù)制的表名) ?數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)能一起復(fù)制
二.清空表,刪除表內(nèi)的所有數(shù)據(jù)
2.1方法一
delete from naixu1; #DELETE清空表后,返回的結(jié)果內(nèi)有刪除的記錄條目; delete 工作時(shí)是一行一行的刪除記錄數(shù)據(jù)的;如果表中有自增長(zhǎng)字段,使用DELETE FROM 刪除所有記錄后,在此添加的記錄會(huì)從原來(lái)最大的記錄id后面繼續(xù)自增寫入數(shù)據(jù)
2.2方法二
truncate table naixu1; #TRUNCATE清空表后,沒(méi)有返回被刪除的條目:TRUNCATE 工作時(shí)是將表結(jié)構(gòu)按原樣重新建立 因此在速度上TRUNCATE會(huì)比DELETE清空表快 使用TRUNCATE TABLE 清空表內(nèi)數(shù)據(jù)后,id會(huì)從1開始重新記錄
2.3小小結(jié)之drop,truncate,eleted的對(duì)比
drop | truncate | delete |
屬于DDL | 屬于DDL | 屬于DML |
不可回滾 | 不可回滾 | 可回滾 |
不可帶where | 不可帶where | 可帶where |
表內(nèi)容和結(jié)構(gòu)刪除 | 表內(nèi)容刪除 | 表結(jié)構(gòu)在,表內(nèi)容要看where執(zhí)行的情況 |
刪除速度快 | 刪除速度快 | 刪除速度慢,需要逐行刪除 |
總結(jié):
不再需要一張表的時(shí)候用drop想刪除部分?jǐn)?shù)據(jù)行的時(shí)候用delete,并且?guī)蟱here子句保留表而刪除所有數(shù)據(jù)的時(shí)候用truncate刪除速度:drop>truncate> delete安全性 delete 最好
三.創(chuàng)建臨時(shí)表
##添加臨時(shí)表niaxu3 create temporary table naixu3 ( id int(4) zerofill primary key auto_increment, name varchar(10) not null, cardid int(18) not null unique key, hobby varchar(50)); ## 查看當(dāng)前庫(kù)中所有表 show tables; ##在臨時(shí)表中添加數(shù)據(jù) insert into test03 values(1,'hehe',12345,'看美女'); ##查看當(dāng)前表中所有數(shù)據(jù) select * from naixu3; ##退出數(shù)據(jù)庫(kù) quit ##重新登錄后進(jìn)行查看 mysql -u root -p ##查看之前創(chuàng)建的臨時(shí)表中所有數(shù)據(jù),發(fā)現(xiàn)已經(jīng)被自動(dòng)銷毀 select * from naixu3;
四.用戶管理
4.1新建用戶
CREATE USER '用戶名'@'來(lái)源地址' [IDENTIFIED BY [PASSWORD] '密碼']; #‘用戶名':指定將創(chuàng)建的用戶名 #‘來(lái)源地址':指定新創(chuàng)建的用戶可在哪些主機(jī)上登錄,可使用IP地址、網(wǎng)段、主機(jī)名的形式,本地用戶可用localhost,允許任意主機(jī)登錄可用通配符% #‘密碼':若使用明文密碼,直接輸入'密碼',插入到數(shù)據(jù)庫(kù)時(shí)由Mysql自動(dòng)加密; #######若使用加密密碼,需要先使用SELECT PASSWORD(‘密碼'); 獲取密文,再在語(yǔ)句中添加 PASSWORD ‘密文'; #若省略“IDENTIFIED BY”部分,則用戶的密碼將為空(不建議使用)
4.2使用明文密碼創(chuàng)建用戶
create user 'nannan'@'localhost' identified by '123455';
4.3使用密文創(chuàng)建數(shù)據(jù)庫(kù)
五.查看用戶信息
創(chuàng)建后的用戶保存在 mysql 數(shù)據(jù)庫(kù)的 user 表里 use mysql; #使用mysql庫(kù) select User from user;
六.重命名用戶
rename user 'nannan'@'localhost' to 'lnhs'@'localhost'; #將用戶nannan改名為lnhs
七.刪除用戶
drop user 'chenchen'@'localhost'; #刪除用戶chenchen
八.密碼管理
8.1修改當(dāng)前用戶密碼
set password = password('123456');
8.2修改其他用戶的密碼
set password for 'naixu'@'localhost' = password('123456');
8.3忘記root密碼
修改配置文件,添加配置,免密登錄MySQL vim /etc/my.cnf skip-grant-tables #添加,使登錄mysql不適用授權(quán)表
8.3.1給root設(shè)置密碼
update mysql.user set authentication_string = password('123456') where user='root'; flush privileges; #刷新 登入數(shù)據(jù)庫(kù)之后再次修改my.conf配置文件,注釋掉之前添加的配置命令,并再次重啟服務(wù) 使用新密碼登錄
九.數(shù)據(jù)庫(kù)授權(quán)
9.1關(guān)于授權(quán)
GRANT語(yǔ)句:專門用來(lái)設(shè)置數(shù)據(jù)庫(kù)用戶的訪問(wèn)權(quán)限。當(dāng)指定的用戶名不存在時(shí),GRANT語(yǔ)句將 會(huì)創(chuàng)建新的用戶;當(dāng)指定的用戶名存在時(shí),GRANT 語(yǔ)句用于修改用戶信息。
9.2授權(quán)
GRANT 權(quán)限列表 ON 數(shù)據(jù)庫(kù)名/表名 TO '用戶名'@'來(lái)源地址' [IDENTIFIED BY '密碼'];
權(quán)限列表 | 用于列出授權(quán)使用的各種數(shù)據(jù)庫(kù)操作,以逗號(hào)進(jìn)行分隔,如“select,insert,update”。使用“all”表示所有權(quán)限,可授權(quán)執(zhí)行任何操作。 |
數(shù)據(jù)庫(kù)名.表名 | 用于指定授權(quán)操作的數(shù)據(jù)庫(kù)和表的名稱,其中可以使用通配符 |
用戶名@來(lái)源地址 | 用于指定用戶名稱和允許訪問(wèn)的客戶機(jī)地址,即誰(shuí)能連接、能從哪里連接。來(lái)源地址可以是域名、IP地址,還可以使用“%”通配符,表示某個(gè)區(qū)域或網(wǎng)段內(nèi)的所有地址,如“%.accp.com”、“192.168.80.%”等。 |
IDENTIFIED BY | 用于設(shè)置用戶連接數(shù)據(jù)庫(kù)時(shí)所使用的密碼字符串。在新建用戶時(shí),若省略“IDENTIFIED BY”部分,則用戶的密碼將為空。 |
9.2.1授權(quán)列表
權(quán)限 | 功能 |
select | 查詢數(shù)據(jù) |
insert | 插入數(shù)據(jù) |
update | 更新數(shù)據(jù) |
delete | 刪除數(shù)據(jù) |
create | 創(chuàng)建庫(kù)、表 |
drop | 刪除庫(kù)、表 |
index | 建立索引 |
alter | 更改表屬性 |
event | 事件 |
trigger on | 創(chuàng)建觸發(fā)器 |
9.3數(shù)據(jù)庫(kù)授權(quán)
show grants for nannan@localhost; #查看用戶權(quán)限
指定用戶可以查看哪個(gè)數(shù)據(jù)庫(kù)或表,別的無(wú)法訪問(wèn)
grant select on hehe.* to nannan@localhost; #用戶nannan只有hehe庫(kù)下所有表的查詢權(quán)限
切換用戶進(jìn)行驗(yàn)證
9.4遠(yuǎn)程登陸授權(quán)(使用navicat遠(yuǎn)程登陸)
grant all on *.* to 'nannan'@'%' identified by '123456';
9.5撤銷權(quán)限
revoke select on hehe.* from nannan@localhost;
再次切換訪問(wèn),就已經(jīng)沒(méi)有權(quán)限了
十.總結(jié)
本章和拐友們講解MySQL的高階語(yǔ)句,包括了如何克隆表,如何進(jìn)行用戶的增刪改以及用戶的權(quán)限設(shè)置,總的來(lái)說(shuō)就是只要記住3點(diǎn)增刪改就行
到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)基本SQL語(yǔ)句教程之高級(jí)操作的文章就介紹到這了,更多相關(guān)MySQL SQL語(yǔ)句高級(jí)操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于MySQL的存儲(chǔ)函數(shù)(自定義函數(shù))的定義和使用方法詳解
本文主要講解了關(guān)于MySQL的存儲(chǔ)函數(shù)(自定義函數(shù))的定義和使用方法詳解與存儲(chǔ)函數(shù)與存儲(chǔ)過(guò)程的區(qū)別2018-03-03apache中訪問(wèn)不了偽靜態(tài)頁(yè)面的解決方法
apache中訪問(wèn)不了偽靜態(tài)頁(yè)面的解決方法,有需要的朋友可以參考下2013-02-02winxp 安裝MYSQL 出現(xiàn)Error 1045 access denied 的解決方法
自己遇到了這個(gè)問(wèn)題,也找了很久才解決,就整理一下,希望對(duì)大家有幫助!2010-07-07MySQL5.7慢查詢?nèi)罩緯r(shí)間與系統(tǒng)時(shí)間差8小時(shí)原因詳解
這篇文章主要介紹了MySQL5.7慢查詢?nèi)罩緯r(shí)間與系統(tǒng)時(shí)間差8小時(shí)原因詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01