前言: mysql
前面幾篇文章,咱們介紹了MySQL的基礎概念及邏輯架構。相信你如今應該有了本身的一套MySQL環境,接下來咱們就能夠開始練習MySQL了。本文將從MySQL最基礎的語句出發,爲你展現出建立及修改不一樣對象應該使用的標準語句。sql
建立數據庫的官方標準語法爲:數據庫
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 */ | +----------+------------------------------------------------------------------+
通常狀況下不多去修改數據庫,官方給出的標準語法爲:spa
ALTER {DATABASE | SCHEMA} [db_name] alter_specification ... alter_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name
特殊狀況下咱們可能會修改數據庫的字符集,這時候咱們能夠這樣書寫:code
ALTER DATABASE `test_db` DEFAULT CHARACTER SET utf8mb4;
刪除數據庫可要當心啊!千萬不要刪庫跑路哦。此類需求通常極少,不過咱們也要會呀,連庫都不會刪豈不是很沒面子~~ 仍是看下官方文檔語法:對象
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
相比建立和更改來說,刪除就顯得簡單粗暴不少。全部咱們操做的時候要格外當心,刪除前建議作下備份。
好比咱們要刪除test_db庫,咱們能夠這樣寫:blog
DROP DATABASE IF EXISTS `test_db`;
刪除以後咱們再執行show database就看不到test_db庫了。索引
建立數據表是咱們常常遇到的語句了,官方給出的參考語法比較長,這裏先列出下,爲了避免佔用太多空間,這裏用代碼圖片代替。
對於咱們學習及工做經常使用的選項概括以下:
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='用戶信息表'
修改表可選選項一樣是不少的,參考上面建立表的選項,這裏就不一一列出了。
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 ;
截斷表即truncate table,也可理解爲清空表,從邏輯上講,TRUNCATE TABLE相似於DELETE一個表的全部行,但它繞過了刪除數據的DML方法,所以它不能回滾。
truncate語法很簡單,官方文檔示例:
TRUNCATE [TABLE] tbl_name
刪除表官方給出的參考語法爲:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE]
若是咱們不須要這個表,能夠考慮使用該語法,可是它將刪除表定義和全部表數據,是不可回滾的操做,必定要當心執行哦。
總結:
本文記錄一些經常使用的基礎語句,雖然看起來很簡單,但回顧一下仍是有收穫的,特別是翻閱官方文檔後,發現這些基礎的語句也是有不少選項的,可能咱們只是常常用到其中一種。本身也不多寫這種系列的文章,打算多寫幾篇入門MySQL的基礎文章,可能這幾篇前後順序也不太嚴謹,其餘同窗有什麼好的想法,歡迎與我溝通哦!