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;
oracle如何操作约束的更多相关文章
- Oracle 数据完整性与约束机制
为了维护数据库数据的完整性,在创建表时需要定义一些约束,Oracle中的约束类型包括:非空约束.主键约束.唯一约束.外键约束等.在对约束操作前,我们可以通过表名查询它具有的约束信息. 表约束 SELE ...
- Oracle—表、约束、索引、表空间、分区、序列、统计信息
表.约束.索引.表空间.分区.序列.统计信息 一.表及其操作 1.创建表 create table 表名 ( 字段名1 字段类型 默认值 是否为空 , 字段名2 字段类型 默认值 是否为空, 字段名3 ...
- [转]Oracle 树操作(select…start with…connect by…prior)
转自http://www.cnblogs.com/linjiqin/archive/2013/06/24/3152674.html Oracle 树操作(select-start with-conne ...
- Oracle列操作(增加列,修改列,删除列)
Oracle列操作 增加一列: alter table emp4 add test varchar2(10); 修改一列: alter table emp4 modify test varchar2( ...
- 基于OCILIB的oracle数据库操作总结及自动生成Model和Dao的工具
基于OCILIB的oracle数据库操作总结 1. 类图 2. 基类BaseOCIDao的设计与实现 BaseOCIDao.h头文件 #pragma once /* ----- ...
- Oracle集合操作函数:union、intersect、minus
[转]Oracle集合操作函数:union.intersect.minus 集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT, MINU ...
- Oracle 树操作
Oracle 树操作(select…start with…connect by…prior) oracle树查询的最重要的就是select…start with…connect by…prior语法了 ...
- Oracle字符串操作[转:http://www.cnblogs.com/xd502djj/archive/2010/08/11/1797577.html]
ORACLE 字符串操作 1 字符串连接 SQL> select 'abc' || 'def' from dual; 'ABC'|------abcdef 2 小写SQL>select ...
- C# Oracle数据库操作类实例详解
本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracle数据库操作,包含了基础数据库连接.关闭连接.输出记录集.执行Sql语句,返回带分页功能的dataset .取表里字段的类型和长 ...
随机推荐
- 从交叉熵损失到Facal Loss
1交叉熵损失函数的由来1.1关于熵,交叉熵,相对熵(KL散度) 熵:香农信息量的期望.变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大.其计算公式如下: 其是一个期望的计算,也是记录随 ...
- linux 安装MySql 5.7.21 操作步骤
一:到mysql官网下载最新的mysql包 mysql-5.7.21-linux-glibc2.12-x86_64 https://dev.mysql.com/downloads/mysql/ 二:在 ...
- 终于理解kalman滤波
2017拜拜啦,怎么过元旦呢?当然是果断呆实验室过... 应该是大二的时候首次听说kalman,一直到今天早上,我一看到其5条"黄金公式",就会找各种理由放弃,看不懂呀...但是研 ...
- poj 2434;bzoj 1686 [Usaco2005 Open]Waves 波纹
Description Input 第1行:四个用空格隔开的整数Pj Bi,B2,R. P(1≤P≤5)表示石子的个数,Bi(-5×100000≤Bi≤5×100000)和B2(-5×1000 ...
- android studio无法识别含有rcs包名的jar
http://blog.csdn.net/JingleYe/article/details/70048943 android studio无法识别含有rcs包名的jar android stu ...
- solr服务的搭建(以solr4.1实现)
1.准备工作:一个干净的Tomcat,solr-4.10.3. 2.新建一个文件夹我这里命名为solr,将Tomcat和solr-4.10.3放进去.新建一个solrhome的文件夹,里面放的是sol ...
- [学习OpenCV攻略][003[初试牛刀——显示图片]
cvLoadImage(路径) 加载指定路径的图片到内存 cvNamedWindow("窗口名称", 属性) 创建窗口,窗口名称用来被其他函数引用,属性:0表示窗口大小不变,CV_ ...
- win10安装配置jdk的环境变量
换了个硬盘,用上了win10,发现win10安装好jdk之后,配置环境变量这个相对于win7和xp还是有那么一丢丢区别的,趁着夜色,随笔一记. 1.安装jdk之后,或者也可以用之前安装好的文件夹,先记 ...
- javascript中window.location.search的用法和作用。
用该属性获取页面 URL 地址: window.location 对象所包含的属性 属性 描述 hash 从井号 (#) 开始的 URL(锚) host 主机名和当前 URL 的端口号 hostnam ...
- ecshop商城_
一.Ecshop简介: ECShop是Comsenz公司推出的一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店.系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序. ECSho ...