1. 程式人生 > 資料庫 >【MySQL】使用MySQL(連線、選擇資料庫、顯示資料庫和表資訊)

【MySQL】使用MySQL(連線、選擇資料庫、顯示資料庫和表資訊)

第3章 使用MySQL

文章目錄

簡單記錄 - MySQL必知必會 - [英]Ben Forta

將學習如何連線和登入到MySQL,如何執行MySQL語句,以及如何獲得資料庫和表的資訊。

連線

連線到MySQL,需要以下資訊:

  • 主機名(計算機名)——如果連線到本地MySQL伺服器,為localhost;

  • 一個合法的使用者名稱;如root;

  • 埠(如果使用預設埠3306之外的埠);

  • 使用者口令(你的使用者名稱對應設定的密碼)。

在連線之後,就可以訪問登入名能夠訪問的任意資料庫和表了

登入:mysql 【-h 主機名 -P 埠號】 -u 使用者名稱 -p密碼

退出:exit或ctrl+C

mysql 【-h 主機名 -P 埠號】 -u 使用者名稱 -p密碼
例子:mysql -h localhost -P3306 -u root -p123456 前面三個有沒有空格都行,-p必須沒有空格
-P是port埠號的意思,-h是host主機的意思,localhost是本地主機的意思。

如果是本地登入和使用預設埠3306的話,可以這樣登入

mysql -u root -p123456

C:\Users\x1c>mysql -h localhost -P 3306 -u root -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.28 MySQL Community Server (GPL)

Copyright (c) 2000,2019,Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit
Bye

C:\Users\x1c>mysql -h localhost -P 3306 -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.28 MySQL Community Server (GPL)

Copyright (c) 2000,Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit
Bye

C:\Users\x1c>mysql  -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.28 MySQL Community Server (GPL)

Copyright (c) 2000,Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

在這裡插入圖片描述

選擇資料庫

連線到MySQL後,選擇一個數據庫操作,選擇資料庫可使用USE關鍵字。

術語:關鍵字(key word) 作為MySQL語言組成部分的一個保留字,我們不能用關鍵字命名一個表或列。

例如,為了使用mysqlcrashcourse資料庫,應該輸入以下內容USE mysqlcrashcourse

mysql> USE mysqlcrashcourse;
Database changed
mysql>

分析:USE mysqlcrashcourse選擇mysqlcrashcourse資料庫,Database changed訊息代表是mysql命令列程式選擇資料庫mysqlcrashcourse

成功

注意:我們必須先使用USE開啟對應的資料庫,才能讀取資料庫中的資料。

瞭解資料庫和表

如果不知道可以使用的資料庫名時怎麼辦?

怎樣能顯示可用的資料庫列表呢?

資料庫、表、列、使用者、許可權等的資訊被儲存在資料庫和表中(MySQL使用MySQL來儲存這些資訊)。不過,內部的表一般不直接訪問。可用MySQL的SHOW命令來顯示這些資訊(MySQL從內部表中提取這些資訊)。請看下面的例子:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mmall_learning     |
| mysql              |
| mysqlcrashcourse   |
| performance_schema |
| spring             |
| sys                |
+--------------------+
7 rows in set (0.00 sec)

SHOW DATABASES;返回可用資料庫的一個列表。包含在這個列表中的可能是MySQL內部使用的資料庫(如例子中的mysql和information_schema等)。當然,還有很多自己建立的資料庫(如mmall_learning,mysqlcrashcourse,,spring都是我之前建立的。)。

為了獲得一個數據庫內的表的列表,使用SHOW TABLES命令;如下所示:

mysql> SHOW TABLES;
+----------------------------+
| Tables_in_mysqlcrashcourse |
+----------------------------+
| customers                  |
| orderitems                 |
| orders                     |
| productnotes               |
| products                   |
| vendors                    |
+----------------------------+
6 rows in set (0.01 sec)

mysql>

SHOW TABLES;返回當前選擇的資料庫內可用表的列表。SHOW也可以用來顯示某個表的列,如顯示customers表的所有列:

mysql> SHOW COLUMNS FROM customers;
+--------------+-----------+------+-----+---------+----------------+
| Field        | Type      | Null | Key | Default | Extra          |
+--------------+-----------+------+-----+---------+----------------+
| cust_id      | int(11)   | NO   | PRI | NULL    | auto_increment |
| cust_name    | char(50)  | NO   |     | NULL    |                |
| cust_address | char(50)  | YES  |     | NULL    |                |
| cust_city    | char(50)  | YES  |     | NULL    |                |
| cust_state   | char(5)   | YES  |     | NULL    |                |
| cust_zip     | char(10)  | YES  |     | NULL    |                |
| cust_country | char(50)  | YES  |     | NULL    |                |
| cust_contact | char(50)  | YES  |     | NULL    |                |
| cust_email   | char(255) | YES  |     | NULL    |                |
+--------------+-----------+------+-----+---------+----------------+
9 rows in set (0.00 sec)

