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)详解

相关推荐

MySQL 的 DML 遵守 SQL 的 DML 规范,数据操作语言(Data Manipulation Language),它主要用于添加 ...
MySQL 删除数据操作使用 DELETE FROM 语句,它属于 DML(数据操作语言)范畴,DELETE 语句是一行一行地进行删除操作, ...
MySQL 插入数据操作使用 INSERT INTO 语句,它属于 DML(数据操作语言)范畴,该语句插入方式支持从简单的添加操作到唯一键( ...
Hive SQL 数据操作主要是针对表的增删改查,和标准 SQL 类似,其中最常用的是查询语句,即 SELECT 相关语句。 ...
MySQL 将查询结果数据导出(转换)为 CSV 格式文件,结合自带的分隔等关键字语句可现实,具体如下。 ...