“建立数据库”包括五个内容:定义数据结构、管理数据库对象、规格化过程、操作数据以及管理数据库事务
1. 什么是数据类型?
数据类型用于指定特定列所包含数据的规则,它决定了数据保存在列里的方式。SQL最基本的数据类型有字符串、数值、日期和时间(其实每个实现都有自己的数据类型集)。
2. 隐式转换/显式转换:
在一些RDBMS实现里,一些数据类型可以根据其格式自动转化为其他数据类型,这种转换被称为隐式转换,表示数据库会自动完成转换。
相对应的(不能由主机RDBMS隐式转换的)被称作显式转换。显式转换需要调用SQL函数,例如CAST或CONVERT:
SELECT CAST('12/27/1994' AS DATETIME) AS MYDATE
3. 定义长字符:
CHARACTER(n)
n为数字,定义字段里能够保存到最多字符数量。
有的SQL使用CHAR来存定长数据。
不足长度的字符使用空格填满。
不要使用定长数据类型保存不定长度的数据(如地址),浪费。
4. 变长字符串:
CHARACTER VARYING(n)
n依然是最大字符数。
常见的变长类型有:CARCHAR(ANSI标准,MS SQL 和 MYSQL使用), CARINARY(Oracle使用), VARCHAR2(Oracle使用)
5. 大对象类型:
用于保存比变长更长的数据,超过了VARCHAR长度,比如现在常见的BLOB和TEXT数据类型。BLOB是二进制大对象,适合存储二进制媒体文件(图像和MP3等);TEXT是加长版VARCHAR,常用来保存HTML输入等。在数据库里保存这种类型的数据可以实现站点的动态更新。
6. 数值型:
NUMBER, INTEGER, REAL, DECIMAL等。
SQL数值标准:
- BIT(n)
- BIT VARYING(n)
- DECIMAL(p, s)(四舍五入)
- INTEGER
- SMALLINT
- BIGINT
- FLOAT(p, s)(有效位数和标度都可变并没有限制的小数数值)
- DOUBLE PRECISION(p, s)(双精度浮点数,有效位数22-53)
- REAL(s)(单精度浮点数,有效位数1-21)
p是字段的最大长度(有效位数);s表示小数点后位数。
SQL的一个通用实现是NUMERIC, 符合ANSI标准,最大限制为99,999.
7. 日期和时间类型:
标准SQL支持DATETIME, 包含DATE, TIME, DATETIME(包含YEAR, MONTH, DAY, HOUR, MINUTE, SECOND), TIMESTAMP
8. 直义字符串:
直义字符串就是一系列字符(例如电话号码),由用户或程序明确指定。列本身的值通常不确定,因为都是具体数值。
9. 自定义类型:
用户可以自定义数据类型(根据已有类型建立新类型):
CREATE TYPE PERSON AS OBJECT
(NAME VARCHAR(30),
SSN VARCHAR(9));
CREATE TABLE EMP_PAY
(EMPLOYEE PERSON,
SALSARY DECIMAL(10,2),
HIRE_DATE DATE;
)
10. 域:
域是能够被使用的有效数据类型的集合。创建域之后可以添加约束,约束与数据类型共同作用。
CREATE DOMAIN MONEY_D AS NUMBER(8,2)
ALTER DOMAIN MONEY_D
ADD CONSTRAINT MONEY_CON1
CHECK (VALUE>5)
CREATE TABLE EMP_PAY
(EMP_ID NUMBER(9),
EMP_NAME VARCHAR2(30),
PAY_RATE MONEY_D;
)