一、概述
數據庫模式定義語言DDL(Data Definition Language),是用於描述數據庫中要存儲的現實世界實體的語言。
主要由create(添加)、alter(修改)、drop(刪除)和 truncate(刪除) 四個關鍵字完成。
數據定義語言DDL用來創建數據庫中的各種對象-----表、視圖、索引、同義詞、聚簇等如:
CREATE TABLE、VIEW、INDEX、SYN、CLUSTER
| | | | |
表 視圖 索引 同義詞 簇DDL操作是隱性提交的!不能rollback
常用的有CREATE和DROP,用於在數據庫中創建新表或刪除表,以及為表加入索引等。
二、CREATE關鍵字
2.1、創建一個數據庫
-- 建立一個數據庫 create database 數據庫名; -- 建立一個數據庫並制定編碼格式 create database 數據庫名 default charset utf8 collate utf8_general_ci;
2.2、創建一張表
-- 在數據庫中創建一張表 create table 表名稱(字段1 類型,字段2 類型); create table hero_table ( id int,name varchar(10)); -- 創建表並增加約束 CREATE TABLE 表名稱 ( 字段1 類型1 約束1 約束1, 字段2 類型2 約束2 約束2 ); -- 創建表並增加約束 CREATE TABLE hero_table4 ( id INT(11) NOT NULL PRIMARY KEY, NAME VARCHAR(10) NOT NULL UNIQUE KEY );
2.3、使用create復制表
-- 只復制表結構及約束,但不復制數據 CREATE TABLE 復制出的表 LIKE 原表 -- 復制表結構及數據,但不復制約束 CREATE TABLE 復制出的表 AS SELECT * FROM 原表
三、ALTER關鍵字
3.1、添加表字段(添加一列)
-- 向已存在的表中添加字段(列) -- mysql中的語法如下兩條都可以: ALTER TABLE 表名稱 ADD 字段名 字段約束 ALTER TABLE 表名稱 ADD COLUMN 字段名 字段約束 -- oracle語法 ALTER TABLE 表名稱 ADD 字段名 字段約束
3.2、添加索引
ALTER TABLE 表名稱 ADD INDEX 索引名稱 (字段名)
3.3、添加主鍵
ALTER TABLE 表名稱 ADD PRIMARY KEY (字段名) ALTER TABLE 表名稱 ADD UNIQUE KEY (字段名)
3.4、添加外鍵約束
ALTER TABLE 需要添加外鍵表名稱 ADD FOREIGN KEY 外鍵名(設為外鍵的字段) REFERENCES 被添加外鍵表名稱(設為被添加外鍵的字段)
3.5、修改字段類型
-- 修改字段類型時要注意字段類型的兼容性及精度,除非該列全部數據為null
ALTER TABLE 表名稱 CHANGE COLUMN NAME 修改字段 修改為字段類型 ALTER TABLE 表名稱 MODIFY COLUMN 修改字段 修改為字段類型
3.6、修改與刪除表中default
-- 設置default ALTER TABLE 表名稱 ALTER COLUMN 字段名 SET DEFAULT '修改的值' -- 刪除default ALTER TABLE 表名稱 ALTER COLUMN 字段名 DROP DEFAULT
3.7、禁用或者啟用約束
-- 禁用約束 ALTER TABLE 表名稱 DISABLE KEYS -- 啟用約束 ALTER TABLE 表名稱 ENABLE KEYS
3.8、刪除表字段、主鍵、索引、外鍵約束
-- 刪除表字段 ALTER TABLE 表名稱 DROP COLUMN 字段名 - 刪除主鍵 ALTER TABLE 表名稱 DROP PRIMARY KEY -- 刪除索引 ALTER TABLE 表名稱 DROP INDEX 索引的字段名 -- 刪除外鍵約束 ALTER TABLE 表名稱 DROP FOREIGN KEY 外鍵的字段名
3.9、修改表名
-- mysql修改語法 ALTER TABLE 修改前表名稱 RENAME 修改后表名稱; -- oracle修改表名語法 RENAME 修改前表名稱 TO 修改后表名稱;
四、drop關鍵字
4.1、刪除數據庫
DROP DATABASE 數據庫名
4.2、刪除表
DROP TABLE 表名稱
五、TRUNCATE關鍵字
與drop的區別:truncate只刪除數據不刪除表的結構(定義),釋放空間
-- 清空效率較高 truncate table 表名稱; -- 清空效率低 delete from 表名稱;
