MySQL建表和建數據庫語句


一、數據庫操作語言

 

數據庫在操作時,需要使用專門的數據庫操作規則和語法,這個語法就是 SQL(Structured Query Language) 結構化查詢語言。

 

SQL 的主要功能是和數據庫建立連接,進行增刪改查的操作。SQL是關系型數據庫管理系統的標准語言。

 

SQL 語言的作用:

 

1. 數據定義語言 DDL(Data Definition Language) 。用於創建數據庫,數據表。

 

2. 數據操作語言 DML(Data Manipulation Language) 。用於從數據表中插入、修改、刪除數據。

 

3. 數據查詢語言 DQL(Data Query Language) 。用於從數據表中查詢數據。

 

4. 數據控制語言 DCL(Data Control Language) 。用來設置或修改數據庫用戶或角色的權限。

 

使用 SQL 操作數據庫時,所有的 SQL 語句都以分號結束。(切換數據庫時可以不用分號)

在 SQL 語句中,不區分大小寫,編寫 SQL 語句時可以根據情況用大小寫的區別來增加可讀性。

二、創建數據庫

1. 連接 MySQL

輸入 mysql -u root -p 命令,回車,然后輸入 MySQL 的密碼(不要忘記了密碼),再回車,就連接上 MySQL 了。

mysql -u root -p


最初,都是使用 root 用戶登錄,工作中如果一直用 root 用戶登錄,因為權限太大,風險是很大的,所以等創建好權限適合的用戶后,就不要經常登錄 root 用戶了。
2. 查看當前的數據庫
使用 show databases; 查看當前安裝的 MySQL 中有哪些數據庫。

show databases;(截圖有點麻煩,所以后面都是代碼了,哈哈!)
 1 mysql> show databases;
 2 +--------------------+
 3 | Database           |
 4 +--------------------+
 5 | information_schema |
 6 | mysql              |
 7 | performance_schema |
 8 | student_system     |
 9 | sys                |
10 +--------------------+
11 5 rows in set (0.00 sec)
12 
13 mysql>

剛安裝 MySQL 時,默認有四個數據庫,information_schema,mysql,perfomance_schema,sys 。通常情況下,我們不會直接使用這四個數據庫,但千萬不要把這四個數據庫刪了,否則會帶來很多不必要的麻煩。如果不小心刪了,建議是重新安裝 MySQL ,在重裝之前把自己的數據遷移出來備份好,或者從其他服務器上遷移一個相同的數據庫過來。

3. 創建數據庫

 

使用 create database 數據庫名; 創建數據庫。

create database MyDB_one;
 1 mysql> create database MyDB_one;
 2 Query OK, 1 row affected (0.02 sec)
 3 
 4 mysql> show databases;
 5 +--------------------+
 6 | Database           |
 7 +--------------------+
 8 | information_schema |
 9 | mydb_one           |
10 | mysql              |
11 | performance_schema |
12 | student_system     |
13 | sys                |
14 +--------------------+
15 6 rows in set (0.00 sec)

創建數據庫成功后,數據庫的數量變成了6個,多了剛才創建的 MyDB_one 。
4. 創建數據庫時設置字符編碼
使用 create database 數據庫名 charset utf8; 創建數據庫並設置數據庫的字符編碼,一般建議設置為utf8mb4;為了方便理解比較,再創建一個mydb_two的數據庫;

create database MyDB_two charset utf8mb4;
 1 mysql> create database MyDB_two charset utf8mb4;
 2 Query OK, 1 row affected (0.00 sec)
 3 
 4 mysql> show databases;
 5 +--------------------+
 6 | Database           |
 7 +--------------------+
 8 | information_schema |
 9 | mydb_one           |
10 | mydb_two           |
11 | mysql              |
12 | performance_schema |
13 | student_system     |
14 | sys                |
15 +--------------------+
16 7 rows in set (0.00 sec)

5. 查看和顯示數據庫的編碼方式

