直接創建資料庫
CREATE DATABASE 資料庫名;
判斷是否存在並創建資料庫(了解)
CREATE DATABASE IF NOT EXISTS 資料庫名;
創建資料庫並指定字符集(了解)
CREATE DATABASE 資料庫名 CHARACTER SET 字符集;
具體操作:
-- 需求: 創建名稱為db1的資料庫
create database db1;
-- 需求: 當db2資料庫不存在是創建名稱為db2資料庫
create database if not exists db2;
-- 需求: 創建名稱為db3資料庫,並指定字符集為gbk
create database db3 character set gbk;
示例如下:
-- 創建名稱為db1的資料庫
mysql> create database db1;
Query OK, 1 row affected (0.00 sec)
-- 查看資料庫
mysql> show databases;
+--+
| Database |
+--+
| information_schema |
| assetinfo |
| book |
| dailyfresh |
| db1 | -- 創建的資料庫 db1
| flask_ex |
| ihome |
| jumpserver |
| msg_box |
| mysql |
| performance |
| performance_schema |
| performance_visualization |
| sys |
| test |
| testdb |
| userdemo |
+--+
17 rows in set (0.00 sec)
-- 當db2資料庫不存在是創建名稱為db2資料庫
mysql> create database if not exists db2;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--+
| Database |
+--+
| information_schema |
| assetinfo |
| book |
| dailyfresh |
| db1 |
| db2 | -- 創建的資料庫 db2
| flask_ex |
| ihome |
| jumpserver |
| msg_box |
| mysql |
| performance |
| performance_schema |
| performance_visualization |
| sys |
| test |
| testdb |
| userdemo |
+--+
18 rows in set (0.00 sec)
mysql>
-- 創建名稱為db3資料庫,並指定字符集為gbk
mysql> create database db3 character set gbk;
Query OK, 1 row affected (0.01 sec)
-- 查看創建好的資料庫內容
mysql> show create database db3;
++-+
| Database | Create Database |
++-+
| db3 | CREATE DATABASE `db3` /*!40100 DEFAULT CHARACTER SET gbk */ |
++-+
1 row in set (0.01 sec)
mysql>
查看某個資料庫的定義信息
SHOW CREATE DATABASE 資料庫名;
具體操作:
-- 需求:查詢Mysql數據管理系統中所有的資料庫
show databases;
-- 需求:查詢db3資料庫的建庫語句
show create database db3;
示例如下:
-- 查詢db3資料庫的建庫語句
mysql> show create database db3;
++-+
| Database | Create Database |
++-+
| db3 | CREATE DATABASE `db3` /*!40100 DEFAULT CHARACTER SET gbk */ |
++-+
1 row in set (0.01 sec)
-- 查詢Mysql數據管理系統中所有的資料庫
mysql> show databases;
+--+
| Database |
+--+
| information_schema |
| assetinfo |
| book |
| dailyfresh |
| db1 |
| db2 |
| db3 |
| flask_ex |
| ihome |
| jumpserver |
| msg_box |
| mysql |
| performance |
| performance_schema |
| performance_visualization |
| sys |
| test |
| testdb |
| userdemo |
+--+
19 rows in set (0.01 sec)
mysql>
修改資料庫字符集格式
ALTER DATABASE 資料庫名 DEFAULT CHARACTER SET 字符集;
具體操作:
-- 需求:將db3資料庫的字符集改成utf8
alter database db3 character set utf8;
-- 注意:utf8沒有中間的橫槓
示例如下:
-- 查看當前資料庫的字符集為 gbk
mysql> show create database db3;
++-+
| Database | Create Database |
++-+
| db3 | CREATE DATABASE `db3` /*!40100 DEFAULT CHARACTER SET gbk */ |
++-+
1 row in set (0.00 sec)
-- 修改db3的字符集為 utf8
mysql> alter database db3 character set utf8;
Query OK, 1 row affected (0.00 sec)
-- 查看字符集已修改為 utf8
mysql> show create database db3;
++--+
| Database | Create Database |
++--+
| db3 | CREATE DATABASE `db3` /*!40100 DEFAULT CHARACTER SET utf8 */ |
++--+
1 row in set (0.00 sec)
mysql>
DROP DATABASE 資料庫名;
具體操作:
-- 從資料庫管理系統中刪除名稱為db2的資料庫
drop database db2;
示例圖:
-- 查看所有資料庫
mysql> show databases;
+--+
| Database |
+--+
| information_schema |
| assetinfo |
| book |
| dailyfresh |
| db1 |
| db2 | -- 可以看到存在 db2
| db3 |
| flask_ex |
| ihome |
| jumpserver |
| msg_box |
| mysql |
| performance |
| performance_schema |
| performance_visualization |
| sys |
| test |
| testdb |
| userdemo |
+--+
19 rows in set (0.00 sec)
-- 刪除資料庫 db2
mysql> drop database db2;
Query OK, 0 rows affected (0.00 sec)
-- 再次查看所有資料庫
mysql> show databases;
+--+
| Database |
+--+
| information_schema |
| assetinfo |
| book |
| dailyfresh |
| db1 | -- 可以看到 db2 已被刪除
| db3 |
| flask_ex |
| ihome |
| jumpserver |
| msg_box |
| mysql |
| performance |
| performance_schema |
| performance_visualization |
| sys |
| test |
| testdb |
| userdemo |
+--+
18 rows in set (0.00 sec)
mysql>
查看正在使用的資料庫
SELECT DATABASE();
具體操作:
-- 查看正在使用的資料庫
select database();
-- 使用db1資料庫
use db1;
示例如下:
-- 查看正在使用的資料庫
mysql> select database();
+--+
| database() |
+--+
| NULL |
+--+
1 row in set (0.00 sec)
-- 使用db1資料庫
mysql> use db1;
Database changed
mysql>
-- 再次查看正在使用的資料庫,已經設置為 db1
mysql> select database();
+--+
| database() |
+--+
| db1 |
+--+
1 row in set (0.00 sec)
mysql>
語法:
-- 創建表
create table 表名(
欄位名 欄位類型 約束,
欄位名 欄位類型 約束
);
-- 快速創建一個表結構相同的表
CREATE TABLE 新表名 LIKE 舊錶名;
具體操作:
-- 需求:創建student表包含
-- id整數
-- name變長字符串長20
-- sex性別定長型1
-- birthday欄位日期類型
create table student(
id int, -- 編號
name varchar(20), -- 姓名
sex char(1), -- 性別
birthday date -- 生日
);
-- 需求:創建一個student2表,結構與student相同
create table student2 like student;
示例如下:
-- 創建student表
mysql> create table student(
-> id int, -- 編號
-> name varchar(20), -- 姓名
-> sex char(1), -- 性別
-> birthday date -- 生日
-> );
Query OK, 0 rows affected (0.02 sec)
-- 查看db1資料庫中的所有表
mysql> show tables;
++
| Tables_in_db1 |
++
| student |
++
1 row in set (0.00 sec)
mysql>
-- 創建一個student2表,結構與student相同
mysql> create table student2 like student;
Query OK, 0 rows affected (0.02 sec)
-- 查看student表結構
mysql> desc student;
++---+-++----+--+
| Field | Type | Null | Key | Default | Extra |
++---+-++----+--+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
++---+-++----+--+
4 rows in set (0.00 sec)
-- 查看student2表結構
mysql> desc student2;
++---+-++----+--+
| Field | Type | Null | Key | Default | Extra |
++---+-++----+--+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
++---+-++----+--+
4 rows in set (0.00 sec)
mysql>
常使用的數據類型如下:
數據類型關鍵字整型int或integer浮點型double, float查看創建表的SQL語句
SHOW CREATE TABLE 表名;
具體操作:
-- 需求:查看mysql資料庫中的所有表
show tables;
-- 需求:查看student表的結構
desc student;
-- 需求:查看student表的建表語句
show create table student;
示例如下:
-- 查看mysql資料庫中的所有表
mysql> show tables;
++
| Tables_in_db1 |
++
| student |
| student2 |
++
2 rows in set (0.00 sec)
-- 查看student表的結構
mysql> desc student;
++---+-++----+--+
| Field | Type | Null | Key | Default | Extra |
++---+-++----+--+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
++---+-++----+--+
4 rows in set (0.00 sec)
-- 查看student表的建表語句
mysql> show create table student;
+----+-+
| Table | Create Table |
+----+-+
| student | CREATE TABLE `student` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`sex` char(1) DEFAULT NULL,
`birthday` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+----+--+
1 row in set (0.00 sec)
mysql>
修改表結構使用不是很頻繁,只需要知道下,等需要使用的時候再回來查即可
2.3.1 添加表列ALTER TABLE 表名 ADD 列名 類型;
-- 需求:為student表添加一個新的欄位age,類型為varchar(2)
alter table student add age varchar(2);
執行如下:
-- 查看當前表結構
mysql> desc student;
++---+-++----+--+
| Field | Type | Null | Key | Default | Extra |
++---+-++----+--+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
++---+-++----+--+
4 rows in set (0.00 sec)
-- 為student表添加一個新的欄位age,類型為varchar(2)
mysql> alter table student add age varchar(2);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 查看修改後的表結構
mysql> desc student;
++---+-++----+--+
| Field | Type | Null | Key | Default | Extra |
++---+-++----+--+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| age | varchar(2) | YES | | NULL | |
++---+-++----+--+
5 rows in set (0.00 sec)
mysql>
ALTER TABLE 表名 MODIFY 列名 新的類型;
-- 需求:將student表中的age欄位的類型改為int(11)
alter table student modify age int(11);
執行如下:
-- 查看修改之前的原表結構
mysql> desc student;
++---+-++----+--+
| Field | Type | Null | Key | Default | Extra |
++---+-++----+--+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| age | varchar(2) | YES | | NULL | | -- 當前為 varchar 類型
++---+-++----+-s-+
5 rows in set (0.00 sec)
mysql>
-- 將student表中的age欄位的類型改為int(11)
mysql> alter table student modify age int(11);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 查看修改後的表結構
mysql> desc student;
++---+-++----+--+
| Field | Type | Null | Key | Default | Extra |
++---+-++----+--+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| age | int(11) | YES | | NULL | | -- 修改為 int 類型
++---+-++----+--+
5 rows in set (0.01 sec)
mysql>
ALTER TABLE 表名 CHANGE 舊列名 新列名 類型;
-- 需求:將student表中的age欄位名改成nianling,類型int(2)
alter table student change age nianling int(2);
執行如下:
-- 查看當前student表結構
mysql> desc student;
++---+-++----+--+
| Field | Type | Null | Key | Default | Extra |
++---+-++----+--+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| age | int(11) | YES | | NULL | | -- 當前欄位為 age
++---+-++----+--+
5 rows in set (0.01 sec)
-- 將student表中的age欄位名改成nianling,類型int(2)
mysql> alter table student change age nianling int(2);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 查看修改後的表結構
mysql> desc student;
++---+-++----+--+
| Field | Type | Null | Key | Default | Extra |
++---+-++----+--+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| nianling | int(2) | YES | | NULL | | -- 當前欄位改為 nianling
++---+-++----+--+
5 rows in set (0.01 sec)
mysql>
ALTER TABLE 表名 DROP 列名;
-- 需求:將student表中的nianling欄位從表中刪除
alter table student drop nianling;
執行如下:
-- 查看student表結構
mysql> desc student;
++---+-++----+--+
| Field | Type | Null | Key | Default | Extra |
++---+-++----+--+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| nianling | int(2) | YES | | NULL | | -- 準備要刪除的欄位
++---+-++----+--+
5 rows in set (0.01 sec)
-- 將student表中的nianling欄位從表中刪除
mysql> alter table student drop nianling;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 查看修改後的表結構
mysql> desc student;
++---+-++----+--+
| Field | Type | Null | Key | Default | Extra |
++---+-++----+--+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
++---+-++----+--+
4 rows in set (0.00 sec)
mysql>
RENAME TABLE 表名 TO 新表名;
-- 需求:將student表名稱改為stu
rename table student to stu;
執行如下:
-- 查看所有表
mysql> show tables;
++
| Tables_in_db1 |
++
| student | -- 修改之前的表名 student
| student2 |
++
2 rows in set (0.00 sec)
-- 將student表名稱改為stu
mysql> rename table student to stu;
Query OK, 0 rows affected (0.01 sec)
-- 查看所有表
mysql> show tables;
++
| Tables_in_db1 |
++
| stu | -- 修改之後的表名 stu
| student2 |
++
2 rows in set (0.00 sec)
mysql>
ALTER TABLE 表名 character set 字符集;
-- 需求:將stu表的字符集修改為gbk, 再將其修改回來
alter table stu character set gbk;
alter table stu character set utf8;
執行如下:
-- 查看stu當前的表結構
mysql> show create table stu;
+--+-+
| Table | Create Table |
+--+-+
| stu | CREATE TABLE `stu` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`sex` char(1) DEFAULT NULL,
`birthday` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | -- 查看當前的字符集為 latin1
+--+-+
1 row in set (0.00 sec)
mysql>
-- 將stu表的字符集修改為gbk
mysql> alter table stu character set gbk;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 查看stu表的結構
mysql> show create table stu;
+--+--+
| Table | Create Table |
+--+--+
| stu | CREATE TABLE `stu` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) CHARACTER SET latin1 DEFAULT NULL,
`sex` char(1) CHARACTER SET latin1 DEFAULT NULL,
`birthday` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk | -- 可以看到字符集已經被修改為 gbk
+--+--+
1 row in set (0.00 sec)
mysql>
-- 將stu表的字符集修改為utf8
mysql> alter table stu character set utf8;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 查看stu表的結構
mysql> show create table stu;
+--+-+
| Table | Create Table |
+--+-+
| stu | CREATE TABLE `stu` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) CHARACTER SET latin1 DEFAULT NULL,
`sex` char(1) CHARACTER SET latin1 DEFAULT NULL,
`birthday` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 | -- 可以看到字符集已經被修改為 utf8
+--+-+
1 row in set (0.00 sec)
mysql>
具體操作:
-- 需求:直接刪除student2表
drop table student2;
-- 需求:判斷表是否存在,若存在則刪除表
drop table if exists student2;
示例如下:
-- 查看當前所有表
mysql> show tables;
++
| Tables_in_db1 |
++
| stu |
| student2 |
++
2 rows in set (0.00 sec)
-- 刪除student2表
mysql> drop table student2;
Query OK, 0 rows affected (0.01 sec)
-- 再查看所有表,發現student2表已經被刪除了
mysql> show tables;
++
| Tables_in_db1 |
++
| stu |
++
1 row in set (0.00 sec)
-- 再嘗試刪除 student2 ,發現會報錯。
mysql> drop table student2;
ERROR 1051 (42S02): Unknown table 'db1.student2'
-- 判斷是否存在student2表後,再進行刪除
mysql> drop table if exists student2;
Query OK, 0 rows affected, 1 warning (0.00 sec)