数据库- 数据类型

38 阅读3分钟

SQL语言特点

  1. 一体化
  2. 高度自动化
  3. 简洁
  4. 能以多种方式使用

SQL语言动词

SQL功能动词
数据查询select
数据定义create, drop, alter
数据操作insert,update, delete
数据控制grant, revoke

SQL的三级模式

图片.png

SQL的数据类型

整数类型

类型占用的存储空间(单位:字节)无符号数取值范围有符号数取值范围含义
TINYINT10 ~ 2⁸-1-2⁷ ~ 2⁷-1非常小的整数
SMALLINT20 ~ 2¹⁶-1-2¹⁵ ~ 2¹⁵-1小的整数
MEDIUMINT30 ~ 2²⁴-1-2²³ ~ 2²³-1中等大小的整数
INT(别名:INTEGER40 ~ 2³²-1-2³¹ ~ 2³¹-1标准的整数
BIGINT80 ~ 2⁶⁴-1-2⁶³ ~ 2⁶³-1大整数

浮点数类型

类型占用的存储空间(单位:字节)绝对值最小非0值绝对值最大非0值含义
FLOAT4±1.175494351E-38±3.402823466E+38单精度浮点数
DOUBLE8±2.2250738585072014E-308±1.7976931348623157E+308双精度浮点数

以单精度浮点数类型FLOAT类型为例,它占用的4个字节的各个组成部分如下图所示:

图片.png

设置最大位数和小数位数

在定义浮点数类型时,还可以在FLOAT或者DOUBLE后边跟上两个参数,就像这样:

FLOAT(M, D)
DOUBLE(M, D)

对于我们用户而言,使用的都是十进制小数。如果我们事先知道表中的某个列要存储的小数在一定范围内,我们可以使用FLOAT(M, D)或者DOUBLE(M, D)来限制可以存储到本列中的小数范围。其中:

  • M表示该小数最多需要的十进制有效数字个数。

    注意是有效数字个数,比方说对于小数-2.3来说有效数字个数就是2,对于小数0.9来说有效数字个数就是1

  • D表示该小数的小数点后的十进制数字个数。

    这个好理解,小数点后有几个十进制数字,D的值就是什么。

小数 定点数

正因为用浮点数表示小数可能会有不精确的情况,在一些情况下我们必须保证小数是精确的,所以设计定点数的数据类型,它也是存储小数的一种方式:

  • numeric(p,q) 或 decimal(p,q)

字符串型

在MySQL中,字符串类型有多种,以下是常见的字符串类型以及它们的表格表示:

字符串类型描述
CHAR(n)固定长度字符串,最多存储n个字符(n<=8000)
VARCHAR(n)可变长度字符串,最多存储n个字符(n<=8000)
TEXT长文本字符串,最多存储65,535个字符
TINYTEXT短文本字符串,最多存储255个字符
MEDIUMTEXT中等长度文本字符串,最多存储16MB
LONGTEXT长文本字符串,最多存储4GB
ENUM(value1,value2,...)枚举类型,只能存储给定的值
SET(value1,value2,...)集合类型,可以存储多个给定的值

需要注意的是,除了ENUM和SET类型外,其他字符串类型都需要指定长度。此外,不同的字符串类型在存储和检索上也会有不同的性能表现,需要根据实际情况进行选择。


sql server中的字符串类型

字符串类型描述
NCHAR(n)固定长度字符串,最多存储n个字符(n<=4000)
NVARCHAR(n)可变长度字符串,最多存储n个字符(n<=4000)
NTEXT长文本字符串,最多存储65,535个字符,每个字符占二个字节

二进制字符串类型:

字符串类型描述
Binary(n)固定长度字符串,最多存储n个字节(n<=8000)
Varbinary(n)可变长度字符串,最多存储n个字节(n<=8000)
Image大容量、可变长二进制字符数据,可用于存储文件

时间和日期类型

类型存储空间要求取值范围含义
YEAR1字节1901~2155年份值
DATE3字节'1000-01-01' ~ '9999-12-31'日期值
TIME3字节'-838:59:59' ~ '838:59:59'时间值
DATETIME8字节'1000-01-01 00:00:00' ~ '9999-12-31 23:59:59'日期加时间值
TIMESTAMP4字节'1970-01-01 00:00:01' ~ '2038-01-19 03:14:07'时间戳

SQL数据定义

SQL 的数据定义功能主要包括对 SQL 模式、基本表、视图、索引的定义和删除以及对基本表的修改和对域的定义等,如表 6.3 所示。

图片.png