Mac上用終端管理MySQL


https://www.jb51.net/article/62768.htm#databaseManager

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 創建數據庫

?

1createdatabasefirstDB;

1.2 show 查看所有數據庫

?

1

2

3

4

5

6

7

8

9

10

11

mysql> show databases;

 

+--------------------+

| Database|

+--------------------+

| information_schema |

| firstDB      |

| mysql       |

| performance_schema |

+--------------------+

4 rowsinset(0.00 sec)

1.3 alter 修改數據庫

alter 命令修改數據庫編碼:

默認創建的數據庫默認不支持中文字符,如果我們需要它支持中文字符,則將它的編碼設置為utf8格式:

?

1

2

mysql> ALTERDATABASEtestDB CHARACTERSETUTF8;

Query OK, 1 row affected (0.00 sec)

1.4 use 使用數據庫

?

1

2

mysql> use firstDB;

Databasechanged

1.5 查看當前使用的數據庫

?

1

2

3

4

5

6

7

mysql> selectdatabase();

+------------+

| database() |

+------------+

| firstdb  |

+------------+

1 row inset(0.00 sec)

1.6 drop 刪除數據庫

?

1

2

mysql> dropdatabasefirstDB;

Query OK, 0 rowsaffected (0.00 sec)

2、數據表(table)管理

我們首先創建一個數據庫,提供我們往后的使用:

?

1

2

mysql> createdatabasetestDB;

Query OK, 1 row affected (0.00 sec)

創建后記得用use命令進入(使用)數據庫,不然后面的操作都會不成功的。

2.1 create 創建表

?

1

2

3

4

5

6

mysql> createtablePEOPLE (

-> ID intAUTO_INCREMENT PRIMARYKEY,

-> NAMEvarchar(20) notnull,

-> AGE intnotnull,

-> BIRTHDAY datetime);

Query OK, 0 rowsaffected (0.01 sec)

2.2 show 顯示表

顯示當前數據庫所有的數據表

?

1

2

3

4

5

6

7

mysql> show tables;

+------------------+

| Tables_in_testdb |

+------------------+

| PEOPLE      |

+------------------+

1 row inset(0.00 sec)

2.3 desc 查看表結構

?

1

2

3

4

5

6

7

8

9

10

11

mysql> descPEOPLE

-> ;

+----------+-------------+------+-----+---------+----------------+

| 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 rowsinset(0.01 sec)

2.4 alter 修改表結構(增、刪、改)

默認創建的表不支持中文字符,所以需將表編碼設置為utf8:

?

1

2

3

mysql> ALTERTABLEKEYCHAIN CONVERTTOCHARACTERSETUTF8;

Query OK, 1 row affected (0.02 sec)

Records: 1 Duplicates: 0 Warnings: 0

2.4.1 insert 在表中添加列(字段)

?

1

2

3

mysql> altertablePEOPLE addstar BOOL;

Query OK, 0 rowsaffected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

提示:在MySQL里,布爾類型會自動轉換為tinyint(1)類型。

我們不妨使用desc去查看一下PEOPLE表結構:

?

1

2

3

4

5

6

7

8

9

10

11

mysql> descPEOPLE;

+----------+-------------+------+-----+---------+----------------+

| 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 rowsinset(0.00 sec)

現在,你該相信我了吧?

2.4.2 alter 修改表(列)字段

?

1

2

3

mysql> altertablePEOPLE MODIFYstar int;

Query OK, 0 rowsaffected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

也可以指定 int(n) 的長度,比如 int(2)。

我們再次使用desc查看PEOPLE表結構:

?

1

2

3

4

5

6

7

8

9

10

11

mysql> descPEOPLE;

+----------+-------------+------+-----+---------+----------------+

| 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 rowsinset(0.00 sec)

2.4.3 delete 刪除表(列)字段

?

1

2

3

mysql> altertablePEOPLE DROPcolumnstar;

Query OK, 0 rowsaffected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

刪除后,再次查看PEOPLE表結構:

?

1

2

3

4

5

6

7

8

9

10

mysql> descPEOPLE;

