约束指表中的字段要满足某些要求或条件,又或者带有某些意义

1.主键约束:作用是保证一条数据的唯一性。例如,有一张班级姓名表,某一天来了两位同学,恰好两位同学是同名同姓,则需要一个非空且唯一的字段来区别两位同学。主键约束分为两种,主键具有非空约束和唯一约束的性质,语法如下

  1.单主键:语法——create table student (id number(2,0) primary key, name nvarchar2(10)); 其中primary key为设置主键关键字

  2.多主键(联合/复合主键):语法——create table student (id number(2,0), nvarchar2(10), constraint pk_id_name(约束名) primary key(id, name)(指定哪几个字段) ); 

2.外键约束:用来描述表与表的对象关系,带有外键的一方叫做’从表‘,另一方就是’主表‘, 外键可以为空且主表的参照必须为主键,同时外键的值必须在主表字段中存在

  在创建表时指定外键——语法:主表 create table student (id number(3,0) primary key, name nvarchar2(3));

                从表create table card (id number(3,0) primary key, card_number nvarchar2(30,0), student_id number(3,0), constraint fk_student_id foreign                 key(student_id) references student(id));  可以理解为 “创建约束(constraint)——约束名为fk_student_id的student_id外键(fk_student_id                 foreign key(student_id))——参考、参照(references)——student表的id字段(student(id))

  通过alter修改表结构指定外键——语法:主表 create table student (id number(3,0) primary key, name nvarchar2(3));    

                  从表create table card (id number(3,0) primary key, card_number nvarchar2(30,0), student_id number(3,0));

                  alter table card add constraint fk_student_id foreign key(student_id) references student(id);  和上面的结构相似,只不过这里是用alter

                  修改表的的方式 add 添加约束                

3.非空约束:表示此约束字段不能为空,即插入数据时要指定此字段的值(除非此字段有默认值)。语法——在create table 或者alter table 语句中的字段类型后加上‘NOT NULL’。

4.唯一约束:表示带有唯一约束的字段的值在本字段中的所有值只能是唯一的,包括null也只能有一个。

      在创建表时设置唯一约束:语法——create table student (id number(3,0), name nvarchar2(3,0), constraint un_name unique(name));  创建约束(constraint)——

      名字为un_name的唯一约束,设置到name字段上(un_name unique(name))

      通过alter修改表结构设置唯一约束:语法——create table student (id number(3,0), name nvarchar2(3,0));

                      alter table student add constraint un_name unique(name)  结构和上面类似,通过 add 添加约束的方式

3.检查约束:检查约束的目的是为了让字段的值具有实际意义,例如,员工信息表中的薪水字段不可能为负值,否则将不具有意义

      通过创建表时设置检查约束——语法:create table employee (id number(3,0), name nvarchar(3,0), salary number(5,0), constraint ck_salary check(salary > 0));

                    创建约束名为ck_salary检查约束,关键字 check后面跟着检查表达式

      通过aler修改表结构的方式——语法create table employee (id number(3,0), name nvarchar2(3,0), salary number(5,0));

                    alter table employee add constraint ck_salary cheack(salary > 0);  同上

  

转载于:https://www.cnblogs.com/yemingqianduzou/p/9340469.html

