约束

  *约束是添加在列上的,用来约束列的。

1. 主键约束(唯一标识)

   ***非空***

   ***唯一***

   ***被引用***(外键时引用主键)

   

  *当表的某一列被指定为主键后,该列就不能为空,不能有重复的出现。

  *创建表时指定主键的两种方式:

  >

  create table stu(

    sid      char(6) primary key,

    sname     varchar(20),

    age          int,

    gender          varchar(10)

);

  指定sid列为主键列,即为sid列添加主键约束。

  >

  create table stu(

    sid      char(6),

    sname    varchar(20),

    age         int,

    gender    varchar(10),

    primary key (sid)

);

  指定sid列为主键列,即为sid列添加主键约束。

  *修改表时指定主键:alter table stu add constraint 主键名 primary key(sid);

  *这里回忆一下学过的修改操作。前缀都是alter table 表名 :

    add --->添加列

    modify 列名 新列类型-->修改列类型

    rename column 旧列名 to 新列名-->修改列名

    drop column 列名--->删除列

    rename to 新表名--->修改表名

  *删除主键:alter table stu drop primary key;删除主键的时候,不用指定列名 ,因为主键的唯一性。

2.主键自增长

  *因为主键的特性是:必须唯一、不能为空。所以我们通常会指定主键类为整数型,然后设置其自增长,这样可以保证在插入数据时主键列的唯一和非空特性。

  oracle并没有mysql那样可以设置自增主键,需要自己创建序列才能实现自增。

  这是从网上看来的一个例子:

/*创建自增序列*/
CREATE SEQUENCE CMB_CHINA_CITYS_ID
MINVALUE 1 --最小值
NOMAXVALUE --不设置最大值
START WITH 1 --从1开始计数
INCREMENT BY 1 --每次加1
NOCYCLE --一直累加,不循环
NOCACHE; --不建缓冲区 说明:CMB_CHINA_CITYS_ID:列名

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  以下是mysql设置主键自增的机制

  *创建表时指定主键自增长:

    create table stu(

      sid     int primary key auto_increment,

      sname   varchar(20),

      age    int,

      gender    varchar(10)

);

  *修改表时设置主键自增长:alter table stu change sid sid int auto_increment;

  *修改表时删除主键自增长:alter table stu change sid sid int;

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

3.非空约束

  *因为某些列不能设置Null值,所以可以对列添加非空约束。

  *例如:

    

create table stu(

      sid     int primary key,

      sname    varchar(20)not null,

      age    int,

      gender    varchar(10)

);对sname设置了非空约束。

4.唯一约束

  *数据库某些列不能设置重复的值,所以可以对列添加唯一约束。

  *例如:

     

create table stu(

      sid     int primary key,

      sname    varchar(20)not null unique,

      age    int,

      gender    varchar(10)

);对sname设置了非空约束。

  https://blog.csdn.net/jssg_tzw/article/details/40981393这篇文章对唯一性约束讲的很清楚。

补充:(Duplicate重复,数据库报错时查的单词,原因是主键的唯一性,不可添加重复的数据。)