mysql>

在這裡插入圖片描述

分析:

SHOW COLUMNS要求給出一個表名(這個例子中的FROM customers),它對每個欄位返回一行,行中包含欄位名、資料型別、是否允許NULL、鍵資訊、預設值以及其他資訊(如欄位cust_id的auto_increment)。

說明:什麼是自動增量? 某些表列需要唯一值。例如,(上面例子中所示的)顧客ID。在每個行新增到表中時,MySQL可以自動地為每個行分配下一個可用編號,不用在新增一行時手動分配唯一值(這樣做必須記住最後一次使用的值)。這個功能就是所謂的自動增量。如果需要它,則必須在建立表時把它作為表定義的組成部分。

提示:DESCRIBE語句 MySQL支援用DESCRIBE作為SHOW COLUMNS FROM的一種快捷方式。換句話說,DESCRIBE customers;是SHOW COLUMNSFROM customers;的一種快捷方式。

在這裡插入圖片描述

所支援的其他SHOW語句還有:

  • SHOW STATUS,用於顯示廣泛的伺服器狀態資訊;

  • SHOW CREATE DATABASE和SHOW CREATE TABLE,分別用來顯示建立特定資料庫或表的MySQL語句;

  • SHOW GRANTS,用來顯示授予使用者(所有使用者或特定使用者)的安全許可權;

    mysql> show grants;
    +---------------------------------------------------------------------+
    | Grants for root@localhost                                           |
    +---------------------------------------------------------------------+
    | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
    | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
    +---------------------------------------------------------------------+
    2 rows in set (0.00 sec)
    
  • SHOW ERRORS和SHOW WARNINGS,用來顯示伺服器錯誤或警告訊息。

提示:

進一步瞭解SHOW請在mysql命令列實用程式中,執行命令HELP SHOW;顯示允許的SHOW語句。

mysql> HELP SHOW;
Name: 'SHOW'
Description:
SHOW has many forms that provide information about databases,tables,columns,or status information about the server. This section describes
those following:

SHOW {BINARY | MASTER} LOGS
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW CHARACTER SET [like_or_where]
SHOW COLLATION [like_or_where]
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]
SHOW CREATE DATABASE db_name
SHOW CREATE EVENT event_name
SHOW CREATE FUNCTION func_name
SHOW CREATE PROCEDURE proc_name
SHOW CREATE TABLE tbl_name
SHOW CREATE TRIGGER trigger_name
SHOW CREATE VIEW view_name
SHOW DATABASES [like_or_where]
SHOW ENGINE engine_name {STATUS | MUTEX}
SHOW [STORAGE] ENGINES
SHOW ERRORS [LIMIT [offset,] row_count]
SHOW EVENTS
SHOW FUNCTION CODE func_name
SHOW FUNCTION STATUS [like_or_where]
SHOW GRANTS FOR user
SHOW INDEX FROM tbl_name [FROM db_name]
SHOW MASTER STATUS
SHOW OPEN TABLES [FROM db_name] [like_or_where]
SHOW PLUGINS
SHOW PROCEDURE CODE proc_name
SHOW PROCEDURE STATUS [like_or_where]
SHOW PRIVILEGES
SHOW [FULL] PROCESSLIST
SHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]
SHOW PROFILES
SHOW RELAYLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW SLAVE HOSTS
SHOW SLAVE STATUS [FOR CHANNEL channel]
SHOW [GLOBAL | SESSION] STATUS [like_or_where]
SHOW TABLE STATUS [FROM db_name] [like_or_where]
SHOW [FULL] TABLES [FROM db_name] [like_or_where]
SHOW TRIGGERS [FROM db_name] [like_or_where]
SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]
SHOW WARNINGS [LIMIT [offset,] row_count]

like_or_where:
    LIKE 'pattern'
  | WHERE expr

If the syntax for a given SHOW statement includes a LIKE 'pattern'
part,'pattern' is a string that can contain the SQL % and _ wildcard
characters. The pattern is useful for restricting statement output to
matching values.

Several SHOW statements also accept a WHERE clause that provides more
flexibility in specifying which rows to display. See
https://dev.mysql.com/doc/refman/5.7/en/extended-show.html.

URL: https://dev.mysql.com/doc/refman/5.7/en/show.html


mysql>

小結

簡單介紹瞭如何連線和登入MySQL,如何用USE選擇資料庫,如何用SHOW檢視MySQL資料庫、表和內部資訊。

mysql -h localhost -P 3306 -u root -p123456;
use mysqlcrashcourse;
show databases;
show tables;
show columns from customers;
help show;
show status;
show grants;
show grants;
show errors;
show warnings;