【oracle笔记2】约束
约束
*约束是添加在列上的,用来约束列的。
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】约束的更多相关文章
- Oracle笔记之约束
约束用于保证数据库中某些数据的完整性,给某一列添加一个约束可以保证不满足约束的数据是绝对不会被接受的. 约束主要有那么五种类型:非空约束.唯一约束.主键约束.外键约束.校验约束. 使用如下命令检索某个 ...
- Oracle笔记 目录索引
Oracle笔记 一.oracle的安装.sqlplus的使用 Oracle笔记 二.常用dba命令行 Oracle笔记 三.function .select Oracle笔记 四.增删改.事务 Or ...
- 韩顺平Oracle笔记
韩顺平Oracle笔记 分类: DataBase2011-09-07 10:24 3009人阅读 评论(0) 收藏 举报 oracle数据库sqljdbcsystemstring 目录(?)[-] ...
- Oracle笔记 多表查询
Oracle笔记 多表查询 本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查 ...
- 转:oracle笔记
oracle笔记1 卸载oracle developer server的方法: 1-1 oracle卸载工具中卸载对应的oracleds项目:在注册表中搜索ORACLEDS HOME对应的别名,删除对 ...
- oracle笔记
一.sql*plus常用命令 (1)connect 用法:conn 用户名/密码@网络服务名[as sysdba/sysoper] 当特权用户连接时,必须带上as sysdba或是as sysoper ...
- oracle 笔记
1.Oracle认证,与其它数据库比较,安装 Oracle安装会自动的生成sys用户和system用户: (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create databas ...
- Oracle笔记(1) 简单查询、限定查询、数据的排序
Oracle笔记(四) 简单查询.限定查询.数据的排序 一.简单查询 SQL(Structured Query Language) 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及 ...
- 改写了禁用或启用oracle数据库的约束的存储过程
改写了网上某位大侠(最开始的源头是哪位没记住)写的禁用或启用oracle数据库所有约束的存储过程,增加了异常控制,以使发生异常时也可以执行下去. –调用过程: 执行前先 set serveroutpu ...
- oracle中,约束、表名、Index等的名称长度限制最大只能30个字符
oracle中,约束.表名.Index等的名称长度限制最大只能30个字符
随机推荐
- Csharp:WebClient and WebRequest use http download file
//Csharp:WebClient and WebRequest use http download file //20140318 塗聚文收錄 string filePath = "20 ...
- java中如何使用BigDecimal使得Double类型保留两位有效数字
一.场景:从数据表中读出Decimal类型的数据直接塞给Double类型的对象时,并不会有什么异常. 如果要再此基础上计算,就会发生异常. 比如:读出数据为0.0092,将其乘以100,则变成了0.9 ...
- JavaScript练习笔记整理·1 - 6.23
练习平台Codewars地址:https://www.codewars.com/ 欢迎和大家一起来讨论~╭( ・ㅂ・)و ̑̑ 基础练习(1): 我的解答为: class SmallestIn ...
- HTML5拨号 调用手机拨号功能
<a href="tel:123456789">拨号</a> 这个就是HTML5 运行在手机浏览器上的可以调用手机的拨号tel就是你想要拨打的电话号码
- 在IIS中浏览网站时出现:无法打开登录所请求的数据库 "***",登录失败
在IIS中发布Web应用程序后,浏览网站时出现无法打开登录所请求的数据库 "***",登录失败错误,如下图所示: 解决办法:打开系统Web.Config配置文件,查看数据库连接串是 ...
- WINDOWS API ——CREATETOOLHELP32SNAPSHOT——查找进程
原文:http://www.cnblogs.com/wind-net/archive/2012/10/26/2741458.html //根据进程名获取进程ID DWORD GetPidByProce ...
- android 多渠道打包
android 多渠道打包 原理 在manifest文件中,application标签内部设置不同的metadata标签即可,可以通过java api获取这个matedata内的值 友盟提供的多渠道打 ...
- 通过JavaScript创建Qml对象
有两种方法可以创建,都是全局对象Qt提供的方法 一:用Qt.createComponent加载一个qml文件并创建Component 二:用Qt.createQmlObject从一个qml字符串创建C ...
- 并发包交换数据Exchanger
/** * * @描述: 用于实现两个人之间的数据交换,每个人完成一定的事务后想与对方交换数据,第一个先拿出数据的人一直等待 * 直到第二个人拿到数据 到来时,才能彼此交换数据. * @作者: Wnj ...
- tpcc-mysql安装测试与使用生成对比图
1:下载tpcc-mysql的压缩包,从下面的网站进行下载 https://github.com/Percona-Lab/tpcc-mysql 也可直接从叶总博客直接下载: http://imysql ...