• 创建表和添加表约束


     一、标准的建表语法
       
        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); 
  • 相关阅读:
    List of the best open source software applications
    Owin对Asp.net Web的扩展
    NSwag给api加上说明
    'workspace' in VS Code
    unable to find valid certification path to requested target
    JMeter的下载以及安装使用
    exception disappear when forgot to await an async method
    Filter execute order in asp.net web api
    记录web api的request以及response(即写log)
    asp.net web api的源码
  • 原文地址:https://www.cnblogs.com/SacredOdysseyHD/p/9063274.html
Copyright © 2020-2023  润新知