当前位置:实例文章 » 其他实例» [文章]3. MySQL - 数据类型 & 选项约束

3. MySQL - 数据类型 & 选项约束

发布人:shili8 发布时间:2024-11-14 15:11 阅读次数:0

**MySQL数据类型与选项约束**

在MySQL中,数据类型是指用于存储和表示数据的基本单位。每种数据类型都有其特定的长度、范围和精度等属性。选项约束则是指对数据类型进行限制或设置的一些额外规则。

**1. 数值类型**

数值类型包括整型、浮点型和定点型。

### (1) 整型整型用于存储整数值,支持的范围从-2^31到2^31-1。

sqlCREATE TABLE test (
 id INT,
 age INT);


在上述示例中,`id`和`age`都是整型类型。

### (2) 浮点型浮点型用于存储小数值,支持的范围从-3.4E38到3.4E38。

sqlCREATE TABLE test (
 price DECIMAL(10,2),
 score FLOAT);


在上述示例中,`price`是定点型类型,而`score`是浮点型类型。

### (3) 定点型定点型用于存储小数值,支持的范围从-1.0E+38到1.0E+38。

sqlCREATE TABLE test (
 price DECIMAL(10,2),
 score DECIMAL(5,2)
);


在上述示例中,`price`和`score`都是定点型类型。

**2. 字符串类型**

字符串类型用于存储文本数据,包括字符集、长度等属性。

### (1) CHARCHAR是固定长度的字符串类型,支持的长度从0到255。

sqlCREATE TABLE test (
 name CHAR(10),
 address CHAR(50)
);


在上述示例中,`name`和`address`都是CHAR类型。

### (2) VARCHARVARCHAR是可变长度的字符串类型,支持的长度从1到65535。

sqlCREATE TABLE test (
 name VARCHAR(20),
 address VARCHAR(100)
);


在上述示例中,`name`和`address`都是VARCHAR类型。

**3. 日期时间类型**

日期时间类型用于存储日期、时间或两者的组合。

### (1) DATEDATE是用于存储日期的类型,支持的范围从'1000-01-01'到'9999-12-31'。

sqlCREATE TABLE test (
 birthday DATE,
 hire_date DATE);


在上述示例中,`birthday`和`hire_date`都是DATE类型。

### (2) TIMETIME是用于存储时间的类型,支持的范围从'-838:59:59'到'838:59:59'。

sqlCREATE TABLE test (
 start_time TIME,
 end_time TIME);


在上述示例中,`start_time`和`end_time`都是TIME类型。

### (3) DATETIMEDATETIME是用于存储日期和时间的类型,支持的范围从'1000-01-0100:00:00'到'9999-12-3123:59:59'。

sqlCREATE TABLE test (
 creation_time DATETIME,
 update_time DATETIME);


在上述示例中,`creation_time`和`update_time`都是DATETIME类型。

### (4) TIMESTAMPTIMESTAMP是用于存储日期和时间的类型,支持的范围从'1970-01-0100:00:00'到'2038-01-1903:14:07'。

sqlCREATE TABLE test (
 creation_time TIMESTAMP,
 update_time TIMESTAMP);


在上述示例中,`creation_time`和`update_time`都是TIMESTAMP类型。

**4. 枚举类型**

枚举类型用于存储一个值从一组预定义的值中选择。

sqlCREATE TABLE test (
 sex ENUM('male', 'female'),
 status ENUM('active', 'inactive')
);


在上述示例中,`sex`和`status`都是枚举类型。

**5. 位图类型**

位图类型用于存储一个或多个整数值的集合。

sqlCREATE TABLE test (
 flags INT(11) UNSIGNED,
 flag1 INT(11) UNSIGNED,
 flag2 INT(11) UNSIGNED);


在上述示例中,`flags`、`flag1`和`flag2`都是位图类型。

**选项约束**

选项约束用于对数据类型进行限制或设置的一些额外规则。

### (1) NOT NULLNOT NULL用于指定一个字段不能为NULL。

sqlCREATE TABLE test (
 name VARCHAR(20) NOT NULL,
 address VARCHAR(100)
);


在上述示例中,`name`不能为NULL,而`address`可以为NULL。

### (2) DEFAULTDEFAULT用于指定一个字段的默认值。

sqlCREATE TABLE test (
 name VARCHAR(20),
 address VARCHAR(100) DEFAULT 'Unknown'
);


在上述示例中,如果`address`没有被赋值,则会使用'Unknown'作为其值。

### (3) AUTO_INCREMENTAUTO_INCREMENT用于指定一个字段的值自动生成。

sqlCREATE TABLE test (
 id INT AUTO_INCREMENT,
 name VARCHAR(20)
);


在上述示例中,`id`将自动增长,并且可以用来生成唯一的ID。

### (4) PRIMARY KEYPRIMARY KEY用于指定一个字段作为表的主键。

sqlCREATE TABLE test (
 id INT PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(20)
);


在上述示例中,`id`被指定为表的主键,并且将自动增长。

### (5) UNIQUEUNIQUE用于指定一个字段不能有重复值。

sqlCREATE TABLE test (
 id INT PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(20),
 email VARCHAR(100) UNIQUE);


在上述示例中,`email`不能有重复值。

### (6) CHECKCHECK用于指定一个字段的值必须满足某个条件。

sqlCREATE TABLE test (
 id INT PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(20),
 age INT CHECK(age >0)
);


在上述示例中,`age`必须大于0。

### (7) FOREIGN KEYFOREIGN KEY用于指定一个字段与另一个表的某个字段有关联。

sqlCREATE TABLE test (
 id INT PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(20),
 department_id INT,
 FOREIGN KEY (department_id) REFERENCES departments(id)
);


在上述示例中,`department_id`与`departments.id`有关联。

相关标签:mysql数据库adb
其他信息

其他资源

Top