数据库基础二 数据类型与SQL语言分类
数据库的数据类型非常丰富,可以满足不同的数据描述和约束要求。根据不同的情况和需求,数据库可以采用不同的数据类型。以下是一些常见的数据类型:
1. 整数类型:包括BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、INT、BIG INT等。这些类型用于存储整数值,其中BIT通常用于存储位值,BOOL用于存储布尔值。
2. 浮点数类型:包括FLOAT、DOUBLE、DECIMAL等。这些类型用于存储浮点数,其中FLOAT用于存储单精度浮点数,DOUBLE用于存储双精度浮点数,DECIMAL用于存储高精度的十进制数。
3. 字符串类型:包括CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB等。这些类型用于存储字符串,其中CHAR用于存储定长字符串,VARCHAR用于存储变长字符串,TEXT用于存储较长的文本数据,BLOB用于存储二进制数据。
4. 二进制数据类型:包括BINARY、VARBINARY、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB等。这些类型用于存储二进制数据,其中BINARY和VARBINARY用于存储定长和变长的二进制数据,BLOB用于存储较大的二进制数据。
5. 日期和时间类型:包括DATE、TIME、DATETIME、TIMESTAMP等。这些类型用于存储日期和时间相关的数据。
日期和时间类型
数据类型 | 描述 | 示例值 |
---|---|---|
DATE | 表示日期,格式为'YYYY-MM-DD'(3个字节) | '2023-07-18' |
TIME | 表示时间,格式为'HH:MM:SS'(3个字节) | '12:34:56' |
DATETIME | 表示日期和时间,包括日期和时间两部分,格式为'YYYY-MM-DD HH:MM:SS'(8个字节) | '2023-07-18 12:34:56' |
TIMESTAMP | 表示时间戳,是一个从1970年1月1日00:00:00 UTC到当前时间的秒数,格式为'YYYY-MM-DD HH:MM:SS'(4个字节) | '2023-07-18 12:34:56' |
这些数据类型用于在数据库中存储日期和时间相关的数据。DATE类型用于存储日期,不包括具体的时间信息;TIME类型用于存储时间,不包括具体的日期信息;DATETIME类型同时存储日期和时间信息,可以表示具体的日期和时间;TIMESTAMP类型也同时存储日期和时间信息,但它与DATETIME类型有一些区别。
整数类型
数据类型 | 描述 | 示例值 |
---|---|---|
TINYINT | 非常小的整数类型,通常用于存储有限的值,取值范围在 -128 到 127 之间(1个字节) | 10 |
SMALLINT | 较小的整数类型,通常用于存储有限的整数值,取值范围在 -32768 到 32767 之间(2个字节) | 3000 |
MEDIUMINT | 中等大小的整数类型,通常用于存储有限的整数值,取值范围在 -8388608 到 8388607 之间(3个字节) | -50000 |
INT | 标准的整数类型,通常用于存储有限的整数值,取值范围在 -2147483648 到 2147483647 之间(4个字节) | 1000000 |
BIGINT | 非常大的整数类型,通常用于存储非常大的整数值,取值范围在 -9223372036854775808 到 9223372036854775807 之间(8个字节) | 9223372036854775808 |
这些整数类型用于在数据库中存储整数值。它们有不同的取值范围和用途,可以根据具体需求选择合适的数据类型。其中,TINYINT是最小的整数类型,取值范围较小;SMALLINT、MEDIUMINT和INT是较常用的整数类型;而BIGINT是最大的整数类型,可以存储非常大的整数值。
浮点数类型
数据类型 | 描述 | 示例值 |
---|---|---|
FLOAT | 用于存储单精度浮点数,可以存储有限的精确值,取值范围在大约±3.4 * 10^38之间(4个字节) | 3.14159 |
DOUBLE | 用于存储双精度浮点数,可以存储更精确的值,取值范围在大约±1.8 * 10^308之间(8个字节) | 3.141592653589793 |
REAL | 用于存储实数,是FLOAT和DOUBLE类型的子集,具体取决于具体的数据库系统 | 3.14159 |
浮点数类型用于在数据库中存储浮点数值。它们可以存储有限的精确值或更精确的值。不同的数据库系统可能有不同的浮点数类型,具体取决于该系统的实现。
FLOAT类型用于存储单精度浮点数,可以存储有限的精确值,取值范围在大约±3.4 * 10^38之间。这是一个相对较小的取值范围,但对于大多数常规计算来说已经足够。
DOUBLE类型用于存储双精度浮点数,可以存储更精确的值,取值范围在大约±1.8 * 10^308之间。这是一个非常大的取值范围,可以用于处理非常大或非常小的数值。
REAL类型是FLOAT和DOUBLE类型的子集,具体取决于具体的数据库系统。它可以用于存储实数,具有适当的精度和范围。
字符串类型
数据类型 | 描述 | 示例值 |
---|---|---|
CHAR | 定长字符串类型,用于存储固定长度的字符序列,不足指定长度时自动用空格填充(最多255个字符) | 'HELLO' |
VARCHAR | 变长字符串类型,用于存储可变长度的字符序列,长度根据实际内容决定(最多65535个字符) | '数据库' |
TEXT | 用于存储大量的文本数据,可以存储超过CHAR和VARCHAR类型的长度限制的文本 | '这是一个长文本' |
BINARY | 定长二进制字符串类型,用于存储二进制数据,长度根据实际内容决定 | 0x01020304 |
VARBINARY | 变长二进制字符串类型,用于存储可变长度的二进制数据,长度根据实际内容决定 | 0x0102030405060708 |
BLOB | 用于存储大量的二进制数据,可以存储超过CHAR和VARCHAR类型的长度限制的二进制数据 | 0x01020304... |
字符串类型用于在数据库中存储字符序列数据。它们包括定长字符串类型、变长字符串类型、二进制字符串类型等。
CHAR类型是定长字符串类型,用于存储固定长度的字符序列。如果实际内容不足指定长度,会自动用空格填充。
VARCHAR类型是变长字符串类型,用于存储可变长度的字符序列。它的长度可以根据实际内容决定,不会自动用空格填充。
TEXT类型用于存储大量的文本数据,可以存储超过CHAR和VARCHAR类型的长度限制的文本。
BINARY类型是定长二进制字符串类型,用于存储二进制数据。它的长度可以根据实际内容决定,不会自动用空格填充。
VARBINARY类型是变长二进制字符串类型,用于存储可变长度的二进制数据。它的长度可以根据实际内容决定,不会自动用空格填充。
BLOB类型用于存储大量的二进制数据,可以存储超过CHAR和VARCHAR类型的长度限制的二进制数据。
SQL语言分类
SQL语言分类 | 作用 |
---|---|
数据查询语言DQL(数据库查询语言) | 用于查询数据库中的数据,包括SELECT、WHERE等子句 |
数据操纵语言DML(数据库操作语言) | 用于对数据库进行插入、更新、删除等操作,包括INSERT、UPDATE、DELETE等语句 |
数据定义语言DDL(数据库定义语言) | 用于定义数据库中的表、视图、索引、同义词、聚簇等对象,包括CREATE TABLE、CREATE VIEW、CREATE INDEX等语句 |
数据控制语言DCL(数据库控制语言) | 用于控制数据库的访问权限、事务发生时间及效果、监视等,包括GRANT、REVOKE等语句 |