MySQL有很多的視覺化管理工具,比如“mysql-workbench”和“sequel-pro-”。 現在我寫MySQL的終端命令操作的文章,是想強化一下自己對於MySQL的理解,總會比使用圖形化的理解透徹,因為我本來就比較喜歡寫程式碼。同時寫出來這些文章,是想要給大家當個參考,希望也能對大家有所幫助,有所提升,這就是我為什麼要寫終端操作MySQL的文章了。
註意:MySQL資料庫命令不區分大小寫。但在MAC的終端,如果你想使用tab自動補全命令,那麼你就必須使用大寫,這樣MAC的終端才會幫你補全命令,否則你按N遍tab都不會有響應。
1、資料庫(database)管理
1.1 create 建立資料庫
1.2 show 檢視所有資料庫
1.3 alter 修改資料庫
1.4 use 使用資料庫
1.5 檢視當前使用的資料庫
1.6 drop 刪除資料庫
2、資料表(table)管理
2.1 create 建立表
2.2 show 顯示表
2.3 desc 查看錶結構
2.4 alter 修改表結構(增、刪、改)
2.4.1 insert 在表中新增列(欄位)
2.4.2 alter 修改表(列)欄位
2.4.3 delete 刪除表(列)欄位
2.4.4 rename 重新命名錶名
2.5 create 利用已有資料建立新表
3、資料的操作及管理
3.1 增加資料(增)
3.2 刪除資料(刪)
3.3 修改資料(改)
3.4 查詢資料(查)
4、管理檢視
1、資料庫(database)管理
1.1 create 建立資料庫
create
database
firstDB;
1.2 show 檢視所有資料庫
mysql> show databases;
+
--------------------+
|
Database
|
+
--------------------+
| information_schema |
| firstDB |
| mysql |
| performance_schema |
+
--------------------+
4
rows
in
set
(0.00 sec)
1.3 alter 修改資料庫
alter 命令修改資料庫編碼:
預設建立的資料庫預設不支援中文字元,如果我們需要它支援中文字元,則將它的編碼設定為utf8格式:
mysql>
ALTER
DATABASE
testDB
CHARACTER
SET
UTF8;
Query OK, 1 row affected (0.00 sec)
1.4 use 使用資料庫
mysql> use firstDB;
Database
changed
1.5 檢視當前使用的資料庫
mysql>
select
database
();
+
------------+
|
database
() |
+
------------+
| firstdb |
+
------------+
1 row
in
set
(0.00 sec)
1.6 drop 刪除資料庫
mysql>
drop
database
firstDB;
Query OK, 0
rows
affected (0.00 sec)
2、資料表(table)管理
我們首先建立一個資料庫,提供我們往後的使用:
mysql>
create
database
testDB;
Query OK, 1 row affected (0.00 sec)
建立後記得用use命令進入(使用)資料庫,不然後面的操作都會不成功的。
2.1 create 建立表
mysql>
create
table
PEOPLE (
-> ID
int
AUTO_INCREMENT
PRIMARY
KEY
,
->
NAME
varchar
(20)
not
null
,
-> AGE
int
not
null
,
-> BIRTHDAY datetime);
Query OK, 0
rows
affected (0.01 sec)
2.2 show 顯示表
顯示當前資料庫所有的資料表
mysql> show tables;
+
------------------+
| Tables_in_testdb |
+
------------------+
| PEOPLE |
+
------------------+
1 row
in
set
(0.00 sec)
2.3 desc 查看錶結構
mysql>
desc
PEOPLE
-> ;
+
----------+-------------+------+-----+---------+----------------+
| Field | Type |
Null
|
Key
|
Default
| Extra |
+
----------+-------------+------+-----+---------+----------------+
| ID |
int
(11) |
NO
| PRI |
NULL
| auto_increment |
|
NAME
|
varchar
(20) |
NO
| |
NULL
| |
| AGE |
int
(11) |
NO
| |
NULL
| |
| BIRTHDAY | datetime | YES | |
NULL
| |
+
----------+-------------+------+-----+---------+----------------+
4
rows
in
set
(0.01 sec)
2.4 alter 修改表結構(增、刪、改)
預設建立的表不支援中文字元,所以需將表編碼設定為utf8:
mysql>
ALTER
TABLE
KEYCHAIN
CONVERT
TO
CHARACTER
SET
UTF8;
Query OK, 1 row affected (0.02 sec)
Records: 1 Duplicates: 0 Warnings: 0
2.4.1 insert 在表中新增列(欄位)
mysql>
alter
table
PEOPLE
add
star BOOL;
Query OK, 0
rows
affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
提示:在MySQL裡,布林型別會自動轉換為tinyint(1)型別。
我們不妨使用desc去檢視一下PEOPLE表結構:
mysql>
desc
PEOPLE;
+
----------+-------------+------+-----+---------+----------------+
| Field | Type |
Null
|
Key
|
Default
| Extra |
+
----------+-------------+------+-----+---------+----------------+
| ID |
int
(11) |
NO
| PRI |
NULL
| auto_increment |
|
NAME
|
varchar
(20) |
NO
| |
NULL
| |
| AGE |
int
(11) |
NO
| |
NULL
| |
| BIRTHDAY | datetime | YES | |
NULL
| |
| star | tinyint(1) | YES | |
NULL
| |
+
----------+-------------+------+-----+---------+----------------+
5
rows
in
set
(0.00 sec)
現在,你該相信我了吧?
2.4.2 alter 修改表(列)欄位
mysql>
alter
table
PEOPLE
MODIFY
star
int
;
Query OK, 0
rows
affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
也可以指定 int(n) 的長度,比如 int(2)。
我們再次使用desc檢視PEOPLE表結構:
mysql>
desc
PEOPLE;
+
----------+-------------+------+-----+---------+----------------+
| Field | Type |
Null
|
Key
|
Default
| Extra |
+
----------+-------------+------+-----+---------+----------------+
| ID |
int
(11) |
NO
| PRI |
NULL
| auto_increment |
|
NAME
|
varchar
(20) |
NO
| |
NULL
| |
| AGE |
int
(11) |
NO
| |
NULL
| |
| BIRTHDAY | datetime | YES | |
NULL
| |
| star |
int
(11) | YES | |
NULL
| |
+
----------+-------------+------+-----+---------+----------------+
5
rows
in
set
(0.00 sec)
2.4.3 delete 刪除表(列)欄位
mysql>
alter
table
PEOPLE
DROP
column
star;
Query OK, 0
rows
affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
刪除後,再次檢視PEOPLE表結構:
mysql>
desc
PEOPLE;
+
----------+-------------+------+-----+---------+----------------+
| Field | Type |
Null
|
Key
|
Default
| Extra |
+
----------+-------------+------+-----+---------+----------------+
| ID |
int
(11) |
NO
| PRI |
NULL
| auto_increment |
|
NAME
|
varchar
(20) |
NO
| |
NULL
| |
| AGE |
int
(11) |
NO
| |
NULL
| |
| BIRTHDAY | datetime | YES | |
NULL
| |
+
----------+-------------+------+-----+---------+----------------+
4
rows
in
set
(0.00 sec)
刪除欄位成功,現在我們已經不能看到star的欄位了。
2.4.4 rename 重新命名錶名
mysql> RENAME
TABLE
PEOPLE
TO
NEW_PEOPLE;
Query OK, 0
rows
affected (0.00 sec)
2.4.5 null or not null
修改表欄位允許為空或不允許為空:
mysql>
ALTER
TABLE
PEOPLE
MODIFY
AGE
INT
(3)
NULL
;
Query OK, 0
rows
affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
把 PEOPLE 表的 AGE 欄位設定成“允許為空”,即插入記錄時這個欄位可以不錄入。否則相反。
它的格式為:ALTER TABLE
2.5 create 利用已有資料建立新表
mysql>
create
table
newTable
select
*
from
PEOPLE;
Query OK, 0
rows
affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
我們檢視一下目前資料庫存在的表:
mysql> show tables;
+
------------------+
| Tables_in_testdb |
+
------------------+
| PEOPLE |
| newTable |
+
------------------+
2
rows
in
set
(0.00 sec)
3、資料的操作及管理
資料表的基本操作,包含增、刪、改、查資料。
以下命令均在PEOPLE表上操作。
3.1 增加資料(增)
PEOPLE表目前是沒有資料的,它是空的資料表,我們現在先新增一些資料。
insert into 命令新增資料:
mysql>
insert
into
PEOPLE
VALUES
(
null
,
'Anny'
, 22,
'1992-05-22'
);
Query OK, 1 row affected (0.00 sec)
使用select命令查看錶(會在後面介紹),現在我們檢視PEOPLE資料表的資料:
mysql>
select
*
from
PEOPLE;
+
----+------+-----+---------------------+
| ID |
NAME
| AGE | BIRTHDAY |
+
----+------+-----+---------------------+
| 1 | Anny | 22 | 1992-05-22 00:00:00 |
+
----+------+-----+---------------------+
1 row
in
set
(0.00 sec)
資料表現在有一條資料。
我們多新增幾條資料,如:
mysql>
select
*
from
PEOPLE;
+
----+--------+-----+---------------------+
| ID |
NAME
| AGE | BIRTHDAY |
+
----+--------+-----+---------------------+
| 1 | Anny | 22 | 1992-05-22 00:00:00 |
| 2 | Garvey | 23 | 1991-05-22 00:00:00 |
| 3 | Lisa | 25 | 1989-05-22 00:00:00 |
| 4 | Nick | 24 | 1990-05-22 00:00:00 |
| 5 | Rick | 24 | 1991-05-22 00:00:00 |
+
----+--------+-----+---------------------+
5
rows
in
set
(0.00 sec)
3.2 刪除資料(刪)
delete 命令刪除資料:
mysql>
delete
from
PEOPLE
where
name
=
'Lisa'
;
Query OK, 1 row affected (0.01 sec)
再次查詢PEOPLE表:
mysql>
select
*
from
PEOPLE;
+
----+--------+-----+---------------------+
| ID |
NAME
| AGE | BIRTHDAY |
+
----+--------+-----+---------------------+
| 1 | Anny | 22 | 1992-05-22 00:00:00 |
| 2 | Garvey | 23 | 1991-05-22 00:00:00 |
| 4 | Nick | 24 | 1990-05-22 00:00:00 |
| 5 | Rick | 24 | 1991-05-22 00:00:00 |
+
----+--------+-----+---------------------+
4
rows
in
set
(0.00 sec)
已經看不到名為“Lisa”的資料了。
3.3 修改資料(改)
update 命令修改資料:
mysql>
update
PEOPLE
set
name
=
'Calvin'
where
name
=
'Garvey'
;
Query OK, 1 row affected (0.00 sec)
Rows
matched: 1 Changed: 1 Warnings: 0
查詢PEOPLE表內容:
mysql>
select
*
from
PEOPLE;
+
----+--------+-----+---------------------+
| ID |
NAME
| AGE | BIRTHDAY |
+
----+--------+-----+---------------------+
| 1 | Anny | 22 | 1992-05-22 00:00:00 |
| 2 | Calvin | 23 | 1991-05-22 00:00:00 |
| 4 | Nick | 24 | 1990-05-22 00:00:00 |
| 5 | Rick | 24 | 1991-05-22 00:00:00 |
+
----+--------+-----+---------------------+
4
rows
in
set
(0.00 sec)
名為“Garvey”的記錄已經修改為“Calvin”。
3.4 查詢資料(查)
select 命令查詢資料,最簡單的就是查詢表的所有資料,也就是我們最初使用到的那條命令:
mysql>
select
*
from
PEOPLE;
+
----+--------+-----+---------------------+
| ID |
NAME
| AGE | BIRTHDAY |
+
----+--------+-----+---------------------+
| 1 | Anny | 22 | 1992-05-22 00:00:00 |
| 2 | Calvin | 23 | 1991-05-22 00:00:00 |
| 4 | Nick | 24 | 1990-05-22 00:00:00 |
| 5 | Rick | 24 | 1991-05-22 00:00:00 |
+
----+--------+-----+---------------------+
4
rows
in
set
(0.00 sec)
格式:select * from ,*代表所有欄位。
查詢資料時也可指定顯示的(列)欄位:
mysql>
select
NAME
, AGE, BIRTHDAY
from
PEOPLE;
+
--------+-----+---------------------+
|
NAME
| AGE | BIRTHDAY |
+
--------+-----+---------------------+
| Anny | 22 | 1992-05-22 00:00:00 |
| Calvin | 23 | 1991-05-22 00:00:00 |
| Nick | 24 | 1990-05-22 00:00:00 |
| Rick | 24 | 1991-05-22 00:00:00 |
+
--------+-----+---------------------+
4
rows
in
set
(0.00 sec)
格式:select from 。
select查詢命令還有很多的高階用法,比如用來查詢不重覆(distinct)的資料,使資料按條件排序(order by),按查詢條件顯示資料(where)等等。這些都會在下一篇文章作重點介紹,請大家繼續留意我的部落格,謝謝。
4、管理檢視
建立檢視
檢視是從資料庫裡匯出一個或多個表的虛擬表,是用來方便使用者對資料的操作。
mysql>
CREATE
VIEW
PEOPLE_VIEW (
->
NAME
, AGE)
->
AS
SELECT
NAME
, AGE
FROM
PEOPLE;
建立成功後檢視檢視。
PEOPLE PEOPLE.AGE PEOPLE.BIRTHDAY PEOPLE.ID PEOPLE.
NAME
mysql>
SELECT
*
FROM
PEOPLE_VIEW
-> ;
+
--------+-----+
|
NAME
| AGE |
+
--------+-----+
| Anny | 22 |
| Calvin | 23 |
| Nick | 24 |
| Rick | 24 |
+
--------+-----+
4
rows
in
set
(0.00 sec)
我們也可以使用 DESC 命令檢視檢視的結構。
mysql>
DESC
PEOPLE_VIEW;
+
-------+---------+------+-----+---------+-------+
| Field | Type |
Null
|
Key
|
Default
| Extra |
+
-------+---------+------+-----+---------+-------+
| ID |
int
(11) |
NO
| | 0 | |
+
-------+---------+------+-----+---------+-------+
1 row
in
set
(0.01 sec)
替換檢視
建立或替換原有檢視。
mysql>
CREATE
OR
REPLACE
VIEW
PEOPLE_VIEW(PEOPLE_ID,PEOPLE_NAME,PEOPLE_AGE)
AS
SELECT
ID,
NAME
,AGE
FROM
PEOPLE;
Query OK, 0
rows
affected (0.00 sec)
建立或替換後檢視檢視。
mysql>
SELECT
*
FROM
PEOPLE_VIEW;
+
-----------+-------------+------------+
| PEOPLE_ID | PEOPLE_NAME | PEOPLE_AGE |
+
-----------+-------------+------------+
| 1 | Anny | 22 |
| 2 | Calvin | 23 |
| 4 | Nick | 24 |
| 5 | Rick | 24 |
+
-----------+-------------+------------+
4
rows
in
set
(0.00 sec)
操作檢視
當檢視資料有變化時(增、刪、改),真實的表資料也會隨著改變。也就是說,對檢視的操作就是對錶的資料,所以我們可以把檢視當作表。
例:往檢視插入一條資料。
mysql>
INSERT
INTO
PEOPLE_VIEW
VALUES
(
NULL
,
'Kerry'
,
'33'
);
Query OK, 1 row affected (0.00 sec)
插入資料成功後檢視檢視。
mysql>
SELECT
*
FROM
PEOPLE_VIEW ;
+
-----------+-------------+------------+
| PEOPLE_ID | PEOPLE_NAME | PEOPLE_AGE |
+
-----------+-------------+------------+
| 1 | Anny | 22 |
| 2 | Calvin | 23 |
| 4 | Nick | 24 |
| 5 | Rick | 24 |
| 6 | Kerry | 33 |
+
-----------+-------------+------------+
5
rows
in
set
(0.00 sec)
可以在檢視上看到我們剛剛插入的資料,現在我們就來驗證一下真實的表是否也會作出變化。
mysql>
SELECT
*
FROM
PEOPLE;
+
----+--------+-----+---------------------+
| ID |
NAME
| AGE | BIRTHDAY |
+
----+--------+-----+---------------------+
| 1 | Anny | 22 | 1992-05-22 00:00:00 |
| 2 | Calvin | 23 | 1991-05-22 00:00:00 |
| 4 | Nick | 24 | 1990-05-22 00:00:00 |
| 5 | Rick | 24 | 1991-05-22 00:00:00 |
| 6 | Kerry | 33 |
NULL
|
+
----+--------+-----+---------------------+
5
rows
in
set
(0.00 sec)
可見,真實的表資料也已經有所改變,剛剛往檢視裡插入的那一條資料存在於真實表中,真理便是:對檢視的操作就是對錶的資料。
刪除檢視
mysql>
DROP
VIEW
PEOPLE_VIEW;
Query OK, 0
rows
affected (0.00 sec)
出處:GarveyCalvin
連結:http://www.cnblogs.com/GarveyCalvin/p/4297282.html