MySQL 基础教程

MySQL 高级教程

MySQL SQL 语句

MySQL 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/mysql-ddl.html

MySQL DDL(数据定义语言) 详解


MySQL 的 DDL 遵守 SQL 的 DDL 规范,数据定义语言(Data Definition Languages),它定义了不同的数据库、表、字段、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter 等。

CREATE 语句

CREATE TABLE 语句

CREATE TABLE 语句用来根据指定的名称创建表,前提是要有 CREATE 权限。

默认情况下,MySQL 创建表采用 InnoDB 存储引擎,若表已经存在,则会报错,需要结合 IF NOT EXISTS 来避免错误。

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(create_definition,...)]
    [table_options]
    [partition_options]
    [IGNORE | REPLACE]
    [AS] query_expression

以创建用户表为例,示例如下:

CREATE TABLE IF NOT EXISTS `user` (
  `uid` bigint(20) unsigned NOT NULL COMMENT '用户 id',
  `user_name` varchar(64) NOT NULL DEFAULT '' COMMENT '用户名称',
  `user_email` varchar(128) NOT NULL DEFAULT '' COMMENT '用户 email 地址',
  `status` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '状态,0、待审核,1、有效,2、无效',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`uid`),
  UNIQUE KEY `uniq_user_email` (`user_email`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';

关于 DROP 的更多细节可参考 MySQL 创建数据表操作语句(CREATE TABLE)详解

ALTER 语句

ALTER TABLE 语句

alter table 语句主要针对表名表索引表字段就行修改操作,主要结合子关键字 addmodifydropchangerename 等。

增加字段

MySQL 针对指定表增加字段的语法如下:

ALTER TABLE tbl_name
    ADD col_name column_definition
    [FIRST | AFTER col_name]

增加列采用关键字 add,其后增加对应列名及列定义,此外 MySQL 提供了 FIRST 和 AFTER 两个子选项来指定新增字段的位置,FIRST 表示放置在第一列,AFTER 表示设定在某个字段之后。

假设有用户表 user,其有两个字段 id 和 user_name,新增 user_email 字段示例如下:

ALTER TABLE user
	ADD user_email VARCHAR(64) NOT NULL DEFAULT '' COMMENT '用户 email 地址'

未指定位置,默认在最后字段后追加。

ALTER TABLE user
	ADD user_email VARCHAR(64) NOT NULL DEFAULT '' COMMENT '用户 email 地址'
	FIRST

如上追加 FIRST 选项后,user_email 字段会放在 id 字段之前,即第一列。

ALTER TABLE user
	ADD user_email VARCHAR(64) NOT NULL DEFAULT '' COMMENT '用户 email 地址'
	AFTER id

显然,将新增非主键的新增字段放在第一的位置可读性较差,如上可以指定放在某个列之后。

删除字段

MySQL 针对指定表删除字段的语法如下:

ALTER TABLE tbl_name
    DROP COLUMN col_name

如下示例:

ALTER TABLE user
	DROP COLUMN user_email

DROP 语句

MySQL DROP 语句用来删除指定的数据库、表或索引等,它不仅删除内容,连带结构也一起删除,“完整消灭”,需要谨慎操作。

DROP TABLE 语句

DROP TABLE 语句用来删除数据表,它将表的结构、属性、索引、数据等都会删掉。

DROP [TEMPORARY] TABLE [IF EXISTS]
    tbl_name [, tbl_name] ...
    [RESTRICT | CASCADE]

关于 DROP 的更多细节可参考 MySQL 删除表操作语句(DROP TABLE)详解

相关推荐