【oracle笔记2】约束的更多相关文章

  1. Oracle笔记之约束

    约束用于保证数据库中某些数据的完整性,给某一列添加一个约束可以保证不满足约束的数据是绝对不会被接受的. 约束主要有那么五种类型:非空约束.唯一约束.主键约束.外键约束.校验约束. 使用如下命令检索某个 ...

  2. Oracle笔记 目录索引

    Oracle笔记 一.oracle的安装.sqlplus的使用 Oracle笔记 二.常用dba命令行 Oracle笔记 三.function .select Oracle笔记 四.增删改.事务 Or ...

  3. 韩顺平Oracle笔记

    韩顺平Oracle笔记 分类: DataBase2011-09-07 10:24 3009人阅读 评论(0) 收藏 举报 oracle数据库sqljdbcsystemstring   目录(?)[-] ...

  4. Oracle笔记 多表查询

    Oracle笔记  多表查询   本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查 ...

  5. 转:oracle笔记

    oracle笔记1 卸载oracle developer server的方法: 1-1 oracle卸载工具中卸载对应的oracleds项目:在注册表中搜索ORACLEDS HOME对应的别名,删除对 ...

  6. oracle笔记

    一.sql*plus常用命令 (1)connect 用法:conn 用户名/密码@网络服务名[as sysdba/sysoper] 当特权用户连接时,必须带上as sysdba或是as sysoper ...

  7. oracle 笔记

    1.Oracle认证,与其它数据库比较,安装 Oracle安装会自动的生成sys用户和system用户: (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create databas ...

  8. Oracle笔记(1) 简单查询、限定查询、数据的排序

    Oracle笔记(四) 简单查询.限定查询.数据的排序   一.简单查询 SQL(Structured Query Language) 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及 ...

  9. 改写了禁用或启用oracle数据库的约束的存储过程

    改写了网上某位大侠(最开始的源头是哪位没记住)写的禁用或启用oracle数据库所有约束的存储过程,增加了异常控制,以使发生异常时也可以执行下去. –调用过程: 执行前先 set serveroutpu ...

  10. oracle中,约束、表名、Index等的名称长度限制最大只能30个字符

    oracle中,约束.表名.Index等的名称长度限制最大只能30个字符

随机推荐

  1. 利用setTimeoutc处理javascript ajax请求超时

    用过jquery的人都知道里面的$.ajax能设置超时处理及各种错误的抛出,确实好用.原生的js没有对应的方法,还得写各种兼容.在实际运用中,不管请求是否成功都应该做容错处理, 不然用户不知道到底发生 ...

  2. Python入门-装饰器初始

    今天我们就围绕一个来展开,那就是:装饰器 一.装饰器 在说装饰器之前,我们先说一个软件设计的原则:开闭原则,又被称为开放封闭原则,你的代码对功能的扩展是开放的,你的程序对修改源代码是封闭的,这样的软件 ...

  3. JVM jmap

    需求:经常会因为OOM而导致系统挂掉,很多服务无法连接,所以准备了解一下. 参考:http://www.open-open.com/lib/view/open1390916852007.html 一. ...

  4. Android sqlite日期存储

    SQLite日期类型是以TEXT.REAL和INTEGER类型分别不同的格式表示的,对应如下:TEXT: "YYYY-MM-DD HH:MM:SS.SSS"REAL: 以Julia ...

  5. ajax post data 获取不到数据,注意content-type的设置post/get

    因为之前一直用jQuery ajax get的方式传递参数, 默认没有设置过 contentType 的值. $.ajax({ url: "/yuanjin/jianxiang", ...

  6. Intellij idea 一次性包导入

    Intellij idea中优化包导入用的快捷键是 ctrl + alt + o,但是如果需要一次性优化自动导入包,可以按照如下配置

  7. vsphere的P2V工具做的物理机迁移到虚拟机报错out of memory

     vsphere的P2V工具做的物理机迁移到虚拟机  迁移成功,但是启动报错  进入rescue模式后发现是sysctl.conf文件的参数设大了因为虚拟机的内存没有物理机内存大 kernel.shm ...

  8. 【2017.09.15 智能驾驶/汽车电子】汽车高级驾驶辅助ADAS常用传感器厂商:激光雷达篇

    不定期更新,主要是汇总Internet上的激光雷达厂商资讯,不涉及技术,以备参考. 1. Innoviz:固态激光雷达公司 新闻链接:http://36kr.com/p/5092055.html 激光 ...

  9. January 23 2017 Week 4 Monday

    Knowledge is long, life is short. 吾生也有涯,而知也无涯. I often feel that I have a lot of things to learn, ne ...

  10. 我不 大冰2017新书pdf免费下载

    善意能消戾,善意能得缘,善意能带业往生,善意能回头是岸.善意能够帮人捕捉并建立起独特的幸福感. “我不”是一种善意坦然,也是一种善意的随缘,更是一句善意的自省. <我不>——百万级畅销书作 ...