(学习笔记)Oracle约束相关推荐

  1. oracle protocol=beq 不可用,学习笔记:Oracle数据库坏块 深入研究obj$坏块导致exp/expdp不能执行原因...

    天萃荷净 深入研究Oracle坏块obj$导致exp/expdp不能执行导出的原因 上篇(案例:Oracle出现obj$坏块exp/expdp导出不能导出的解决办法ORA-01578 ORA-0111 ...

  2. oracle数据库开多线程,学习笔记:Oracle表数据导入 DBA常用单线程插入 多线程插入 sql loader三种表数据导入案例...

    天萃荷净 oracle之数据导入,汇总开发DBA在向表中导入大量数据的案例,如:单线程向数据库中插入数据,多线程向数据表中插入数据,使用sql loader数据表中导入数据案例 1.Oracle数据库 ...

  3. oracle修改asm参数文件,学习笔记:Oracle RAC参数文件管理 修改创建asm中的spfile文件...

    天萃荷净 Oracle rac创建修改asm中的spfile文件内容 create spfile to asm --查看sid SQL> show parameter instance_name ...

  4. oracle 最大值及其_学习笔记:Oracle优化 SQL查询最大值 最小值时的优化方法案例...

    天萃荷净 select max(id),min(id) from table优化,分享开发DBA需求,在SQL语句查询最大值.最小值数据时的优化方式案例 1.查看数据库版本 SQL> selec ...

  5. oracle查看表空间的内容,学习笔记:Oracle查看object对象 表空间 表 索引 数据文件的使用空间...

    天萃荷净 运维DBA咨询想要查看Oracle的object对象的使用空间大小,包括表空间 表 索引 数据文件的使用空间 1.查看Oracle表空间大小 Select Tablespace_Name,S ...

  6. oracle 创建角色 权限设置,[学习笔记] Oracle创建用户、分配权限、设置角色,

    [学习笔记] Oracle创建用户.分配权限.设置角色, 创建用户 create user student --用户名 identified by "123456" --密码 de ...

  7. oracle in查询 一直等待,学习笔记:Oracle awr 分析解决inactive transaction branch等待事件...

    天萃荷净 通过Oracle AWR报告分析inactive transaction branch等待事件的原因 分析一份awr,发现不太熟悉的等待事件"inactive transactio ...

  8. dul恢复oracle数据,学习笔记:Oracle dul数据挖掘 使用DUL数据恢复软件恢复分区表中...

    使用Oracle dul数据恢复工具对Oracle数据库分区表中的数据进行恢复 创建SALES分区表案例 CREATE TABLE SALES ( PRODUCT_ID VARCHAR2(5), SA ...

  9. oracle 11g dul,学习笔记:Oracle dul数据挖掘 导出Oracle11G数据文件坏块中表中

    试验模拟导出Oracle 11G数据库中数据文件坏块中表中的数据 以前一直以为dul对应的版本只能恢复最高的数据库版本一致,今天测试发现dul 10可以恢复11g最新版的数据库. 模拟环境SQL> ...

  10. oracle12c口令文件,学习笔记:Oracle 12C ASM 新特性 共享密码文件

    天萃荷净 测试试验ORACLE 12C ASM 新特性 共享密码文件的详细过程 在ORACLE 12C之前大家都知道密码文件是存放在?/dbs或者?/database中,如果要修改修改sysdba权限 ...

最新文章

  1. 基于人工神经网络的识别C语言,实验一基于人工神经网络的数码识别.doc
  2. 【RK3399Pro学习笔记】十二、ROS参数的使用与编程方法
  3. Save the Room【找规律】
  4. runtime无法执行grep_如何使管道使用Runtime.exec()?
  5. SpringBoot和JPA使用SQLServer2008数据库搭建后台的时候排序报错
  6. find和grep命令合集
  7. SQL Server事务日志备份,截断和缩减操作
  8. 嵌入式ctags跳转和全局打印日志
  9. 汇编语言:将ASCⅡ码表示的十进制数转换为二进制数/十六进制数
  10. 【矩阵论】矩阵的广义逆
  11. python寻找完全平方数_279 完全平方数(bfs)
  12. 湖南大学ACM——10015.self-numbers
  13. 3Dtouch开发内容
  14. day05【JQuery框架】HTML引入Jquery、jQuery与JS区别、基本选择器、层级关系选择器、属性选择器、过滤选择器、 对象遍历、Jquery的DOM操作【重点】、Jquery事件绑定
  15. a1 抛光等级spi_模具抛光分几个等级呢?
  16. mcx314AL使用点滴
  17. Cris 的 Python 数据分析笔记 08:NumPy 和 Pandas 整理脑图
  18. 上课期间禁止使用手机
  19. 人工智能史话(番外篇)
  20. B2B2C多商户商城系统,有什么优缺点呢?

热门文章

  1. python_day29_通过类创建多线程_队列
  2. odoo 的字段。orm对象
  3. SVN版本管理系统的使用(CentOS+Subversion+Apache+Jsvnadmin+TortoiseSVN)
  4. 学习JDK源码(一):String
  5. Linux下部署Kafka分布式集群,安装与测试
  6. 【转】ON_MESSAGE使用方法
  7. java实现创建窗口
  8. ajax中异步属性,ajax中的async属性值之同步和异步及同步和异步区别
  9. mfc连接mysql增删改查_java实现mysql数据库增删改查
  10. php 怎么查看原生方法源码_你的2020搜索账单地址入口 你的2020搜索账单怎么查看查看方法...