mysql DDL

mysql DDL

DDL

表的创建、更改和删除

create 、drop 、alter 、truncate

CREATE TABLE

一般有两种创建表的方法:

  • 使用具有交互式创建和管理表的工具;
  • 表也可以直接用MySQL语句操纵。
  • sql脚本
CREATE TABLE table_name(
	column_name		type	options_1, 
    column_name		type	options, 
    column_name		type	options, 
    column_name		type	options, 
    column_name		type	options, 
    ...,
    options_2
    ...
)options_3;

options有:

  • 列范围:(options_1位置)

    NULL # 允许插入行时不用给出该列的值
    NOT NULL # 插入或更新时必须要有值
    AUTO_INCREMENT
    DEFAULT val
    
  • 单独设置:(options_2位置)

    PRIMARY KEY(column_name, column_name, ...)
    
  • 表范围:(options_3位置)

    ENGINE=InnoDB
    

表存在时,使用CREATE TABLE不会覆盖原表,会报错。
IF NOT EXISTS:不检查表模式,仅查看表名是否存在,在表不存在时才创建。

CREATE TABLE table_name IF NOT EXISTS(
    ...
);

PRIMARY KEY:主键,值唯一,不能为NULL。可以使用单个列,也可以使用多个列。

PRIMARY KEY(column_name [, column_name, ...])

主键可以在创建表时定义(如这里所示),或者在创建表之后定义。
主键中只能使用不允许NULL值的列。允许NULL值的列不能作为唯一标识。

AUTO_INCREMENT:MySQL自动对该列增量
每个表只允许一个AUTO_INCREMENT列,而且它必须被索引(如,通过使它成为主键)。
手动插入值后,后续的增量将开始使用该手工插入的值。

# 返回最后一个AUTO_INCREMENT值
SELECT last_insert_id();

DEFAULT:默认值,值不能是函数,只支持常量


数据引擎

InnoDB、MEMORY、MyISAM

InnoDB是一个可靠的事务处理引擎(参见第26章),它不支持全文本搜索
MEMORY在功能等同于MyISAM,但由于数据存储在内存(不是磁盘)中,速度很快(特别适合于临时表);
MyISAM是一个性能极高的引擎,它支持全文本搜索(参见第18章),但不支持事务处理

ENGINE=xxx

引擎类型可以混用(不同的表指定一种不同的引擎),但是外键不能跨引擎(不同引擎的表不能引用其他引擎的表的外键)。

ALTER TABLE

更改表结构;

增加列|删除列|定义外键

使用前建议备份数据,因为对表的更改不可撤销。

ALTER TABLE table_name
ADD col col_info;

ALTER TABLE table_name
DROP COLUMN column_name;

ALTER TABLE table_name
ADD CONSTRAINT fk_t1_t2 FOREIGN KEY (col_in_t1) REFERENCES t2 (col_in_t2);

以上是单次修改,多次修改同一个表可以在一句使用,隔开多个修改项。

DROP TABLE

DROP TABLE table_name;

RENAME TABLE

RENAME TABLE t1 TO t2 [, t3 TO t4, ...];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值