1. 程式人生 > 其它 >mysql資料庫管理及操作

mysql資料庫管理及操作

mysql資料庫管理及操作

一,資料表的複製,克隆及清空

1.複製

create table test1 like test;   複製格式,通過LIKE方法,複製test表結構生成test1表
insert into test1 select * from test;       #備份內容

2.克隆

CREATE TABLE ceshi (SELECT * from info);  #複製info表資料到ceshi表中
show create table ceshi\G;       #獲取資料表的表結構、索引等資訊
SELECT * from ceshi;

3.清空

方法—:
delete from test01;
#DELETE清空表後,返回的結果內有刪除的記錄條目;
DELETE工作時是一行一行的刪除記錄資料的;如果表中有自增長欄位,使用DELETE FROM刪除所有記錄後,再次新新增的記錄會從原來最大的記錄ID後面繼續自增寫入記錄。
delete from test01;   不會刪除表的結構

方法二:
truncate table test01;
#TRIUNCATE清空表後,沒有返回被刪除的條目:TRUINCATR.工作時是將表結構按原樣重新建立,因此在速度上TRUNCATE會比DEIETE清空錶快;使用TRUINCATE TABLE清空表內資料後,ID會從1開始重新記錄

【不再需要一張表的時候,用drop;
想刪除部分資料行時候,用delete,並且帶上where子句;
保留表而刪除所有資料的時候用truncate】

二,臨時表的建立

臨時表建立成功之後,使用SHOW TABLES命令是看不到建立的臨時表的,臨時表會在連線退出後被銷燬。 如果在退出連線之前,也可以可執行增刪改查等操作,比如使用 DROP TABLE 語句手動直接刪除臨時表。同時,臨時表無法建立外來鍵

CREATE TEMPORARY TABLR 表名(欄位1資料型別,欄位2資料型別[,...][, PRIMARY KEY (主鍵名)1);

三,mysql常見約束

主鍵約束(primary key)
外來鍵約束(foreign key)
非空約束(not null)
唯一性約束(unique [key|index])
預設值約束(default)
自增約束(auto_increment)
新增主鍵約束:alter table 表名 add constraint 主鍵 (形如:PK_表名) primary key 表名(主鍵欄位);
新增外來鍵約束:alter table 從表 add constraint 外來鍵(形如:FK_從表_主表) foreign key 從表(外來鍵欄位) references 主表(主鍵欄位);
(alter table 主表名 add foreign key (欄位 ) references 從表名(欄位) on delete cascade)
新增唯一約束:
ALTER table 表名 add unique key 約束名 (欄位);
刪除主鍵約束:alter table 表名 drop primary key;
刪除外來鍵約束:alter table 表名 drop foreign key 外來鍵(區分大小寫);

四,資料庫使用者管理

1.新建使用者

CREATE USER '使用者名稱'@'來源地址' [IDENTIFIED BY [PASSWORD] '密碼'];

'使用者名稱':指定將建立的使用者名稱
'來源地址':指定新建立的使用者可在哪些主機上登入,可使用IP地址、網段、主機名的形式,本地使用者可用localhost,允許任意主機登入可用萬用字元%;
'密碼':若使用明文密碼,直接輸入'密碼',插入到資料庫時由Mysql自動加密;
若使用加密密碼,需要先使用SELECT PASSWORD('密碼'); 獲取密文,再在語句中新增 PASSWORD '密文';
若省略“IDENTIFIED BY”部分,則使用者的密碼將為空(不建議使用)

2.檢視使用者資訊,重新命名,刪除

檢視
USE mysql;
SELECT User,authentication_string,Host from user;

重新命名
rename user 'zhangsan'@'localhost' to 'lisi'@'localhost';
SELECT User,authentication_string,Host from user;

刪除使用者
drop user 'zhangsan'@'localhost';
SELECT User,authentication_string,Host from user;

3.修改密碼

修改當前登入使用者
set PASSWORD = PASSWORD('12345678');
quit
mysql -u root -p

修改其他使用者密碼
SET PASSWORD FOR 'zhangsan'@'localhost' = PASSWORD('123123');
use mysql;
SELECT User,authentication_string,Host from user;
忘記 root 密碼的解決辦法
vim /etc/my.cnf
[mysqld]
skip-grant-tables		#新增,使登入mysql不使用授權表
systemctl restart mysqld
mysql			#直接登入

使用 update 修改 root 密碼,重新整理資料庫
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('123123') where user='root';
FLUSH PRIVILEGES;
quit

再把 /etc/my.cnf 配置檔案裡的 skip-grant-tables 刪除,並重啟 mysql 服務。
mysql -u root -p123123

五,資料庫使用者授權

GRANT 許可權列表 ON 資料庫名.表名 TO '使用者名稱'@'來源地址' [IDENTIFIED BY '密碼'];

許可權列表:用於列出授權使用的各種資料庫操作,以逗號進行分隔,如“select,insert,update”。使用“all”表示所有許可權,可授權執行任何操作;

資料庫名.表名:用於指定授權操作的資料庫和表的名稱,其中可以使用萬用字元“*”。*例如,使用“kgc.*”表示授權操作的物件為 kgc資料庫中的所有表;

'使用者名稱@來源地址':用於指定使用者名稱稱和允許訪問的客戶機地址,即誰能連線、能從哪裡連線。來源地址可以是域名、IP 地址,還可以使用“%”萬用字元,表示某個區域或網段內的所有地址,如“%.myh.com”、“192.168.10.%”等;

IDENTIFIED BY:用於設定使用者連線資料庫時所使用的密碼字串。在新建使用者時,若省略“IDENTIFIED BY”部分, 則使用者的密碼將為空。
設定使用者許可權(使用者不存在時,則新建使用者)
grant 許可權列表 on 資料庫名.表名 to 使用者名稱@來源地址 [identified by ‘密碼’]

檢視使用者的許可權
show grants for 使用者名稱@來源地址

撤銷使用者的許可權
remove 許可權列表 on 資料庫名.表名 from 使用者名稱@來源地址
flush privileges;