SQL及Oracle和MySQL的数据类型详解
SQL及Oracle和MySQL的数据类型详解
SQL(Structured Query Language) 又称结构化查询语言,是一种在关系型数据库中定义和查询及操纵数据的标准语言,是用户和数据库之间进行交流的接口,正在像Oracle、MySQL、SQL Server等几乎所有的数据库实现了该接口,都支持SQL的查询。SQL语言结构简洁,功能强大,简单易学,所以自从推出以来,SQL语言得到了广泛的应用。
SQL 语言由下面5个子语言组成:
数据定义语言(DDL-Data Definition Language);
数据查询语言(SELETE-Query Statements);
数据操纵语言(DML-Datat Manipulation Language);
事务控制语言(TC-Transaction Control Statements);
数据控制语言(DCL-Datat Control Language);
数据类型
Oracle和MySQL都是两种重要的数据为,下面从它们各自的基本数据类型开始讲起。
数据类型
数据类型
说明
Oracle
MySQL
数值类型
NUMBER(p,s)
存储数值数据类型,如浮点型、整数型、分数、双精度等。其中p为精度,表示数字的总位数(1 <= p <=38) ; s为范围,表示小数点右边的位数,它在-84至127之间。默认38位
TINYINT
微整型,1字节
SMALLINT
小整型,2字节
MEDIUMINT
中整型,3字节
INT或INTEGER
整数数据类型
整型,4字节
BIGINT
大整型,8字节
FLOAT
浮点数数据类型
单精度浮点数值,4字节
DOUBLE
双精度浮点数值,8字节
DECIMAL
对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2
字符串类型
CHAR(n)
n=1to2000字节,定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)
定长字符串,0-255字节
NCHAR(n)
NLS(national language support , 国际语言支持)的数据类型仅可以存储由数据库 NLS 字符集定义的 Unicode 字符集。Oracle最多可以存储2000Byte
VARCHAR(n)
最多可以以可变长度来存储4000B,因此不需要空格来作补充。
变长字符串,0-255字节
NVARCHAR(n)
n=1to4000字节,最多可以以可变长度来存储4000B,因此不需要空格来作补充。
NLS(national language support , 国际语言支持)的数据类型仅可以存储由数据库 NLS 字符集定义的 Unicode 字符集。
VARCHAR2(n)
VARCHAR2 比 VARCHAR 更适合使用,由于兼容性的原因,所以仍然在 Oracle 数据库中保留着 VARCHAR 。
NVARCHAR2
NLS 的数据类型与 VARCHAR2 数据类型等价。这个数据类型最多可存储4000B 。
CLOB
存储大量的单字节字符数据和多字节字符数据。存储的最大容量为4G
NCLOB
存储可变长度的Unicode字符集字符数据,存储的最大容量为4G
BLOB
存储较大的二进制对象。例:图形,视频,音频等
BFILE
bfile:文件定位器;指向位于服务器文件系统是二进制文件(存储一个文件路径)
LONG
存储可变长度的字符数据,最多存储2GB 。
RAW
存储基于字节的数据。最多存储2000个字节,使用需指定大小。raw数据类型可以建立索引。
LONG RAW
存储可变长度的二进制数据。最多能存储2GB。不能索引。
TINYBLOB
不超过 255 个字符的二进制字符串,0-255字节
TINYTEXT
短文本字符串,0-255字节
BLOB
二进制形式的长文本数据,0-65 535字节
TEXT
长文本数据,0-65 535字节
MEDIUMBLOB
二进制形式的中等长度文本数据
MEDIUMTEXT
中等长度文本数据,0-16 777 215字节
LOGNGBLOB
二进制形式的极大文本数据,0-4 294 967 295字节
LONGTEXT
极大文本数据,0-4 294 967 295字节
日期和时间
DATE
存储表的日期和时间数据,使用7个字节固定长度,每个字节分别存储世纪,年,月,日,小时,分和秒;值从公元前4712年1月1日到公元9999年12月31日。 Oracle中的sysdate函数功能是返回当前的日期和时间。
日期值,YYYY-MM-DD
TIMESTAMP
存储日期的年,月,日以及时间的小时,分和秒值。其中秒值精确到小数点后6位,同时包含时区信息。 Oracle中的systimestamp函数功能是返回当前日期,时间和时区。
TIME
时间值或持续时间,HH:MM:SS
YEAR
年份值,YYYY
DATETIME
混合日期和时间,YYYY-MM-DD HH:MM:SS
TIMESTAMP
混合日期和时间值,时间戳,YYYYMMDD HHMMSS
复合类型
ENUM
一个 ENUM 类型最多可以包含 65536 个元素,其中一个元素被 MySQL 保留,用来存储错误信息,这个错误值用索引 0 或者一个空字符串表示。
SET
容器类型,一个 SET 类型最多可以包含 64 项元素,且不可能包含两个相同的元素