zoukankan      html  css  js  c++  java
  • 创建表和添加表约束

     一、标准的建表语法
       
        CREATE TABLE 表名
        (列名 数据类型 [默认 表达式],...
        );
      
        
    说明:
        1.在创建新表时,指定的表名必须不存在,否则会出错
        2.使用值: 当插入行时如果不给出值,dbms将自动采用默认值   dbms:数据库管理系统 null 0 0.0
        3.在使用create语句创建基本表时,最初只是一个空的框架,用户可以使用insert命令把数据库插入表中
        
        
        数据库表字段的数据类型
         字符数据类型 
              CHAR:存储固定长度的字符串     
              VARCHAR2 :存储可变长度的字符串   
              
        数值数据类型
           NUMBER:存储整数和浮点数,格式为NUMBER(p, s)
              列名  NUMBER             
              列名  NUMBER (p)              {整数}   number (10)   zhengshu 
              列名  NUMBER (p, s)            {浮点数}    number (5,3)   11.111
              
              
              
        日期时间数据类型
            DATE:存储日期和时间数据 
            TIMESTAMP:比DATE更精确  
            
        LOB数据类型
            BLOB:存储二进制对象,如图像、音频和视频文件
            CLOB:存储字符格式的大型对象 
    
    
      
      --创建表
      CREATE TABLE STUDENT(
            SNO NUMBER(6),  
            SNAME VARCHAR2(20),
            SEX VARCHAR2 (2),
            AGE NUMBER(3),
            ENTERDATE DATE,
            CLAZZ VARCHAR2 (10)
      );
      
       --EMAIL VARCHAR2(20)
      SELECT * FROM STUDENT;
      
      --插入数据
      INSERT INTO STUDENT VALUES(1001,'羽毛','',-10,sysdate,'01级02班');
        INSERT INTO STUDENT(sno,sex,age) VALUES(1001,'',-100);
      
      --像已有表中添加一个列()
      ALTER TABLE STUDENT ADD ADDRESS VARCHAR2 (20);
      
      --以下代码要求表中没有数据,因为如果表中存在数据,那么已存在的数据列email讲使用null填充
      ALTER TABLE STUDENT ADD EMAIL VARCHAR2(20) NOT NULL;
      
      --插入数据sno,sname,email
      INSERT INTO student(sno,sname) VALUES (110,'缺一个'); 
      
      --将已有表中的列删除  column--列  table -表
      ALTER TABLE STUDENT
      DROP COLUMN EMAIL;
      
      --将已有表中的列进行修改,默认只对新添加的数据起作用   modify
      ALTER TABLE STUDENT 
      MODIFY (SEX VARCHAR2(4) DEFAULT '');
      
      --对已有表中的列名重命名
      ALTER TABLE STUDENT
      RENAME COLUMN SNAME TO STU_NAME;
      
      --给表重命名
      RENAME STUDENT TO STU ;
      
      SELECT * FROM STU;
      
    DROP TABLE STUDENT;
    DROP TABLE STU;
    
    --小结:
         --insert--> 向已有表中插入数据  -->操作数据
         --add  -->向表中添加列  -->操作的表结构
         
         --update -->对已有表中的数据进行修改
         --modify -->修改表中的列
         
         --delete -->删除表中的数据
         --drop -->删除表

      二、表约束

      数据完整性约束

        1.表的数据有一定的取值范围和联系,多表之间的数据有时也有一定的参照关系。
        2.在创建表和修改表时,可通过定义约束条件来保证数据的完整性和一致性。
        3.约束条件是一些规则,在对数据进行插入、删除和修改时要对这些规则进行验证,从而起到约束作用。

      完整性约束分类
        域完整性约束(非空not null,检查check)字段约束
        实体完整性约束(唯一unique,主键primary key) 行和行之间的约束
        参照(引用)完整性约束(外键foreign key) 表和表之间的约束

      主键约束 (primary key) PK_表名_字段名
        要求主键类数据唯一,并且不允许为空,主键可以包含表的一列或多列,多列组成的主键称之为-复合主键
      唯一约束(unique) UK_表名_字段名
        要求该列值唯一,允许为空,而且null可以是多个
      检查约束 (check) CK_表名_字段名
        某列取值范围显示,格式限制等,如年龄拘束,邮件限制 email like '%@%' --length (pwd) =6
      非空约束(not null) NN_表名_字段名
        某列内容(值)不为空
      外键约束(foreign key) FK_表名_字段名
        用于两个表之间建立关系,需要制定引用主表的那列,外键同创是用来约束两个表之间的数据关系
        定义外键的那张表称之为子表,另一张表称之为主表,在表的创建过程中,应该先创建主表,后创建子表

    --主键,唯一,非空,检查
    CREATE TABLE STUDENT(
           STUNO NUMBER(4) CONSTRAINT PK_STU_STUNO PRIMARY KEY ,
           SNAME VARCHAR2(10) CONSTRAINT NN_STU_SNAME NOT NULL,
           SEX VARCHAR2(3) DEFAULT '',
           AGE NUMBER(3) CONSTRAINT CK_STU_AGE CHECK (AGE BETWEEN 18 AND 30),
           EMAIL VARCHAR2(20) CONSTRAINT CK_STU_EMAIL CHECK (EMAIL LIKE '%@%'),
           PSWD VARCHAR2(10) CONSTRAINT CK_STU_PSWD CHECK (LENGTH(PSWD)>=6),
           CLAZZ NUMBER(2)
    );
    
    SELECT * FROM STUDENT;
    
    DROP TABLE STUDENT;
    
    --查看约束
    SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'STUDENT'; 
    
    --性别没有限定值
    ALTER TABLE STUDENT
    ADD CONSTRAINT CK_STU_SEX CHECK (SEX = '' OR SEX = '');
    
    --邮箱没有唯一约束
    ALTER TABLE STUDENT
    ADD CONSTRAINT UN_STU_EMAIL UNIQUE (EMAIL);
    
    --测试数据
    INSERT INTO STUDENT
    VALUES (1002,'BACK',DEFAULT,30,'abcd@','1111111',1);
    
    --写约束的时候,写上约束名,一旦执行插入数据时,能很快的定位
    
    
    --添加班级的外键
    ALTER TABLE STUDENT
    ADD CONSTRAINT FK_STUDENT_CLASSID
    FOREIGN KEY (CLAZZ) REFERENCES GRADE (GREADEID); 
  • 相关阅读:
    Unit of Work
    Layered Supertype
    Domain Model
    ASP.Net设计模式读书笔记
    VS2010无法使用nuget安装第三方包的问题
    数据库对象命名
    sql50题
    RESTFul API
    EasyUI日历控件
    ASP.NET MVC 防止前端点击劫持
  • 原文地址:https://www.cnblogs.com/SacredOdysseyHD/p/9063274.html
Copyright © 2011-2022 走看看