+----------+-------------+------+-----+---------+----------------+

| 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 rowsinset(0.00 sec)

刪除字段成功,現在我們已經不能看到star的字段了。

2.4.4 rename 重命名表名

?

1

2

mysql> RENAME TABLEPEOPLE TONEW_PEOPLE;

Query OK, 0 rowsaffected (0.00 sec)

2.4.5 null or not null

修改表字段允許為空或不允許為空:

?

1

2

3

mysql> ALTERTABLEPEOPLE MODIFYAGE INT(3) NULL;

Query OK, 0 rowsaffected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

把 PEOPLE 表的 AGE 字段設置成“允許為空”,即插入記錄時這個字段可以不錄入。否則相反。

它的格式為:ALTER TABLE <TALBE_NAME> MODIFY <CLOUMN> <NULL 'OR' NOT NULL>

2.5 create 利用已有數據創建新表

?

1

2

3

mysql> createtablenewTable select* fromPEOPLE;

Query OK, 0 rowsaffected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

我們查看一下目前數據庫存在的表:

?

1

2

3

4

5

6

7

8

mysql> show tables;

+------------------+

| Tables_in_testdb |

+------------------+

| PEOPLE      |

| newTable     |

+------------------+

2 rowsinset(0.00 sec)

3、數據的操作及管理

數據表的基本操作,包含增、刪、改、查數據。

以下命令均在PEOPLE表上操作。

3.1 增加數據(增)

PEOPLE表目前是沒有數據的,它是空的數據表,我們現在先添加一些數據。

insert into 命令添加數據:

?

1

2

mysql> insertintoPEOPLE VALUES(null, 'Anny', 22, '1992-05-22');

Query OK, 1 row affected (0.00 sec)

使用select命令查看表(會在后面介紹),現在我們查看PEOPLE數據表的數據:

?

1

2

3

4

5

6

7

mysql> select* fromPEOPLE;

+----+------+-----+---------------------+

| ID | NAME| AGE | BIRTHDAY      |

+----+------+-----+---------------------+

| 1 | Anny | 22 | 1992-05-22 00:00:00 |

+----+------+-----+---------------------+

1 row inset(0.00 sec)

數據表現在有一條數據。

我們多添加幾條數據,如:

?

1

2

3

4

5

6

7

8

9

10

11

mysql> select* fromPEOPLE;

+----+--------+-----+---------------------+

| 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 rowsinset(0.00 sec)

3.2 刪除數據(刪)

delete 命令刪除數據:

?

1

2

mysql> deletefromPEOPLE wherename= 'Lisa';

Query OK, 1 row affected (0.01 sec)

再次查詢PEOPLE表:

?

1

2

3

4

5

6

7

8

9

10

mysql> select* fromPEOPLE;

+----+--------+-----+---------------------+

| 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 rowsinset(0.00 sec)

已經看不到名為“Lisa”的數據了。

3.3 修改數據(改)

update 命令修改數據:

?

1

2

3

mysql> updatePEOPLE setname='Calvin'wherename= 'Garvey';

Query OK, 1 row affected (0.00 sec)

Rowsmatched: 1 Changed: 1 Warnings: 0

查詢PEOPLE表內容:

?

1

2

3

4

5

6

7

8

9

10

mysql> select* fromPEOPLE;

+----+--------+-----+---------------------+

| 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 rowsinset(0.00 sec)

名為“Garvey”的記錄已經修改為“Calvin”。

3.4 查詢數據(查)

select 命令查詢數據,最簡單的就是查詢表的所有數據,也就是我們最初使用到的那條命令:

?

1

2

3

4

5

6

7

8

9

10

mysql> select* fromPEOPLE;

+----+--------+-----+---------------------+

| 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 rowsinset(0.00 sec)

格式:select * from <表名>,*代表所有字段。

查詢數據時也可指定顯示的(列)字段:

?

1

2

3

4

5

6

7

8

9

10

mysql> selectNAME, AGE, BIRTHDAY fromPEOPLE;

+--------+-----+---------------------+

| 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 rowsinset(0.00 sec)

