数据库---DDL(数据库定义语言)
一、概述
数据库模式定义语言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 表名称;