zoukankan      html  css  js  c++  java
  • oracle如何操作约束

    自我总结,欢迎怕转!

    约束的作用不多说了,直接看怎么用吧。

    非空约束:
      在创建表时设置非空约束:
        CREATE TABLE table_name( column_name datatype NOT NULL)
      在修改表时添加非空约束:
        ALTER TABLE table_name MODIFY column_name datatype NOT NULL
      在修改表时去除非空约束:
        ALTER TABLE table_name MODIFY column_name dataypte NULL

    主键约束:

      作用:确保表种每一行数据的唯一性
      在创建表时设置主键约束:
        1) CREATE TABLE table_name(column_name dataype PRIMARY KEY)
        2) CONSTRAINT constraint_name PRIMARY KEY(column_name1,..)
        查看约束 SELECT constraint_name FROM USER_CONSTRAINTS WHERE table_name = 'student'
      在修改表时添加主键约束:
        ALTER TABLE student ADD CONSTRAINT constraint_name PRIMARY KEY(column_name1,...)
      更改约束名称 :
        ALTER TABLE student RENAME CONSTRAINT old_name to new_name
      删除主键约束:
        暂时不用:ALTER TABLE student DISABLE|ENABLE CONSTRAINT constraint_name

        直接删除:1)ALTER TABLE student DROP CONSTRAINT constraint_name

             2) ALTER TABLE student DROP PRIMARY KEY [CASCADE]
        查看约束状态: SELECT CONSTRAINT_NAME,STATUS FROM USER_CONSTRAINTS WHERE table_name = 'student'

    外键约束:
      在创建表时设置外键约束:
        1) CREATE TABLE table1 (column_name datatype REFERENCES table2(column_name))
        条件: 主表table2中的字段必须是主键
            主从表table1中的字段类型必须也主表table2中的字段类型一致
            主从表table1中字段的值必须全部来自主表table2中相应的字段,或NULL值
        2) CONSTRAINT constraint_name FOREIGN KEY(column_name ) REFERENCES table_name(column_name1) [ ON DELETE CASCADE] //级联删除 主表数据中的数据被删除时,从表中引用的字段的行数据也删除
      在修改表时设置外键约束:
        ALTER TALBLE student ADD CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES table2(column_name) [ ON DELETE CASCADE ]
      删除外键约束:
        暂时不用:ALTER TABLE student DISABLE | ENABLE CONSTRAINT constraint_name
        直接删除:ALTER TABLE student DROP CONSTRAINT constrain_name

    唯一约束:
      主键约束与唯一性约束的区别:
        主键字段值必须为非空,唯一性约束允许有一个空值
        主键约束在每张表中只能有一个,唯一性约束在每张表中可以有多个
      在创建表时设置唯一性约束:
        1) CREATE TABLE table_name (column_name datatype UNIQUE,...)
        2) CONSTRAINT constraint_name UNIQUE(column_name) //该语句只能设置一个字段,要想设置其他字段必须新创建唯一性约束
      在修改表时设施唯一性约束:
        ALTER TABLE student CONSTRAINT constraint_name UNIQUE(column_name)
      删除唯一性约束:
        暂时禁用: ALTER TABLE student DISABLE |ENABLE CONSTRAINT constraint_name
        直接删除: ALTER TABLE student DORP CONSTRAINT constraint_name

    检查约束:

      作用:让表中的值更有实际意义
      在创建表时设置检查约束:
        1) CREATE TALBE table_name (column_name datatype CHECK(money > 0))
        2) CONSTRAINT constraint_name CHECK(money > 0)
      在修改表时设置检查约束:
        ALTER TABLE student ADD CONSTRAINT constraint_name CHECK(money > 0)
      删除检查约束:
        暂时禁用: ALTER TABLE student DISABLE | ENABLE CONSTRAINT constrain_name
        直接删除: ALTER TABLE student DROP CONSTRIAN constraint_name

    其他知识点:

      数据类型:
        字符型:
          CHAR(n):固定长度 , MAX :2000
          NCHAR(n):固定长度,按照Unicode格式存放数据的,用于存放汉字,MAX:1000
          VARCHAR2(n):可变长度, MAX : 4000
          NVARCHAR2(n): 可变长度,按照Unicode格式存放数据的 MAX: 2000
        数值型:
          NUMBER(p,s):p->有效数字 ; s > 0 小数后的位数 s < 0 最大有效数字到小数点的位数
          FLOAT(n) :用来存放二进制数据的,能够表示二进制的1~126位 ,若要若要转换成十进制 则需要乘以 0.30103
        日期型:
          DATA: 精确到秒(常用)
          TIMESTAMP:精确到小数秒
        其他类型:
          BLOB: MAX : 4G 以二进制格式存放
          CLOB: MAX : 4G 以字符串格式存放

      给表改名:

        rename old_name to new_name

      清空表:

        TRUNCATE TABLE table_name

      日期字段:

        regdate date default sysdate

      修改表字段:
        ALTER TABLE table_name modify email default '无';


      复制表数据:
        创建表时复制:

          CREATE TABLE table_new AS SELECT column1,...|* FROM table_old
          eg. CREATE TABLE TEST007 AS SELECT * FROM STUDENT;
        在添加数据是复制:

          INSET INTO table_new [(column1,...)] SELECT column1,...|* FROM table_old;
          eg. INSERT INTO STUDENT (ID,NAME) SELECT ID,NAME FROM TEST007;
            INSERT INTO STUDENT SELECT * FROM TEST007;

  • 相关阅读:
    list去重
    安装go与nebula-importer遇见的问题
    2.安装docker后运行其他镜像
    2.绝对路径Linux和Windows上的写法
    1.SpringBoot 读取配置文件的值 赋给静态变量
    04747JAVA语言程序设计练习题(第一章)
    Revit文件加载到arcgis pro中调整位置并生成slpk包
    新部署arcgis javascript api 服务器添加的两个mime
    转发博客园中的文章
    【转】使用ArcGIS Pro编辑在线三维服务图层
  • 原文地址:https://www.cnblogs.com/xxyfhjl/p/6415625.html
Copyright © 2011-2022 走看看