一、數據庫操作語言
數據庫在操作時,需要使用專門的數據庫操作規則和語法,這個語法就是 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 的數據類型。