数据类型
分5类:整数、数值、字符相关、日期时间以及二进制
1.整数
数据库系统 | 类型 | 说明 |
---|---|---|
MYSQL | tinyint [unsigned] | 一个很小的整数。有符号的范围是-128 到127,无符号的范围是0 到255。 |
smallint [unsigned] | 一个小整数。有符号的范围是-32768到32767,无符号的范围是0 到65535。 | |
mediumint [unsigned] | 一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215。 | |
int [unsigned] | 一个正常大小整数。有符号的范围是-2147483648 到2147483647,无符号的范围是0到4294967295。 | |
integer [unsigned] | 同int | |
bigint [unsigned] | 一个大整数。有符号的范围是-9223372036854775808 到9223372036854775807,无符号的范围是0 到18446744073709551615。 | |
Oracle | number(10) | Oracle 中没有专门的整数类型,因此需要使用Number(10)来表示整形。 |
DB2 | smallint | 小整型是两个字节的整数,精度为5位。小整型的范围从-32,768 到32,767。 |
integer | 普通整型是四个字节的整数,精度为10 位。大整型的范围从-2,147,483,648 到2,147,483,647。 | |
bigint | 大整型是八个字节的整数,精度为19位。巨整型的范围从-9,223,372,036,854,775,808 到9,223,372,036,854,775,807。 |
2.数值
数据库系统 | 类型 | 说明 |
---|---|---|
MYSQL | float[(m,d)] | 单 精密浮点数字。取值范围是-3.402823466E+38 到-1.175494351E-38 , 0 和1.175494351E-38 到3.402823466E+38。m是显示宽度、而d 是小数的位数。没有参数的float或有<24 的一个参数表示一个单精密浮点数字。 |
double[(m,d)] | 双 精密浮点数字。取值范围是-1.7976931348623157E+308 到-2.2250738585072014E-308、 0和2.2250738585072014E-308 到1.7976931348623157E+308。m是显示宽度、而d是小数位数。没有参数的double 代表一个双精密浮点数字。 | |
real[(m,d)] | 同double | |
decimal[(m[,d])] | 一个未压缩的浮点数字,数字作为一个字符串被存储,值的每一位使用一个字符。小数点,并且对于负数,“-”符号不在M 中计算。如果D 是0,值将没有小数点或小数部分。decimal值的最大范围与double相同,但是对一个给定的decimal 列,实际的范围可以通过m 和d的选择被限制。如果d 被省略,它被默认设置为0。如果m 被省掉,它被默认设置为10。 | |
numeric(m,d) | 同decimal | |
Oracle | number(m,n) | 数值型,m 是所有有效数字的位数,n是小数点以后的位数。如:number(5,2),则这个字段的最大值是99,999,如果数值超出了位数限制就会被截取多余的 位数。如:number(5,2),但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32。 如:number(3,0),输入575.316,真正保存的数据是575。 |
DB2 | decimal(p,s) | 小数型的值,它是一种压缩十进制数,它有一个隐含的小数点。压缩十进制数将以BCD 码来存储。小数点的位置取决于数字的精度(p)和小数位(s)。小数型的范围从-1031+1 到1031-1。 |
numeric(p,s) | numeric (p,s)是decimal(p,s)的同义词。 | |
real | 单精度浮点数,它是实数的32位近似值。数字可以为零,或者在从-3.402E+38 到-1.175E-37或从1.175E-37 到3.402E+38的范围内。 | |
double | 双精度浮点数是实数的64 位近似值。数字可以为零,或者在从-1.79769E+308 到-2.225E-307或从2.225E-307 到1.79769E+308 的范围内。 |
3.字符相关
数据库系统 | 类型 | 说明 |
---|---|---|
MYSQL |
char(m) | 固定长度字符串,长度为m |
varchar(m) | 可变长度字符串,最大长度为m | |
tinytext | 小的可变长度字符串,最大长度2^8- 1 字节 | |
text | 可变长度大字符串,最大长度216 – 1 字节 | |
mediumtext | 中等可变长度字符串,最大长度224- 1 字节 | |
longtext | 大文本可变长度字符串,最大长度232- 1 字节 | |
enum(“value1”, “value2”, …) | 枚举字符串,列可被赋予某个枚举成员 | |
set (“value1”, “value2”, …) | 集合字符串;列可被赋予多个集合成员 | |
ORACLE |
char(m) | 固定长度字符串,长度为m |
varchar2(m) | 可变长度字符串,最大长度为m | |
nvarchar2(m) | 可变长度国际化字符串,最大长度为4GB | |
clob | 可变长度大字符串,最大长度216 – 1 字节 | |
nclob | 可变长度国际化大字符串,最大长度为4GB | |
DB2 |
CHARACTER(m) | 固定长度字符串,长度为m |
VARCHAR(m) | 可变长度字符串,最大长度为m | |
LONG VARCHAR | 可变长度字符串,最长可达32,700 字节 | |
CLOB | 变长大字符串,最长可以达到2,147,483,647 字节 | |
GRAPHIC[(m)] | 固定长度图形字符串,长度为m,如果没有指定长度,就认为是1 个双字节字符 | |
VARGRAPHIC(m) | 可变长度图形字符串,最大长度为m | |
LONG VARGRAPHIC | 可变长度图形字符串 |
4.时间日期类型
数据库系统 | 类型 | 说明 |
---|---|---|
MYSQL |
date | “yyyy-mm-dd”格式表示的日期值。取值范围:“1000-01-01”到“9999-12-31” |
time | “hh:mm:ss”格式表示的时间值。取值范围:“-838:59:59”到“838:59:59” | |
datetime | “yyyy-mm-dd hh:mm:ss”格式表示的日期时间值。取值范围:“1000-01-01 00:00:00” 到“9999-12-31 23:59:59” | |
timestamp | “yyyymmddhhmmss”格式表示的时间戳值。取值范围:19700101000000 到2037 年的某个时刻 | |
year | “yyyy”格式的年份值。取值范围:1901 到2155 | |
ORACLE |
date | 日期时间数据 |
timestamp | 时间戳 | |
DB2 |
DATE | 日期值。取值范围:“0001-01-01 00:00:00” 到“9999-12-31 23:59:59” |
TIME | 时间值。 | |
TIMESTAMP | 时间戳 |
5. 二进制类型
数据库系统 | 类型 | 说明 |
MYSQL | blob | |
Oracle | blob | |
DB2 | blob |
通过SQL语句管理数据表
1.创建数据表
CREATE TABLE 表名
(
字段名1 字段类型 约束1,
字段名2 字段类型 约束1,
字段名3 字段类型 约束1,
………………
)
例如:
CREATE TABLE T_Student
(
FNumber VARCHAR(20) NOT NULL ,
FName VARCHAR(20)NOT NULL ,
FAge INT NOT NULL ,
FFavorite VARCHAR(20),
FPhoneNumber VARCHAR(20)
)
2.定义默认值
CREATE TABLE T_Teacher
(
FNumber VARCHAR(20),
FName VARCHAR(20),
FAge INT,
FISMaster VARCHAR(5) DEFAULT ‘NO’
)
3.定义主键
CREATE TABLE T_Bus
(
FNumber VARCHAR(20),
FDriverName VARCHAR(20),
FUsedYears INT,
PRIMARY KEY (FNumber)
)
4.定义外键
表1
CREATE TABLE T_Department
(
FId VARCHAR(20),
FName VARCHAR(20),
FLevel INT,
PRIMARY KEY (FId)
)
表2
CREATE TABLE T_Employee
(
FNumber VARCHAR(20),FName VARCHAR(20),
FDepartmentId VARCHAR(20),
FOREIGN KEY (FDepartmentId) REFERENCES T_Department(FId)
)
5.修改已有数据表
添加字段
ALTER TABLE T_PERSON ADD FFavorite VARCHAR(20)
修改字段
ALTER TABLE T_Person change FAge newFAge varchar(30)
删除字段
ALTER TABLE T_Person DROP FAge
6.删除数据表
DROP TABLE T_Person