MySQL高級操作指令匯總
一.克隆表
法一
mysql> create table info1 like info;
復制格式,通過LIKE方法,復制info表結(jié)構生成info1表
但是不備份內(nèi)容
mysql> insert into info1 select * from info;
法二
mysql> create table info2(select * from info);
可以將表的內(nèi)容都克隆到新表中,但是表格式可能會丟失。
二.清空表
法一 delete
mysql> delete from ouou1;
DELETE清空表后,返回的結(jié)果內(nèi)有刪除的記錄條目;
只清空表的內(nèi)容,不刪除表
法二 truncate
mysql> truncate table info1;
TRUNCATE清空表后,沒有返回被刪除的條目: TRUNCATE 工作時是將表結(jié)構按原樣重新建立
法三 drop
mysql> drop table info1;
總結(jié)
delete from info1;
屬于DML
可回滾(可恢復)
可帶where
表結(jié)構在,表內(nèi)容要看where執(zhí)行的情況
冊刪除速度慢,需要逐行刪除
truncate table info1;
屬于DDL
不可回滾
不可帶where
表內(nèi)容刪除
刪除速度快
drop table info1;
屬于DDL
不可回滾(無法恢復)
不可帶where
表內(nèi)容和結(jié)構刪除
刪除速度快
刪除速度 drop> truncate > delete
安全性 delete 最好
三.創(chuàng)建臨時表
mysql> create temporary table info1 (id int(4) not null primary key,name varchar(20),age int(4));
沒有真正寫入磁盤中,只是存在內(nèi)存中,當退出數(shù)據(jù)庫之后再查看臨時表就沒有記錄了。
臨時表無法創(chuàng)建外鍵
四.外鍵約束
設置外鍵
mysql> alter table stu add foreign key (proid) references pro (pid);
將主表的主鍵和外表的外鍵聯(lián)系起來。這兩個的這兩個字段必須設置為相同的數(shù)據(jù)類型,字符長度和約束。
模擬錯誤
此時就會有外鍵錯誤
五.用戶管理
1.查看用戶信息
用戶信息一般存放在mysql數(shù)據(jù)庫的user表中
(root@localhost) [mysql]> select User,Host,authentication_string from user;
2.新建用戶create user
CREATE USER ‘用戶名’@‘來源地址’ IDENTIFIED BY 密碼’;
‘用戶名’:指定將創(chuàng)建的用戶名.
‘來源地址’:指定新創(chuàng)建的用戶可在哪些主機上登錄,可使用IP地址、網(wǎng)段、主機名的形式,本地用戶可用localhost,允許任意主機登錄??捎猛ㄅ浞?
‘密碼’:若使用明文密碼,直接輸入’密碼’,插入到數(shù)據(jù)庫時由Mysql自動加密;
若使用加密密碼,需要先使用SELECT PASSWORD(‘密碼’);獲取密文,再在語句中PASSWORD ‘密文’;
若省略“IDENTIFIED BY"部分,則用戶的密碼將為空(不建議使用)
密碼為明文
(root@localhost) [mysql]> create user ‘tan’@‘localhost’ identified by ‘Tcy@2021’;
密碼為密文
(root@localhost) [mysql]> create user ‘tan’@’%’ identified by ‘6DCA0D3E3AC09527DF9052DF166C90D3100043D1’;
普通用戶沒有操作權限,無法增刪改查數(shù)據(jù)庫
3.重命名rename
(root@localhost) [mysql]> rename user ‘yyy’@’%’ to ‘yyy1’@’%’;
4.刪除用戶
(root@localhost) [mysql]> drop user ‘tan1’@’%’;
5.修改密碼
1.修改當前用戶的密碼
(tan@localhost) [(none)]> set password = password(‘Lbb@2021’);
2.修改其他用戶的密碼
(root@localhost) [mysql]> set password for ‘tan’@‘localhost’ = password(‘123456’);
六.數(shù)據(jù)庫用戶授權
1.授予權限grant
專門用來設置數(shù)據(jù)庫用戶的訪問權限。當指定的用戶名不存在時,GRANT語句將會創(chuàng)建新的用戶;當指定的用戶名存在時,GRANT 語句用于修改用戶信息。
GRANT 權限列表 ON 數(shù)據(jù)庫名.表名 TO ‘用戶名’@‘來源地址’ [IDENTIFIED BY ‘密碼’];
權限列表:用于列出授權使用的各種數(shù)據(jù)庫操作,以逗號進行分隔,如“select,insert,update”。使用“all”表示所有權限,可授權執(zhí)行任何操作。
數(shù)據(jù)庫名.表名:用于指定授權操作的數(shù)據(jù)庫和表的名稱,其中可以使用通配符“”。例如,使用“kgc.”表示授權操作的對象為 kgc數(shù)據(jù)庫中的所有表。
‘用戶名@來源地址’:用于指定用戶名稱和允許訪問的客戶機地址,即誰能連接、能從哪里連接。來源地址可以是域名、IP 地址,還可以使用“%”通配符,表示某個區(qū)域或網(wǎng)段內(nèi)的所有地址。
IDENTIFIED BY:用于設置用戶連接數(shù)據(jù)庫時所使用的密碼字符串。在新建用戶時,若省略“IDENTIFIED BY”部分, 則用戶的密碼將為空。
(root@localhost) [mysql]> grant select on tan.stu to ‘tan’@‘localhost’ identified by ‘Tcy@2021’;
在tan用戶中 ,但是在授權了select查詢的操作,其他增刪改不能使用。
對于增刪改這些操作ouou是沒有權限的,所以會被拒絕。
2.查看權限
(root@localhost) [mysql]> show grants for ‘tan’@‘localhost’;
3.撤銷權限
(root@localhost) [mysql]> revoke select on tan.stu from ‘tan’@‘localhost’;
4.刷新權限
flush privileges
到此這篇關于MySQL高級操作指令匯總的文章就介紹到這了,更多相關MySQL 高級操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
如何在SQL Server中實現(xiàn) Limit m,n 的功能
本篇文章是對在SQL Server中實現(xiàn) Limit m,n功能的方法進行了詳細的分析介紹,需要的朋友參考下2013-06-06Windows下MySQL日志基本的查看以及導入導出用法教程
這篇文章主要介紹了Windows下MySQL日志基本的查看以及導入導出用法教程,需要的朋友可以參考下2015-11-11