SQL DDL语句

发布时间 2023-11-20 11:07:18作者: 背对背依靠

Data Defination Language,数据定义语言。这类 SQL 语句用于定义或修改数据库结构。主要的 DDL 操作包括 CREATE(创建新表或数据库)、ALTER(修改现有数据库对象的结构)和 DROP(删除表、视图或其他数据库对象)。

表操作

创建表 CREATE TABLE

创建数据表的时候,不但需要指定表名字和列名,还需要指定每列的数据类型以及其它的一些属性信息。

语法格式:

CREATE TABLE TB_NAME (列名 属性, ... ,列名 属性)

数据类型

常见的数据类型有这些:

整型

1、 INT 或 INTEGER: 用于存储整数

2、 SMALLINT: 较小范围的整数

3、 BIGINT: 较大范围的整数

4、 TINYINT: 非常小的整数,例如用于存储年龄或天数


浮点型

1、 FLOAT: 浮点数,用于存储带小数的数值,精度较低

2、 DOUBLE: 双精度浮点数,比 FLOAT 有更高的精度

3、 DECIMAL 或 NUMERIC: 定点数,用于存储精确的数值,如货币

字符型

1、 char(n): 存储的是一个固定长度的字符串,无论存储的字符串长度是多少都会占用n个字符空间。

例如: 定义一个 char(10) 类型的字段,无论存储的字符串长度是多少,它都会占用 10 个字符的空间。


2、 varchar(n): 存储的是一个可变长度的字符串,n表示字符串的最大长度

例如: varchar(100) 字段存储一个长度为 50 的字符串时,只会占用约 50 个字符的空间。


3、 nchar(n): 同样也是存储一个固定长度的字符串,但它用于存储 Unicode 数据,n表示最大字符串的长度。占用的空间通常是 char 的两倍,因为 Unicode 字符通常需要更多的存储空间。n 表示字符串的最大长度。这里的长度是指字符的数量,不是字节的数量。


4、 nvarchar(n): 存储的是一个可变长度的 Unicode 字符串。和nchar一样,适用于多语言环境。n 表示字符串的最大可能字符数。

例如: 当数据包含多种语言,如英文、中文、日文和德文等,使用 nchar 或 nvarchar 是更好的选择。这是因为这些数据类型专门设计用于存储 Unicode 字符串,能够有效地处理多种不同的字符集和国际化字符。


日期和时间

1、 DATE: 仅存储日期

2、 TIME: 仅存储时间

3、 DATETIME 或 TIMESTAMP: 存储日期和时间


布尔型

1、 BOOLEAN: 存储真(TRUE)或假(FALSE)值


二进制数据

1、BINARY(n): 存储固定长度的二进制数据

2、 VARBINARY(n): 存储可变长度的二进制数据

3、 BLOB: 二进制大对象,用于存储大量的二进制数据,如图片或音频


枚举和集合

1、 ENUM: 允许从预定义的值列表中选择一个值

2、SET: 允许从预定义的值列表中选择多个值


例如: 定义枚举这种数据类型时,需要指定与定义的值

sex ENUM('M', 'F')

约束属性

1、 主键:属于表中某条记录的唯一标识符,主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。主键使用 primary key 关键字指定。

2、 外键:用于建立两个表之间的关联关系。一个表中的外键指向另一个表的主键,建立外键的表为“从表”,外键依赖的表为“主表”。通过 foreign key 关键字指定外键。

3、 唯一性:用于确保列中的所有值都是唯一的。和主键的区别在于 唯一性的数值允许为空。 通过 UNIQUE 关键字指定。

其它属性

1、 非空:用于确保列中的每条记录都必须有一个值,通过 NOT NULL 关键字指定

2、 默认值:当插入记录时,如果没有为列提供值,将自动使用默认值。通过 DEFAULT 关键字指定。

3、 自动递增:一般是结合主键使用的,适用于整数类型。通过 AUTO_INCREMENT 关键字可以指定某列值可以自动更新,默认起始值和自增都是1

例如: 创建一张表

CREATE TABLE students (
    ID int PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age TINYINT,
    sex ENUM('M', 'F')
);

删除表 DROP TABLE

删除一张表,只需要指定表的表名就可以了

DROP TABLE
    TABLE_NAME

修改表 ALTER TABLE

几乎所有的数据库管理系统(DBMS)都支持 ALTER TABLE 语句,这是用来修改已存在的表的结构的标准 SQL 命令。然而,具体的 ALTER TABLE 语句的语法和支持的操作确实在不同的 DBMS 之间有所差异。这些差异可能包括如何添加、删除或修改列,如何更改数据类型,以及如何添加或修改约束等。


这里以为常用的MySQL数据库为例:


添加列

ALTER TABLE
    table_name
ADD
    column_name data_type;

删除列

ALTER TABLE
    table_name
DROP COLUMN
    column_name;

修改列类型

ALTER TABLE
    table_name
ALTER COLUMN
    column_name new_data_type;

修改列名

命令修改列名时,需要重新指定该列的属性,包括数据类型和任何其他属性

ALTER TABLE
    table_name
CHANGE COLUMN
    old_column_name new_column_name column_definition;

库操作

创建库 CREATE DATABASE

CREATE DATABASE database_name;

虽然 CREATE DATABASE 是 SQL 的标准部分,不同的数据库系统可能会在这个基本命令之上提供额外的选项和特性。

删除库 DROP DATABASE

DROP DATABASE database_name;

说明:

1、这个操作会永久删除数据库及其所有内容,这个操作是不可逆的

2、在 SQL 标准中,没有专门的命令来修改已经存在的数据库的属性,如其名称或其他设置。不同的数据库管理系统(DBMS)可能提供了修改数据库特定属性的能力,但这些通常是特定于该系统的扩展,并不是 SQL 标准的一部分。