1)主键一定是唯一性索引,唯一性索引并不一定就是主键. 2)主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引. 3)主键常常与外键构成参照完整性约束,防止出现数据不一致. 4)主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引. 5)一个表中可以有多个唯一性索引,但只能有一个主键. 6)主键列不允许空值,而唯一性索引列允许空值. 7)索引可以提高查询的速度. 8)主键一般都要建,主要是用来避免一张表中有相…
视图没有主键,但可以加上唯一索引 大致可以这样理解:视图是张虚拟的表.视图所对应的数据不进行实际的存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表. 其实有无主键对这个视图来说都是无所谓的. 视图的主键是你的基表带过来的,如果主键没有暴漏出来,这张视图就不能维护了简单的说,视图也是张表,如果SQL服务停止了,它也就消失了,而表是永久性真正存在的.…
原文链接 我的归纳: (1)InnoDB的主键采用聚簇索引存储,使用的是B+Tree作为索引结构,但是叶子节点存储的是索引值和数据本身(注意和MyISAM的不同). (2)InnoDB的二级索引不使用聚蔟索引,叶子节点存储的是KEY字段加主键值.因此,通过二级索引查询首先查到是主键值,然后InnoDB再根据查到的主键值通过主键索引找到相应的数据块. (3)MyISAM的主键索引和二级索引叶子节点存放的都是列值与行号的组合,叶子节点中保存的是数据的物理地址 (4)MyISAM引擎使用B+Tree作…
继续昨天的折腾(Oracle修改主键约束),删掉主键约束后,发现唯一索引并未删掉.仔细看了下,主键约束跟唯一索引名称不一样,这说明是先创建了唯一索引,后创建的主键约束.我们来试验下: SQL> create unique index PK_T_INVITEE_RECORD_TEST on T_INVITEE_RECORD_TEST(INVITEEMSISDN, INVITERMSISDN, ACTIVITYID) tablespace TBS_VCODE_IDX; Index created S…
一.mysql 表中如果是单主键的话,那这个主键也会被 系统默认建为 索引 二.mysql 表中如果是复合主键的话,那系统会遵循左对齐原则,即如复合主键 a 和 b字段和c字段..., 默认建的主键索引是abc即主键全有,把所有主键全部建立在一个单独的主键索引中.那只有条件中有a的话这个索引才会命中,条件中如果不带a,只带b或其他的都不会命中索引,即主键索引都不起作用.由于a字段是在b字段前,索引遵循左对齐规则,只会把a默认作为比较对象,条件中只有带a才会命中,查询中如 where a=?  …
买的ip数据库,表上不带id 使用hibernate比较麻烦,所以直接改表 增加一个字段id,类型int ALTER TABLE t_ip ADD id int; 设置id不为空设置为主键,自增 ALTER TABLE `t_ip` CHANGE id id int NOT NULL AUTO_INCREMENT PRIMARY KEY; 运行结果…
ALTER IGNORE TABLE neeqs ADD UNIQUE KEY `unique` (`seccode`, `enddate`, `f002v`);…
MySQL [test]> create table tbl_keyword ( -> id int not null auto_increment primary key, -> keyword varchar(256) not null -> ) -> ; Query OK, 0 rows affected (0.06 sec) MySQL [test]> insert into tbl_keyword(keyword) values ("aa"…
1 语法如下 ALTER TABLE `t_user` ADD unique(`username`);…
MySQL DBMS,MySQL的概念,数据库分类,以前MySQL的部署中的一些概念 #DBMS:数据库管理系统,用于管理数据库的大型软件.mysql就是dbms的一种 #Mysql:是用于管理文件的一个软件 #服务端软件 #socket服务端 #本地文件操作 #解析指令(sql语句) #客户端软件(各种各样) #socket客户端 #发送指令 #解析指令(sql语句) #除了mysql,还有其他类似软件: #语法大体上都是sql语句 #关系型数据库:sqllite,db2,Oracle,acc…
1,主键约束创建索引 作为Primay Key的列是唯一的,非空的,Sql Server在创建主键约束时,自动为主键列创建一个唯一索引,并且索引列不允许为null. create table dbo.test ( id int primary key nonclustered , code int ) create table dbo.test2 ( id int primary key clustered , code int ) 查看Sql Server为主键约束创建的索引 select o…
转载自:http://www.nowamagic.net/librarys/veda/detail/1954 关系数据库依赖于主键,它是数据库物理模式的基石.主键在物理层面上只有两个用途: 惟一地标识一行. 作为一个可以被外键有效引用的对象. 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.下面是主键和索引的一些区别与联系. 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键. 所谓主键就是能够唯一标识表中某一行的属性或属性组…
MySQL主键与索引的区别和联系   关系数据库依赖于主键,它是数据库物理模式的基石.主键在物理层面上只有两个用途: 惟一地标识一行. 作为一个可以被外键有效引用的对象. 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.下面是主键和索引的一些区别与联系. 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键. 所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引.因为主键可以唯一标识某一行…
关系数据库依赖于主键,它是数据库物理模式的基石.主键在物理层面上只有两个用途: 惟一地标识一行. 作为一个可以被外键有效引用的对象. 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.下面是主键和索引的一些区别与联系. 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键. 所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引.因为主键可以唯一标识某一行记录,所以可以确保执行数据更新.删除的…
环境:Oracle 11.2.0.3 需求:生产一张表由于前期设计不当,没有主键.现需要添加主键,数据量很大,想并行建立.   1.直接添加,提示ora-3001:未实施的功能;只能单线程建立主键 SQL> alter table t add constraint pk_t primary key (object_id) using index online parallel 2; alter table t add constraint pk_t primary key (object_id)…
1.对应xml文件<insert id="insert" parameterType="DetectStandard"useGeneratedKeys="true" keyColumn="id" keyProperty="id"> insert into t_detect_standard <trim prefix="(" suffix=")" su…
--SQL批量添加主键脚本 --操作提示:运行此脚本前请记得备份您要操作的数据库 --实现功能:执行脚本后数据库中的所有数据表都会有一个主键 --添加规则1:主键名称为ID(可自己修改),数据类型为整形自增一 --添加规则2:如果数据表已有主键,则不添加 --添加规则3:如果数据表没主键但已存在自增一的标识列,则设置该标识列为主键 --添加规则4:如果数据表没主键且已存在ID列,则会删除掉该列,记得要检查该ID列是否包含重要数据,如果有的话,请执行脚本前改名. --脚本代码开始 ) set @C…
在敲机房收费系统的时候,遇到添加时间的时候总是通过vb端调用当前时间再添到sql server中,期间还有时因为添加时间格式的不统一导致一些小问题,现在才知道原来是自己孤陋寡闻,sql server 早就可以通过时间自动添加. 现在我简单为大家介绍一下这两个小技巧自动添加时间与主机自增长. 1.自动添加时间 a.方法一 create table text ( id int primary key, newDate datetime default(getDate()) ) b.方法二 添加字段将…
转载自:http://blog.csdn.net/sunrise918/article/details/5575054 这几天对逻辑主键.业务主键和复合主键进行了一些思考,也在网上搜索了一下相关的讨论,相关讨论可以看最下面的参考链接.下面是自己基于 SQL Server 做的一些总结,其他数据库(Oracle.MySQL.DB2.......)应该也类似吧.这个只是自己一时的思考,如有不当请告知,重新思考后再修 正. 定义(部分定义来源于 SQL Server 联机丛书): 主键(PRIMARY…
ORACLE: 1.查主键名称: select * from user_constraints where table_name = 'AAA' and constraint_type ='P'; 查主键对应的列: select * from user_cons_columns where table_name = 'AAA' and constraint_name = 'PK_AAA'; (PK_AAA 是主键名) 2.查索引名称: select * from user_indexes whe…
主键 表中每一行都应该有可以唯一标识自己的一列(或一组列). 一个顾客可以使用顾客编号列,而订单可以使用订单ID,雇员可以使用雇员ID 或 雇员社会保险号. 主键(primary key) 一列(或一组列),其值能够唯一区分表中的每个行.唯一标识表中每行的这个列(或这组列)称为主键.没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只设计相关的行. 虽然并不总是都需要主键,但大多数数据库设计人员都应保证他们创建的每个表有一个主键,以便于以后数据操纵和管理 表中的任何列都可以作为主键,只…
http://blog.jobbole.com/71095/ 对于缓存失效,不同的缓存有不同的处理机制,可以说是大同中有小异,作者通过对Redis 文档与相关源码的仔细研读,为大家详细剖析了 Redis 的缓存过期/失效机制相关的技术原理与实现细节. 下面是作者原文: 作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Redis 也不例外.在 Redis 提供的诸多命令中,EXPIRE.EXPIREAT.PEXPIRE.PEXPIREAT 以及 SETEX 和 PSETEX 均…
参考了多篇文章,分别记录,如下. 下面是第一篇的总结 http://www.jb51.net/article/76007.htm: 在MySQL中,InnoDB引擎表是(聚集)索引组织表(clustered index organize table),而MyISAM引擎表则是堆组织表(heap organize table). 聚集索引是一种索引组织形式,索引的键值逻辑顺序决定了表数据行的物理存储顺序: 而非聚集索引则就是普通索引了,仅仅只是对数据列创建相应的索引,不影响整个表的物理存储顺序.…
参考:http://blog.sina.com.cn/s/articlelist_1221155353_0_1.html 作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Reids也不例外.在Redis提供的诸多命令中,EXPIRE.EXPIREAT.PEXPIRE.PEXPIREAT以及SETEX和PSETEX均可以用来设置一条Key-Value对的失效时间,而一条Key-Value对一旦被关联了失效时间就会在到期后自动删除(或者说变得无法访问更为准确).可以说,主键失效这…
[转载]http://blog.csdn.net/cnham/article/details/6676650 唯一约束 唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的一个唯一索引,通过唯一索引来实现约束.不过唯一约束更直观的表达了对应列的唯一性,使得对应索引的目的更加清晰,所以一般建议创建唯一约束而不是只创建唯一索引. 在PD中创建唯一约束的操作,以教室表来说,RoomID是主键,必然是唯一的,RoomName如果我们也要去必须是唯一的,那么具体操作如下: 在P…
目录 添加单一记录时返回主键ID 在映射器中配置获取记录主键值 获取新添加记录主键字段值 添加批量记录时返回主键ID 获取主键ID实现原理 添加记录后获取主键ID,这是一个很常见的需求,特别是在一次前端调用中需要插入多个表的场景. 除了添加单条记录时获取主键值,有时候可能需要获取批量添加记录时各记录的主键值,MyBatis从3.3.1版本开始支持批量添加记录并返回各记录主键字段值. 添加单一记录时返回主键ID 添加一条记录时返回主键值,在xml映射器和接口映射器中都可以实现. 在映射器中配置获取…
最近学习Spring boot JPA 学习过程解决的一些问题写成随笔,大家一起成长.这次遇到自定义主键的问题 package javax.persistence; public enum GenerationType { TABLE, SEQUENCE, IDENTITY, AUTO; private GenerationType() { } } GenerationType源码 从源码中可以看出JPA提供的四种标准主键策略TABLE,SEQUENCE,IDENTITY,AUTO TABLE:…
写在前面 前前后后忙忙碌碌,度过了新工作的三个月.博客许久未新,似乎对忙碌没有一点点防备.总结下来三个月不断的磨砺自己,努力从独乐乐转变到众乐乐,体会到不一样的是,连办公室的新玩意都能引起莫名的兴趣了,作为一只忙碌的 “猿” 倒不知正常与否. 咳咳, 正题, 今天要写一篇关于mysql的主键.索引的文章,mysql的研究博主进行还不够深入,今天讨论的主题主要是,主键对增删改查的具体影响是什么? 博主将用具体的实验说明. 如果你不了解主键,你可以先看看下面的小节,否则你可以直接跳转到实验步骤 了解…
非空(not null).唯一(unique key).主键(primary key).自增长(auto_increment).默认约束(default) 准备基础环境: mysql> create database mydb2;             #创建一个名为 mydb2的数据库Query OK, 1 row affected (0.00 sec) mysql> show databases;                     #查看创建的数据库, mydb2已经创建成功.+-…
目录结构: contents structure [-] 聚集索引和非聚集索引的区别 聚集索引和主键的区别 主键和(非)聚集索引的常规操作 聚集索引.非聚集索引在SqlServer.MySQL.Oracle...等数据库中都有这个概念,只不过在SqlServer中叫做聚集索引和非聚集索引而已.下面笔者将会以SqlServer数据库来讲解. 1.聚集索引和非聚集索引的区别 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物理顺序.非聚集索引:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同.索…