使用 show create database 數據庫名; 顯示數據庫的創建信息。

show create database MyDB_one;show create database MyDB_two;
 1 mysql> show create database MyDB_one;show create database MyDB_two;
 2 +----------+-------------------------------------------------------------------+
 3 | Database | Create Database                                                   |
 4 +----------+-------------------------------------------------------------------+
 5 | MyDB_one | CREATE DATABASE `MyDB_one` /*!40100 DEFAULT CHARACTER SET utf8 */ |
 6 +----------+-------------------------------------------------------------------+
 7 1 row in set (0.00 sec)
 8 
 9 +----------+----------------------------------------------------------------------+
10 | Database | Create Database                                                      |
11 +----------+----------------------------------------------------------------------+
12 | MyDB_two | CREATE DATABASE `MyDB_two` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
13 +----------+----------------------------------------------------------------------+
14 1 row in set (0.00 sec)

因為utf8mb4相對於utf8來說要更加穩定一點,所以我們打MySQL默認的utf8改為utf8mb4;

6. 使用 alter database 數據庫名 charset utf8mb4;修改數據庫編碼

alter database MyDB_one charset utf8mb4;

 1 mysql> alter database MyDB_one charset utf8mb4;
 2 Query OK, 1 row affected (0.00 sec)
 3 
 4 mysql> show create database mydb_one;
 5 +----------+----------------------------------------------------------------------+
 6 | Database | Create Database                                                      |
 7 +----------+----------------------------------------------------------------------+
 8 | mydb_one | CREATE DATABASE `mydb_one` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
 9 +----------+----------------------------------------------------------------------+
10 1 row in set (0.00 sec)

7. 進入或切換數據庫

 

使用 use 數據庫名 進入或切換數據庫。

use MyDB_one;
 1 mysql> use mydb_one; 2 Database changed 3 mysql> 

剛連接上 MySQL 時,沒有處於任何一個數據庫中,如果要使用某一個數據庫,就需要進入到這個數據庫中。use 數據庫名 這個命令后面的分號可以省略,這是 SQL 語句中唯一可以省略分號的語句。
8. 顯示當前數據庫 select database();

select database();

1 mysql> select database();
2 +------------+
3 | database() |
4 +------------+
5 | mydb_one   |
6 +------------+
7 1 row in set (0.00 sec)

進入數據庫中,可以使用 select database(); 來查看當前處於哪個數據庫中。長時間操作數據庫時,在很多數據庫中來回切換后,查看當前的數據庫,避免操作錯了數據庫。

三、創建數據表

 

1. 查看當前數據庫中的表

使用 show tables;查看當前數據庫中有哪些表。

show tables;
 1 mysql> show tables; 2 Empty set (0.00 sec) 

在剛才創建的數據庫 MyDB_one 中,還沒有創建任何表,所以當前是空的。

2. 創建表使用 create table 表名(字段1 字段類型,字段2 字段類型,字段3 字段類型,…); 來創建一張表。

create table Phone_table(pid int, name char(20), price int);
 1 mysql> create table Phone_table(pid int, name char(20), price int);
 2 Query OK, 0 rows affected (0.23 sec)
 3 
 4 mysql> show tables;
 5 +--------------------+
 6 | Tables_in_mydb_one |
 7 +--------------------+
 8 | phone_table        |
 9 +--------------------+
10 1 row in set (0.00 sec)

在 MyDB_one 中創建了一個叫 Phone_table 的數據表,這張表有三個字段 pid,name,price 。

3. 顯示表信息

 

用 desc  表名; 來顯示已創建的表的信息。

desc Phone_table;
1 mysql> desc phone_table;
2 +-------+----------+------+-----+---------+-------+
3 | Field | Type     | Null | Key | Default | Extra |
4 +-------+----------+------+-----+---------+-------+
5 | pid   | int(11)  | YES  |     | NULL    |       |
6 | name  | char(20) | YES  |     | NULL    |       |
7 | price | int(11)  | YES  |     | NULL    |       |
8 +-------+----------+------+-----+---------+-------+
9 3 rows in set (0.00 sec)

