- 本博客是《MySQL基礎》系列博客的第六部分,主要介紹SQL語句中的DDL語句中CREATE、ALTER、DROP的基本用法。
- 本博客既爲方便自己查看複習而作,亦爲你而作,望能有所裨益
- 學習交流請聯繫 [email protected]
DDL簡介
DDL,即Data Definition Language,數據定義語言,用於如數據庫、表、索引等數據的定義。
DDL用法
DDL常用的語句有三個:CREATE
,DROP
,ALTER
。其用法簡介如下:
關鍵詞 | 用途 |
---|---|
CREATE | 創建 數據庫(Database)、表(Table)、索引(Index)、視圖(View) |
DROP | 刪除 數據庫(Database)、表(Table)、索引(Index)、視圖(View)、約束條件(Constraint) |
ALTER | 修改 約束條件(Constraint) |
CREATE
創建數據庫
CREATE DATABASE <數據庫名> ; -- 採用默認的字符集和校驗集
CREATE DATABASE <數據庫名> DEFAULT CHARACTER SET <字符集> COLLATE <校驗集>;
創建數據表
CREATE TABLE <數據庫名>.<數據表名>(
<字段1> <數據類型> <約束條件>,
<字段2> <數據類型> <約束條件>,
···························,
primary key(<聯合主鍵一>,<聯合主鍵二>,···) -- 在創建聯合主鍵時使用
constraint <連接名> foreign key(<外鍵一>,<外鍵二>,···)
references <被連接的表名>(<主鍵一>,<主鍵二>,···)
-- 在創建外鍵時使用,添加其他約束條件時也用CONSTRAINT
)
ENGINE = <引擎名> -- 不寫此句則默認引擎爲InnoDB
DEFAULT CHARACTER SET = <字符集> -- 字符集設定,不寫此句則爲默認字符集
COLLATE = <校驗集> -- 不寫此句則爲默認校驗集
COMMENT = `<註釋內容>`; -- 添加註釋內容,不寫則意味着無註釋
創建索引及視圖
創建索引以及視圖的相關方法會在之後的專題提到,在此先不予以介紹
ALTER
在學習更改表的約束條件的語法時,我們有必要先學習下兩個常用語法:
desc <數據庫名>.<數據表名>; -- 查看錶結構,desc 也可以用 describe 代替
show create table <數據庫名>.<數據表名>; -- 顯示創建該數據表時使用的 CREATE 語句
如此,我們便可以對要修改的表有個大致瞭解,從而方便後續操作
更改表設置
/*以下內容爲方便起見,沒有指定數據庫名,默認其在已經選定的同一數據庫下*/
alter table <數據表名> character set <新字符集>, collate <新校驗集>,
engine <新引擎名> comment '<新註釋>' rename [to] <新數據表名>;
-- 更改表的名字及基本設置,可單項修改,也可多項併發,to可加可不加
ALTER TABLE test ENGINE[=]MyISAM , COMMENT[=]'四月天' rename test_1;
-- 等號可加可不加
更改字段
alter table <數據表名> modify <字段名> <更改內容>;
-- 改變字段的部分內容,如數據類型,默認值和註釋
alter table test modify A int default 99 comment 'CSDN';
-- 更改test表中的A字段的數據類型爲int。默認值爲99,註釋爲CSDN
alter table <數據表名> change <字段名> <新字段名> <更改內容>;
-- change比modify多了一個修改字段名的功能,但不能單獨修改,必須增加其他更改內容
添加字段
alter table <表名> add <字段名> <數據類型> <約束條件>; -- 增加新的字段及其設置
alter table test add id int unique not null auto_increment;
-- 在test表中增加新的一列,字段名爲id,數據類型爲整數,索引唯一、非空、自增
alter table test add id_test1 decimal(5,3) unsigned not null
comment '無問西東' default 911;
-- 增加的內容可以有註釋和默認值
alter table <表名> add <新字段名> <數據類型> <約束條件> after <老字段名>;
-- 在老字段名後面加入一個新的字段及其相關設置
DROP
刪除數據庫
drop database <數據庫名>;
刪除數據表
drop database <數據庫名>.<數據表名>;
/* 有的表有外鍵約束,此時應先去掉約束
alter table <連接的表> drop foreign key <外鍵名>;
再刪除表 */
刪除字段
alter table <數據表名> drop <字段名>;
-- 當字段關聯到其他表時,其刪除方法同上
刪除索引及視圖
刪除索引以及視圖的相關方法會在之後的專題提到,在此先不予以介紹