MySQL5.7(二)數據庫的基本操作


登錄MySQL數據庫

格式:mysql -u 用戶名 -h 主機名或IP地址  -P 端口號 -p 密碼

 1、顯示數據庫

SHOW DATABASES;

MySQL5.7.20默認數據庫

  • information_schema
  • mysql #必須存在的,用於描述用戶訪問權限;
  • performance_schema
  • sys

2、創建數據庫

CREATE DATABASE 數據庫實例名;
 1   實戰演練如下:
 2  1)#utf8編碼,創建一個名為:cuixiaozhao的MySQL數據庫實例。
 3  mysql> CREATE DATABASE cuixiaozhao DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
 4  Query OK, 1 row affected (0.01 sec)
 5  mysql> SHOW CREATE DATABASE cuixiaozhao;
 6  +-------------+----------------------------------------------------------------------+
 7  | Database    | Create Database                                                      |
 8  +-------------+----------------------------------------------------------------------+
 9  | cuixiaozhao | CREATE DATABASE `cuixiaozhao` /*!40100 DEFAULT CHARACTER SET utf8 */ |
10  +-------------+----------------------------------------------------------------------+
11  row in set (0.00 sec)
12  mysql>
13  2)#gbk編碼,創建一個名為:cuixiaosi的MySQL數據庫實例。
14  mysql> CREATE DATABASE cuixiaosi DEFAULT CHARSET gbk COLLATE gbk_chinese_ci;
15  Query OK, 1 row affected (0.00 sec)
16  mysql> SHOW CREATE DATABASE cuixiaosi;
17  +-----------+-------------------------------------------------------------------+
18  | Database  | Create Database                                                   |
19  +-----------+-------------------------------------------------------------------+
20  | cuixiaosi | CREATE DATABASE `cuixiaosi` /*!40100 DEFAULT CHARACTER SET gbk */ |
21  +-----------+-------------------------------------------------------------------+
22  row in set (0.00 sec)
23  mysql>
View Code
默認編碼格式為:latin1,不推薦使用,建議使用如下utf8編碼方式進行創建!
#utf8編碼
CREATE DATABASE 數據庫實例名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#gbk編碼
CREATE DATABASE 數據庫實例名 DEFAULT CHARSET gbk COLLATE gbk_chinese_ci;

3、聲明查看數據的定義

SHOW CREATE DATABASE 數據庫實例名;
 1 舉例如下:  2 
 3 mysql> SHOW CREATE DATABASE cuixiaozhao;#查看創建好的數據庫實例-cuixiaozhao的定義。  4 +-------------+----------------------------------------------------------------------+
 5 | Database | Create Database |
 6 +-------------+----------------------------------------------------------------------+
 7 | cuixiaozhao | CREATE DATABASE `cuixiaozhao` /*!40100 DEFAULT CHARACTER SET utf8 */ |
 8 +-------------+----------------------------------------------------------------------+
 9 1 row in set (0.00 sec) 10 
11 mysql> SHOW CREATE DATABASE cuixiaosi;#查看創建好的數據庫實例-cuixiaosi的定義。 12 +-----------+-------------------------------------------------------------------+
13 | Database | Create Database |
14 +-----------+-------------------------------------------------------------------+
15 | cuixiaosi | CREATE DATABASE `cuixiaosi` /*!40100 DEFAULT CHARACTER SET gbk */ |
16 +-----------+-------------------------------------------------------------------+
17 1 row in set (0.00 sec) 18 
19 mysql>
View Code

4、使用數據庫實例

USE 數據庫實例名;
1 實戰演練如下: 2 mysql> USE cuixiaozhao;#使用數據庫實例cuixiaozhao; 3 Database changed 4 mysql>
View Code

5、刪除數據庫

DROP 數據庫實例名;
 1 實戰演練如下:  2 mysql> DROP DATABASE cuixiaosi;  3 Query OK, 0 rows affected (0.00 sec)  4 
 5 mysql> SHOW DATABASES;  6 +--------------------+
 7 | Database |
 8 +--------------------+
 9 | information_schema |
10 | cuixiaozhao |
11 | mysql |
12 | performance_schema |
13 | sys |
14 +--------------------+
15 5 rows in set (0.00 sec) 16 
17 mysql>
18 
19 注意:使用DROP DATABASE命令時要非常謹慎,MySQL不會給予任務提示確認信息,DROP DATABASE聲明刪除數據庫后,數據庫中存儲的所有數據表和數據也將一並被刪除且不可恢復。
View Code

6、MySQL用戶管理及授權

創建用戶

CREATE USER '用戶名'@'IP地址' IDENTIFIED BY '密碼';

修改用戶

RENAME USER '用戶名'@'IP地址' TO '新/舊用戶名'@'新/舊IP地址';

修改密碼

SET PASSWORD FOR '用戶名'@'IP地址' = PASSWORD('新密碼');

刪除用戶

DROP USER '用戶名'@'IP地址'; 

 1 實戰演練如下:  2 mysql> CREATE USER 'cuixiaozhao'@'localhost' IDENTIFIED BY 'Ab123456!@#$';  3 
 4 Query OK, 0 rows affected (0.00 sec)  5 
 6 mysql> RENAME USER 'cuixiaozhao'@'localhost' TO 'zhaoxiaocui'@'localhost';  7 Query OK, 0 rows affected (0.00 sec)  8 
 9 mysql> SET PASSWORD FOR 'zhaoxiaocui'@'localhost' = PASSWORD('$#@!654321bA'); 10 Query OK, 0 rows affected, 1 warning (0.00 sec) 11 
