共計 5478 個字符,預計需要花費 14 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
丸趣 TV 小編給大家分享一下 MySQL 數據庫高級操作示例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
文章目錄
數據表高級操作
準備工作:安裝 MySQL 數據庫
一、克隆表
方法一
方法二
二、清空表,刪除表內的所有數據
方法一
方法二
三、創建臨時表
四、創建外鍵約束
MySQL 中 6 種常見的約束
五、數據庫用戶管理
1、新建用戶
2、查看用戶信息
3、重命名用戶
4、刪除用戶
5、修改當前登錄用戶密碼
6、修改其他用戶密碼
7、忘記 root 密碼的解決辦法
六、數據庫用戶授權
1、授予權限
2、查看權限
3、撤銷權限
數據表高級操作
準備工作:安裝 MySQL 數據庫
Shell 腳本一鍵部署——源碼編譯安裝 MySQL
create database CLASS;
use CLASS;
create table TEST (id int not null,name char(20) not null,cardid varchar(18) not null unique key,primary key (id));
insert into TEST(id,name,cardid) values (1, zhangsan , 123123
insert into TEST(id,name,cardid) values (2, lisi , 1231231
insert into TEST(id,name,cardid) values (3, wangwu , 12312312
select * from TEST;
一、克隆表
將數據表的數據記錄生成到新的表中
方法一
例:create table TEST01 like TEST;
select * from TEST01;
desc TEST01;
insert into TEST01 select * from TEST;
select * from TEST01;
方法二
例:create table TEST02 (select * from TEST);
select * from TEST02;
二、清空表,刪除表內的所有數據
方法一
delete from TEST02;
#DELETE 清空表后,返回的結果內有刪除的記錄條目;DELETE 工作時是一行一行的刪除記錄數據的;如果表中有自增長字段,使用 DELETE FROM 刪除所有記錄后,再次新添加的記錄會從原來最大的記錄 ID 后面繼續自增寫入記錄
例:create table if not exists TEST03 (id int primary key auto_increment,name varchar(20) not null,cardid varchar(18) not null unique key);
show tables;
insert into TEST03 (name,cardid) values ( zhangsan , 11111
select * from TEST03;
delete from TEST03;
insert into TEST03 (name,cardid) values ( lisi , 22222
select * from TEST03;
方法二
例:select * from TEST03;
truncate table TEST03;
insert into TEST03 (name,cardid) values ( wangwu , 33333
select * from TEST03;
#TRUNCATE 清空表后,沒有返回被刪除的條目;TRUNCATE 工作時是將表結構按原樣重新建立,因此在速度上 TRUNCATE 會比 DELETE 清空表快;使用 TRUNCATE TABLE 清空表內數據后,ID 會從 1 開始重新記錄。
三、創建臨時表
臨時表創建成功之后,使用 SHOW TABLES 命令是看不到創建的臨時表的,臨時表會在連接退出后被銷毀。如果在退出連接之前,也可以可執行增刪改查等操作,比如使用 DROP TABLE 語句手動直接刪除臨時表。
CREATE TEMPORARY TABLE 表名 (字段 1 數據類型, 字段 2 數據類型[,...][,PRIMARY KEY (主鍵名)]);
例:create temporary table TEST04 (id int not null,name varchar(20) not null,cardid varchar(18) not null unique key,primary key (id));
show tables;
insert into TEST04 values (1, haha , 12345
select * from TEST04;
四、創建外鍵約束
保證數據的完整性和一致性
外鍵的定義:如果同一個屬性字段 x 在表一中是主鍵,而在表二中不是主鍵,則字段 x 稱為表二的外鍵。
主鍵表和外鍵表的理解:
1、以公共關鍵字作為主鍵的表為主鍵表(父表、主表)
2、以公共關鍵字作為外鍵的表為外鍵表(從表、外表)
注意:與外鍵關聯的主表的字段必須設置為主鍵,要求從表不能是臨時表,主從表的字段具有相同的數據類型、字符長度和約束
例:create table TEST04 (hobid int(4),hobname varchar(50));
create table TEST05 (id int(4) primary key auto_increment,name varchar(50),age int(4),hobid int(4));
alter table TEST04 add constraint PK_hobid primary key(hobid);
alter table TEST05 add constraint FK_hobid foreign key(hobid) references TEST04(hobid);
例:添加數據記錄
insert into TEST05 values (1, zhangsan , 20 ,1);
insert into TEST04 values (1, sleep
insert into TEST05 values (1, zhangsan ,20,1);
例:drop table TEST04;
drop table TEST05;
drop table TEST04;
注:如果要刪除外鍵約束字段
先刪除外鍵約束,再刪除外鍵名,此處不演示
show create table TEST05;
alter table TEST05 drop foreign key FK_hobid;
alter table TEST05 drop key FK_hobid;
desc TEST05;
MySQL 中 6 種常見的約束
主鍵約束 primary key 外鍵約束 foreign key 非空約束 not null 唯一約束 unique [key 默認值約束 default 自增約束 auto_increment
五、數據庫用戶管理
1、新建用戶
CREATE USER 用戶名 @ 來源地址 [IDENTIFIED BY [PASSWORD] 密碼
‘用戶名’:指定將創建的用戶名
‘來源地址’:指定新創建的用戶可在哪些主機上登錄,可使用 IP 地址、網段、主機名的形式,本地用戶可用 localhost,允許任意主機登錄可用通配符 %
‘密碼’:若使用明文密碼,直接輸入’密碼’,插入到數據庫時由 Mysql 自動加密;
—— 若使用加密密碼,需要先使用 SELECT PASSWORD(‘密碼’); 獲取密文,再在語句中添加 PASSWORD‘密文’;
—— 若省略“IDENTIFIED BY”部分,則用戶的密碼將為空(不建議使用)
例:create user zhangsan @ localhost identified by 123123
select password( 123123
create user lisi @ localhost identified by password *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1
2、查看用戶信息
創建后的用戶保存在 mysql 數據庫的 user 表里
USE mysql;
SELECT User,authentication_string,Host from user;
3、重命名用戶
RENAME USER zhangsan @ localhost TO wangwu @ localhost
SELECT User,authentication_string,Host from user;
4、刪除用戶
DROP USER lisi @ localhost
SELECT User,authentication_string,Host from user;
5、修改當前登錄用戶密碼
SET PASSWORD = PASSWORD( abc123
mysql -u root -p
6、修改其他用戶密碼
SET PASSWORD FOR wangwu @ localhost = PASSWORD( abc123
use mysql;
SELECT User,authentication_string,Host from user;
7、忘記 root 密碼的解決辦法
1、修改 /etc/my.cnf 配置文件,不使用密碼直接登錄到 mysql
vim /etc/my.cnf
[mysqld]
skip-grant-tables #添加,使登錄 mysql 不使用授權表
systemctl restart mysqld
mysql #直接登錄
2、使用 update 修改 root 密碼,刷新數據庫
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD(112233) where user= root
FLUSH PRIVILEGES;
再把 /etc/my.cnf 配置文件里的 skip-grant-tables 刪除,并重啟 mysql 服務。mysql -u root -p
112233
六、數據庫用戶授權
1、授予權限
GRANT 語句:專門用來設置數據庫用戶的訪問權限。當指定的用戶名不存在時,GRANT 語句將會創建新的用戶;當指定的用戶名存在時,GRANT 語句用于修改用戶信息。GRANT 權限列表 ON 數據庫名. 表名 TO 用戶名 @ 來源地址 [IDENTIFIED BY 密碼
# 權限列表:用于列出授權使用的各種數據庫操作,以逗號進行分隔,如“select,insert,update”。使用“all”表示所有權限,可授權執行任何操作。#數據庫名. 表名:用于指定授權操作的數據庫和表的名稱,其中可以使用通配符“*”。* 例如, 使用“kgc.*”表示授權操作的對象為 kgc 數據庫中的所有表。# 用戶名 @來源地址:用于指定用戶名稱和允許訪問的客戶機地址,即誰能連接、能從哪里連接。來源地址可以是域名、IP 地址,還可以使用“%”通配符,表示某個區域或網段內的所有地址,如“%.lic.com”、“192.168.184.%”等。#IDENTIFIED BY:用于設置用戶連接數據庫時所使用的密碼字符串。在新建用戶時,若省略“IDENTIFIED BY”部分, 則用戶的密碼將為空。
# 允許用戶 wangwu 在本地查詢 CLASS 數據庫中所有表的數據記錄,但禁止查詢其他數據庫中的表的記錄。
例:GRANT select ON CLASS.* TO wangwu @ localhost IDENTIFIED BY 123456
quit;
mysql -u wangwu -p
123456
show databases;
use information_schema;
show tables;
select * from INNODB_SYS_TABLESTATS;
# 允許用戶 wangwu 在本地遠程連接 mysql,并擁有所有權限。
quit;
mysql -u root -p112233
GRANT ALL PRIVILEGES ON *.* TO wangwu @ localhost IDENTIFIED BY 123456
flush privileges;
mysql -u wangwu -p123456
create database SCHOOL;
2、查看權限
SHOW GRANTS FOR 用戶名 @來源地址;
SHOW GRANTS FOR wangwu @ localhost
3、撤銷權限
REVOKE 權限列表 ON 數據庫名. 表名 FROM 用戶名 @來源地址;
例:quit;
mysql -u root -p112233
SHOW GRANTS FOR wangwu @ localhost
REVOKE SELECT ON CLASS .* FROM wangwu @ localhost
SHOW GRANTS FOR wangwu @ localhost
#USAGE 權限只能用于數據庫登陸,不能執行任何操作;USAGE 權限不能被回收,即 REVOKE 不能刪除用戶。
flush privileges;
以上是“MySQL 數據庫高級操作示例”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!
向 AI 問一下細節