数据库---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
drop删除表
-- 删除索引
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表名称;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。