12 mysql> DROP USER 'zhaoxiaocui'@'localhost'; 13 Query OK, 0 rows affected (0.00 sec) 14 
15 mysql>
View Code

查看權限

SHOW GRANTS FOR '用戶名'@'IP地址';
授權

GRANT ALL ON *.* TO 'cuixiaozhao'@'localhost';

撤銷授權

REVOKE ALL ON *.* FROM 'cuixiaozhao'@'localhost';

 1 實戰演練如下:  2 
 3 mysql> CREATE USER 'cuixiaozhao'@'localhost' IDENTIFIED BY 'Ab123456!@#$';  4 
 5 Query OK, 0 rows affected (0.00 sec)  6 
 7 mysql> SHOW GRANTS FOR 'cuixiaozhao'@'localhost';  8 +-------------------------------------------------+
 9 | Grants for cuixiaozhao@localhost |
10 +-------------------------------------------------+
11 | GRANT USAGE ON *.* TO 'cuixiaozhao'@'localhost' |
12 +-------------------------------------------------+
13 1 row in set (0.00 sec) 14 
15 mysql> GRANT ALL ON *.* TO 'cuixiaozhao'@'localhost'; 16 Query OK, 0 rows affected (0.00 sec) 17 
18 mysql> SHOW GRANTS FOR 'cuixiaozhao'@'localhost'; 19 +----------------------------------------------------------+
20 | Grants for cuixiaozhao@localhost |
21 +----------------------------------------------------------+
22 | GRANT ALL PRIVILEGES ON *.* TO 'cuixiaozhao'@'localhost' |
23 +----------------------------------------------------------+
24 1 row in set (0.00 sec) 25 
26 mysql> REVOKE ALL ON *.* FROM 'cuixiaozhao'@'localhost'; 27 Query OK, 0 rows affected (0.00 sec) 28 
29 mysql> SHOW GRANTS FOR 'cuixiaozhao'@'localhost'; 30 +-------------------------------------------------+
31 | Grants for cuixiaozhao@localhost |
32 +-------------------------------------------------+
33 | GRANT USAGE ON *.* TO 'cuixiaozhao'@'localhost' |
34 +-------------------------------------------------+
35 1 row in set (0.00 sec) 36 
37 mysql>
View Code

all privileges 除grant外的所有權限;
select 僅查權限;
select,insert 查和插入權限;
usage 無訪問權限;
alter 使用alter table;
alter routine 使用alter procedure和drop procedure;
create 使用create table;
create routine 使用create procedure;
create temporary tables 使用create temporary tables;
create user 使用create user、drop user、rename user和revoke all privileges;
create view 使用create view;
delete 使用delete;
drop 使用drop table;
execute 使用call和存儲過程;
file 使用select into outfile 和 load data infile;
grant option 使用grant 和 revoke;
index 使用index;
insert 使用insert;
lock tables 使用lock table;
process 使用show full processlist;
select 使用select;
show databases 使用show databases;
show view 使用show view;
update 使用update;
reload 使用flush;
shutdown 使用mysqladmin shutdown(關閉MySQL);
super 使用change master、kill、logs、purge、master和set global,還允許mysqladmin調試登錄;
replication client 服務器位置的訪問;
replication slave 主從復制時使用;

 7、其他項目說明

1、對於目標數據庫以及內部其他:
數據庫名.*          #指定數據庫中的所有表
數據庫名.表         #指定數據庫中的某張表
數據庫名.存儲過程    #指定數據庫中的存儲過程
*.*               #所有數據庫中的所有表
2、用戶名及IP地址
'用戶名'@'IP地址' #用戶只能在該IP下才能訪問 '用戶名'@'192.168.1.%' #用戶只能在該IP段下才能訪問(通配符%表示任意) '用戶名'@'%' #用戶可以在任意IP下訪問(默認IP地址為%)
8、FLUSH PRIVILEGES;#將數據讀取到內存中,從而立即生效。
9、數據庫存儲引擎
1、數據庫存儲引擎是數據庫底層軟件組件,數據庫管理系統(DBMS)使用數據引擎進行創建、查詢、更新和刪除數據庫操作。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能。MySQL的核心就是存儲引擎!
2、MySQL提供了多個不同的存儲引擎,包括處理事務安全表的引擎和處理非事務安全表的引擎。針對特定的要求,可以對每一個表使用不同的存儲引擎。
查看系統所支持的引擎。
SHOW ENGINES;
 1 mysql> mysql> SHOW ENGINES;
 2 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
 3 | Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
 4 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
 5 | InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
 6 | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
 7 | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
 8 | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
 9 | MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
10 | CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
11 | ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
12 | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
13 | FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
14 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
15 9 rows in set (0.00 sec)
View Code

 

存儲引擎的選擇

1、如果要提供提交、回滾和崩潰恢復能力的事務安全(ACID兼容)能力,並要求實現並發控制,InnoDB是個很好的選擇;

2、如果數據表主要用於插入和查詢記錄,則MyISAM引擎能提供較高的處理效率;

3、如果只是臨時存放數據,數據量並不大並且不需要較高的數據安全性,可以選擇將數據保存在內存中的Memory引擎,MySQL中使用該引擎作為臨時表,存放查詢的中間結果。

4、如果只有INSERT和SELECT操作,可以選擇Arichive引擎,Archive存儲引擎支持高並發的插入操作,但是本身並不是事物安全的,Archive存儲引擎非常適合存儲歸檔數據;

總結,使用哪種存儲引擎需要靈活總結,使用合適的存儲引擎,將會提高整個數據庫的性能!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM