前言: 前面幾篇文章,我們介紹了MySQL的基礎概念及邏輯架構。相信你現在應該有了自己的一套MySQL環境,接下來我們就可以開始練習MySQL了。本文將從MySQL最基礎的語句出發,為你展示出創建及修改不同對象應該使用的標準語句。 1.創建資料庫 創建資料庫的官方標準語法為: 其中{}中的內容為多選 ...
前言:
前面幾篇文章,我們介紹了MySQL的基礎概念及邏輯架構。相信你現在應該有了自己的一套MySQL環境,接下來我們就可以開始練習MySQL了。本文將從MySQL最基礎的語句出發,為你展示出創建及修改不同對象應該使用的標準語句。
1.創建資料庫
創建資料庫的官方標準語法為:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification] ...
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
其中{}中的內容為多選一,[]中的內容可帶可不帶,後續若有此類符號也是同等意思。
一般工作中常常這樣創建資料庫:
CREATE DATABASE IF NOT EXISTS `test_db` DEFAULT CHARACTER SET utf8;
想要查看資料庫的創建語句,可以這樣查看:
mysql> show create database test_db;
+----------+------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------+
| test_db | CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+------------------------------------------------------------------+
2.修改資料庫
一般情況下很少去修改資料庫,官方給出的標準語法為:
ALTER {DATABASE | SCHEMA} [db_name]
alter_specification ...
alter_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
特殊情況下我們可能會修改資料庫的字元集,這時候我們可以這樣書寫:
ALTER DATABASE `test_db` DEFAULT CHARACTER SET utf8mb4;
3.刪除資料庫
刪除資料庫可要小心啊!千萬不要刪庫跑路哦。此類需求一般極少,不過我們也要會呀,連庫都不會刪豈不是很沒面子~~ 還是看下官方文檔語法:
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
相比創建和更改來講,刪除就顯得簡單粗暴很多。所有我們操作的時候要格外小心,刪除前建議做下備份。
比如我們要刪除test_db庫,我們可以這樣寫:
DROP DATABASE IF EXISTS `test_db`;
刪除之後我們再執行show database就看不到test_db庫了。
4.創建表
創建數據表是我們經常遇到的語句了,官方給出的參考語法比較長,這裡先列出下,為了不占用太多空間,這裡用代碼圖片代替。
對於我們學習及工作常用的選項歸納如下:
CREATE TABLE <表名> ([表定義選項])[表選項][分區選項];
[表定義選項]的格式為:
<列名1> <類型1> [,…] <列名n> <類型n>
對於臨時表的創建及分區表的創建選項,日常學習及工作中用的不多,這裡就不多介紹,下麵列舉出一個基礎的創建表的語句:
CREATE TABLE `user_info` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',
`user_id` bigint(11) NOT NULL COMMENT '用戶id',
`username` varchar(45) NOT NULL COMMENT '真實姓名',
`email` varchar(30) NOT NULL COMMENT '用戶郵箱',
`nickname` varchar(45) NOT NULL COMMENT '昵稱',
`birthday` date NOT NULL COMMENT '生日',
`sex` tinyint(4) DEFAULT '0' COMMENT '性別',
`short_introduce` varchar(150) DEFAULT NULL COMMENT '一句話介紹自己,最多50個漢字',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間',
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_user_id` (`user_id`),
KEY `idx_username`(`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶信息表'
5.修改表
修改表可選選項同樣是很多的,參考上面創建表的選項,這裡就不一一列出了。
alter table用於更改表的結構,例如,可以添加或刪除列,創建或刪除索引,更改現有列的類型,或重命名列或表本身。還可以更改表的存儲引擎或表註釋。下麵介紹下幾個常用的修改表的示例:
修改表選項
# 修改表的存儲引擎
ALTER TABLE t1 ENGINE = InnoDB;
# 修改表的自增值
ALTER TABLE t1 AUTO_INCREMENT = 13;
# 修改表的字元集
ALTER TABLE t1 CHARACTER SET = utf8;
# 添加(或更改)表註釋:
ALTER TABLE t1 COMMENT = 'New table comment';
# 修改表名稱
ALTER TABLE t1 RENAME t2;
欄位(列)操作
# 增加欄位
# ALTER TABLE <表名> ADD COLUMN <新欄位名> <數據類型> [約束條件] [FIRST|AFTER 已存在的欄位名]
ALTER TABLE t1 ADD COLUMN col1 INT FIRST;
# 刪除欄位
ALTER TABLE t1 DROP COLUMN col1;
# 修改欄位類型
ALTER TABLE t1 MODIFY col1 VARCHAR(30);
# 更改欄位名稱
ALTER TABLE t1 CHANGE col1 col2 VARCHAR(30);
索引操作
# 添加索引
alter table t1 add index index_name (column_list) ;
alter table t1 add unique (column_list) ;
alter table t1 add primary key (column_list) ;
# 刪除索引
alter table t1 drop index index_name ;
alter table t1 drop primary key ;
6.截斷表
截斷表即truncate table,也可理解為清空表,從邏輯上講,TRUNCATE TABLE類似於DELETE一個表的所有行,但它繞過了刪除數據的DML方法,因此它不能回滾。
truncate語法很簡單,官方文檔示例:
TRUNCATE [TABLE] tbl_name
7.刪除表
刪除表官方給出的參考語法為:
DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
如果我們不需要這個表,可以考慮使用該語法,但是它將刪除表定義和所有表數據,是不可回滾的操作,一定要小心執行哦。
總結:
本文記錄一些常用的基礎語句,雖然看起來很簡單,但回顧一下還是有收穫的,特別是翻閱官方文檔後,發現這些基礎的語句也是有很多選項的,可能我們只是經常用到其中一種。自己也很少寫這種系列的文章,打算多寫幾篇入門MySQL的基礎文章,可能這幾篇先後順序也不太嚴謹,其他同學有什麼好的想法,歡迎與我溝通哦!