4. 給表增加字段
使用 alter table 表名 add 字段名 數據類型; 為已存在的表添加一個新字段。

alter table Phone_table add color char(20);
 1 mysql> alter table Phone_table add color char(20);
 2 Query OK, 0 rows affected (0.40 sec)
 3 Records: 0  Duplicates: 0  Warnings: 0
 4 
 5 mysql> desc phone_table;
 6 +-------+----------+------+-----+---------+-------+
 7 | Field | Type     | Null | Key | Default | Extra |
 8 +-------+----------+------+-----+---------+-------+
 9 | pid   | int(11)  | YES  |     | NULL    |       |
10 | name  | char(20) | YES  |     | NULL    |       |
11 | price | int(11)  | YES  |     | NULL    |       |
12 | color | char(20) | YES  |     | NULL    |       |
13 +-------+----------+------+-----+---------+-------+
14 4 rows in set (0.00 sec)

添加后,剛才的表中多了一個字段,新增成功。
5. 刪除表的字段
使用 alter table 表名 drop 字段名; 刪除一個表中已存在的字段。

alter table phone_table drop price;
 1 mysql> alter table phone_table drop price;
 2 Query OK, 0 rows affected (0.32 sec)
 3 Records: 0  Duplicates: 0  Warnings: 0
 4 
 5 mysql> desc phone_table;
 6 +-------+----------+------+-----+---------+-------+
 7 | Field | Type     | Null | Key | Default | Extra |
 8 +-------+----------+------+-----+---------+-------+
 9 | pid   | int(11)  | YES  |     | NULL    |       |
10 | name  | char(20) | YES  |     | NULL    |       |
11 | color | char(20) | YES  |     | NULL    |       |
12 +-------+----------+------+-----+---------+-------+
13 3 rows in set (0.00 sec)

刪除字段后,表中不再有該字段。
6. 修改字段的數據類型
使用 alter table 表名 modify 字段名 數據類型; 修改表中現有字段的數據類型。

alter table Phone_table modify name varchar(12);

 

 1 mysql> alter table Phone_table modify name varchar(12);
 2 Query OK, 0 rows affected (0.61 sec)
 3 Records: 0  Duplicates: 0  Warnings: 0
 4 
 5 mysql> desc phone_table;
 6 +-------+-------------+------+-----+---------+-------+
 7 | Field | Type        | Null | Key | Default | Extra |
 8 +-------+-------------+------+-----+---------+-------+
 9 | pid   | int(11)     | YES  |     | NULL    |       |
10 | name  | varchar(12) | YES  |     | NULL    |       |
11 | color | char(20)    | YES  |     | NULL    |       |
12 +-------+-------------+------+-----+---------+-------+
13 3 rows in set (0.00 sec)

7. 修改字段的數據類型並且改名
使用 alter table 表名 change 原字段名 新字段名 數據類型; 修改表中現有字段的字段名和類型。

alter table Phone_table change name pname char(18);
 1 mysql> alter table Phone_table change name pname char(18);
 2 Query OK, 0 rows affected (0.84 sec)
 3 Records: 0  Duplicates: 0  Warnings: 0
 4 
 5 mysql> desc phone_table;
 6 +-------+----------+------+-----+---------+-------+
 7 | Field | Type     | Null | Key | Default | Extra |
 8 +-------+----------+------+-----+---------+-------+
 9 | pid   | int(11)  | YES  |     | NULL    |       |
10 | pname | char(18) | YES  |     | NULL    |       |
11 | color | char(20) | YES  |     | NULL    |       |
12 +-------+----------+------+-----+---------+-------+
13 3 rows in set (0.00 sec)

現在,將表的 name 改成了 pname ,同時修改了 pname 的數據類型。

 
 


免責聲明!

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



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