SQL数据类型

   

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(82); ///创建域

ALTER DOMAN MONEY_D     ///添加约束
ADD CONSTRAINT MONEY_CON1
CHECK(VALUE > 5);

CREATE TABLE EMP_PAY
(   EMP_ID      NUMBER(9),
    EMP_NAME    VARCHAR(30);
    PAY_RATE    MONEY_D;
)

SQL完整性约束

  • 主键约束
  • NOT NULL约束
  • UNIQUE约束
  • 外键约束
  • 检查约束
  1. 主键约束
  2. NOT NULL约束
  3. UNIQUE约束
  4. 外键约束
  5. 检查约束
    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)   //主键约束
    );
    
    /// ORACLE
    CREATE 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_TST
    ADD 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;

   

   

      

  

原文地址:https://www.cnblogs.com/zhangzexdu/p/5127627.html