格式:select <字段名,字段名,...> from <表名>。

select查詢命令還有很多的高級用法,比如用來查找不重復(distinct)的數據,使數據按條件排序(order by),按查詢條件顯示數據(where)等等。這些都會在下一篇文章作重點介紹,請大家繼續留意我的博客,謝謝。

4、管理視圖

創建視圖

視圖是從數據庫里導出一個或多個表的虛擬表,是用來方便用戶對數據的操作。

?

1

2

3

mysql> CREATEVIEWPEOPLE_VIEW (

-> NAME, AGE)

-> ASSELECTNAME, AGE FROMPEOPLE;

創建成功后查看視圖。

?

1

2

3

4

5

6

7

8

9

10

11

12

PEOPLE     PEOPLE.AGE   PEOPLE.BIRTHDAY PEOPLE.ID    PEOPLE.NAME

mysql> SELECT* FROMPEOPLE_VIEW

-> ;

+--------+-----+

| NAME| AGE |

+--------+-----+

| Anny  | 22 |

| Calvin | 23 |

| Nick  | 24 |

| Rick  | 24 |

+--------+-----+

4 rowsinset(0.00 sec)

我們也可以使用 DESC 命令查看視圖的結構。

?

1

2

3

4

5

6

7

mysql> DESCPEOPLE_VIEW;

+-------+---------+------+-----+---------+-------+

| Field | Type  | Null| Key| Default| Extra |

+-------+---------+------+-----+---------+-------+

| ID  | int(11) | NO|   | 0    |    |

+-------+---------+------+-----+---------+-------+

1 row inset(0.01 sec)

替換視圖

創建或替換原有視圖。

?

1

2

mysql> CREATEORREPLACEVIEWPEOPLE_VIEW(PEOPLE_ID,PEOPLE_NAME,PEOPLE_AGE) ASSELECTID,NAME,AGE FROMPEOPLE;

Query OK, 0 rowsaffected (0.00 sec)

創建或替換后查看視圖。

?

1

2

3

4

5

6

7

8

9

10

mysql> SELECT* FROMPEOPLE_VIEW;

+-----------+-------------+------------+

| PEOPLE_ID | PEOPLE_NAME | PEOPLE_AGE |

+-----------+-------------+------------+

|     1 | Anny    |     22 |

|     2 | Calvin   |     23 |

|     4 | Nick    |     24 |

|     5 | Rick    |     24 |

+-----------+-------------+------------+

4 rowsinset(0.00 sec)

操作視圖

當視圖數據有變化時(增、刪、改),真實的表數據也會隨着改變。也就是說,對視圖的操作就是對表的數據,所以我們可以把視圖當作表。

例:往視圖插入一條數據。

?

1

2

mysql> INSERTINTOPEOPLE_VIEW VALUES(NULL, 'Kerry', '33');

Query OK, 1 row affected (0.00 sec)

插入數據成功后查看視圖。

?

1

2

3

4

5

6

7

8

9

10

11

mysql> SELECT* FROMPEOPLE_VIEW ;

+-----------+-------------+------------+

| PEOPLE_ID | PEOPLE_NAME | PEOPLE_AGE |

+-----------+-------------+------------+

|     1 | Anny    |     22 |

|     2 | Calvin   |     23 |

|     4 | Nick    |     24 |

|     5 | Rick    |     24 |

|     6 | Kerry    |     33 |

+-----------+-------------+------------+

5 rowsinset(0.00 sec)

可以在視圖上看到我們剛剛插入的數據,現在我們就來驗證一下真實的表是否也會作出變化。

?

1

2

3

4

5

6

7

8

9

10

11

mysql> SELECT* FROMPEOPLE;

+----+--------+-----+---------------------+

| 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 rowsinset(0.00 sec)

可見,真實的表數據也已經有所改變,剛剛往視圖里插入的那一條數據存在於真實表中,真理便是:對視圖的操作就是對表的數據。

刪除視圖

?

1

2

mysql> DROPVIEWPEOPLE_VIEW;

Query OK, 0 rowsaffected (0.00 sec)


免責聲明!

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



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