SQL数据类型
SQL最基本的数据类型包括三种
•字符串类型
•数值类型
•日期和实践类型
字符串类型
1.定长字符串的标准CHARACTER(n).
2.变长字符串类型的标准 CHARACTER VARYING(n)
•常见的变长字符串类型有:VARCHAR, VARBINARY, VARCHAR2;
3.大数据类型 BLOB TEXT.
数值类型的标准
BIT(n)
BIT VARYING(n)
DECIMAL(p,s)
INTEGER
SMALLINT
BIGINT
FLOAT(n)
DOUBLE PERSION(p,s)
REAL(s)
SQL中通用的一个数据类型是NUMERIC
日期和时间类型
DATE
TIME
DATETIME
TIMESTAMP
DATETIME类型的元素包括
YEAR
MONTH
DAY
HOUR
MINUTE
SECOND
NULL数据类型
布尔数据类型
布尔值的取值范围是:TRUE, FALSE, NULL
自定义数据类型
CREATE TYPE PERSON AS OBJECT ( NAME VARCHAR(30), SSN VARCHAR(9);)CREATE TABLE EMP_PAY( EMPLOYEE PERSON, SALARY DECIMAL(10,2), HIRE_DATE DATE; )
域
CREATE DOMAIN MONEY_D AS NUMBER(8,2); ///创建域ALTER DOMAN MONEY_D ///添加约束ADD CONSTRAINT MONEY_CON1CHECK(VALUE > 5);CREATE TABLE EMP_PAY( EMP_ID NUMBER(9), EMP_NAME VARCHAR(30); PAY_RATE MONEY_D;)
SQL完整性约束
- 主键约束
- NOT NULL约束
- UNIQUE约束
- 外键约束
- 检查约束
- 主键约束
- NOT NULL约束
- UNIQUE约束
- 外键约束
- 检查约束
CREATE TABLE EMPLOYEE_TBL( EMP_ID CHAR(9) NOT NULL PRIMARY KEY, //主键约束 EMP_NAME VARCHAR(40) NOT NULL, EMP_ST_ADDR VARCHAR(20) NOT NULL, EMP_CITY VARCHAR(15) NOT NULL, EMP_ST CHAR(2) NOT NULL, EMP_ZIP INTEGER(5) NOT NULL, EMP_PHONE INTEGER(10) NULL UNIQUE, //唯一性约束 EMP_PAGER INTEGER(10) NULL);CREATE TABLE EMPLOYEE_TBL( EMP_ID CHAR(9) NOT NULL, EMP_NAME VARCHAR(40) NOT NULL, EMP_ST_ADDR VARCHAR(20) NOT NULL, EMP_CITY VARCHAR(15) NOT NULL, EMP_ST CHAR(2) NOT NULL, EMP_ZIP INTEGER(5) NOT NULL, EMP_PHONE INTEGER(10) NULL NUIQUE, EMP_PAGER INTEGER(10) NULL, PRIMARY KEY (EMP_ID) //主键约束);/// ORACLECREATE TABLE PRODUCT_TST( PROD_ID VARCHAR2(10) NOT NULL, VEND_ID VARCHAR2(10) NOT NULL, PRODUCT VARCHAR2(10) NOT NULL, COST NUMBER(8,2) NOT NULL, PRIMARY KEY(PROD_ID, VEND_ID) //主键约束);ALTER TABLE PRODUCT_TSTADD CONSTRAINT PRODUCTS_PK PRIMARY KEY (PRODUCT_ID, VEND_ID);CREATE TABLE EMPLOYEE_PAY_TST( EMP_ID CHAR(9) NOT NULL, POSITION VARCHAR2(15) NOT NULL, DATE_HIRE DATE NULL, PAY_RATE NUMBER(4,2) NOT NULL, DATE_LAST_RAISE DATE NULL, CONSTRAINT EMP_ID_FK FOREIGN KEY(EMP_ID) REFERENCE EMPLOYEE_TBL (EMP_ID) //外键约束);
CHECK约束
CREATE TABLE EMPLOYEE_PAY_TBL( EMP_ID CHAR(9) NOT NULL, POSITION VARCHAR2(15) NOT NULL, DATE_HIRE DATE NULL, PAY_RATE NUMBER(4,2) NOT NULL, DATE_LAST_RAISE DATE NULL, CONSTRAINT EMP_ID_FK FOREIGN KEY (EMP_ID) REFERENCE EMPLOYEE_TBL (EMP_ID), CONSTRAINT CHK_PAY CHECK (PAY_RATE > 12.50));CREATE TABLE EMPLOYEE_TBL( EMP_ID CHAR(9) NOT NULL, EMP_NAME VARCHAR(40) NOT NULL, EMP_ST_ADDR VARCHAR(20) NOT NULL, EMP_CITY VARCHAR(15) NOT NULL, EMP_ST CHAR(2) NOT NULL, EMP_ZIP INTEGER(5) NOT NULL, EMP_PHONE INTEGER(10) NULL NUIQUE, EMP_PAGER INTEGER(10) NULL, PRIMARY KEY (EMP_ID), CONSTRAINT CHK_EMP_ZIP CHECK (EMP_ZIP IN ('46243', '46227', '46745')));
去除约束
ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;