主键约束,唯一性约束,唯一性索引

1)主键列:比如我们在表A中指定ID为主键,Oracle数据库会自动创建一个同名的唯一索引
可以通过 select constraint_name,constraint_type from user_indexes ui where ui.table_name=‘A‘来查看主键上的唯一索引,如果此时我们在给ID列去创建唯一性索引或者非唯一性索引的话,都会报错,当然指定主键之后自动也会生成主键约束,主键就是一种约束
(2)非主键列:我们在非主键列上创建一个唯一性约束,Oracle同样自动创建了一个同名的唯一索引,而且也不允许再在此列上创建唯一索引或非唯一索引,虽然主键约束要求列值非空(NOT NULL),但是创建唯一键约束和唯一性索引的列值却可以为空。
所以一个表可以有多个唯一索引的,针对搂主的 定义了a列唯一约束,b列主键,c列唯一索引,这个时候创建的表相当用
 
Oracle:查找表的主键,外键,唯一性约束,索引 
1、查找表的所有索引(包括索引名,类型,构成列):
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表
2、查找表的主键(包括名称,构成列):
select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = ‘P‘ and au.table_name = 要查询的表
3、查找表的唯一性约束(包括名称,构成列):
select column_name from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = ‘U‘ and au.table_name = 要查询的表
4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):
select * from user_constraints c where c.constraint_type = ‘R‘ and c.table_name = 要查询的表
查询外键约束的列名:
select * from user_cons_columns cl where cl.constraint_name = 外键名称
查询引用表的键的列名:
select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名
5、查询表的所有列及其属性
select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查询的表

主键约束,唯一性约束,唯一性索引,布布扣,bubuko.com

时间: 2024-10-07 02:49:40

主键约束,唯一性约束,唯一性索引的相关文章

【INDEX】Oracle中主键、唯一约束与唯一索引之区别

一.            概述一般在Oracle数据表中,我们都会看到主键,索引,也会看到唯一索引.唯一约束,那么他们有什么区别呢,下面通过一个小实验简单了解一下....http://www.shejiben.com/images/list/1379589/ http://www.shejiben.com/images/list/1379588/ http://www.shejiben.com/images/list/1379587/ http://www.shejiben.com/image

14-SQLite之主键与唯一约束

一.主键 惟一地标识一行(一张表中只能有一个主键) 主键应当是对用户没有意义的(常用于索引) 永远不要更新主键,否则违反对用户没有意义原则 主键不应包含动态变化的数据,如时间戳.创建时间列.修改时间列等 在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录 语法: create table 表名称 (列名称1 数据类型 primary key, 列名称2 数据 类型,列名称3 数据类型, ...); 二.唯一约束 用来保证一个列(或一组列)中数据唯一,类似于主键,但跟主键有区别

数据库数据插入,空值和非空判断,自动排序,约束主键,唯一约束,外健约束

1.查看表结构 2.插入数据 3.空值和非空判断 如上图,添加数据默认为null,如果我们不想要为空,则 如图,username设置为not null,则插入数据的时候如果数据为null则报错,如:age 可以为null ,插入zfyan时age为null,不会报错 4.自动排序 auto_increment 必须有主键 5.主键约束,唯一约束 主键约束是唯一的,唯一约束可以多个 原文地址:https://www.cnblogs.com/zfyan-1992/p/9556600.html

mysql 主键和默认 设为索引的规则

mysql 表中如果是单主键的话,那这个主键也会被 系统默认建为 索引 mysql 表中如果是复合主键的话,那系统会遵循左对齐原则,即如复合主键 a 和 b字段和c字段..., 那只有a是被默认建为索引,b和后边都没有被建为索引,由于a字段是在b字段前,索引遵循左对齐只会把a默认建个索引,查询中如 where a=?   或  where a=?  and  b=?   这2种 查询条件中只要有a就会用到a索引,即a.ab.abc.a... 只要有a就会用到索引,而且是a索引,而 b.bc.bd

主键约束和唯一性约束

主键约束和唯一性约束都是索引,它们的区别是: 主键字段可以确保唯一性,但主键字段不能为NULL. 唯一性约束可以确保唯一性,但唯一性约束的字段可以为NULL 唯一性约束对含有NULL的记录不起作用,即可以重复加入含有NULL的记录,主键字段不能为NULL mysql-workbench无法创建多字段唯一性约束,可以在命令行手工增加增加多字段唯一性性约束mysql>alter table cmd_end_regexp add constraint dev_series_uniq UNIQUE(de

SQL存储原理及聚集索引、非聚集索引、唯一索引、主键约束的关系(补)

索引类型 1.          唯一索引:唯一索引不允许两行具有相同的索引值 2.          主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型.主键索引要求主键中的每个值是唯一的,并且不能为空 3.          聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个 4.          非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序.数据存储在一个位置,索引存储在另一个位置,索引中包含指

主键约束

不多说,直接上干货! (1)主键约束PRIMARY KEY (2)每张数据表只能存在一个主键 (3)主键保证记录的唯一性 (4)主键自动为NOT NULL (1)主键约束PRIMARY KEY 1 create table tb3( 2 id smallint unsigned auto_increment primary key, 3 username varchar(30) not null 4 ); 注意:auto_increment必须和主键一起使用,但是这并不代表主键一定要和auto_

主键及主键索引的关系及相互影响

主键的定义:列或多列的集合,用于唯一的标识表中的一行.一个表上只允许有一个主键. 我们在数据库中指定主键时,是通过主键约束来定义的.而创建主键约束时,又是需要有相应的索引来配合实现的.所以,本文的目的是总结创建主键约束时,采用不同的方法创建索引后,主键与该索引之间的关系及相互影响. 为配合本文的描述和测试,首先创建如下测试表: create table test (id number,c1 varchar2(8)); 一. 首先,我们来看最常用的创建主键约束及索引的方法: alter table

主键与聚集索引的区别

有些人可能对主键和聚集索引有所混淆,其实这两个是不同的概念,下面是一个简单的描述.不想看绕口文字者,直接看两者的对比表.尤其是最后一项的比较. 主键(PRIMARY KEY ) 来自MSDN的描述: 表通常具有包含唯一标识表中每一行的值的一列或一组列.这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性.在创建或修改表时,您可以通过定义 PRIMARY KEY 约束来创建主键. 一个表只能有一个 PRIMARY KEY 约束,并且 PRIMARY KEY 约束中的列不能接受空值.由于