注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mr.Right

不顾一切的去想,于是我们有了梦想。脚踏实地的去做,于是梦想成了现实。

 
 
 

日志

 
 
关于我

人生一年又一年,只要每年都有所积累,有所成长,都有那么一次自己认为满意的花开时刻就好。即使一时不顺,也要敞开胸怀。生命的荣枯并不是简单的重复,一时的得失不是成败的尺度。花开不是荣耀,而是一个美丽的结束,花谢也不是耻辱,而是一个低调的开始。

网易考拉推荐

阿英讲matlab设置修改ACCESS数据库的主键索引  

2016-03-06 11:25:59|  分类: 编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引

唯一索引 

唯一索引是不允许其中任何两行具有相同索引值的索引。

当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在employee表中职员的姓(lname)上创建了唯一索引,则任何两个员工都不能同姓。
主键索引
数据库表经常有一列或列组合,其值唯一标识表中的每一行。该列称为表的主键。
在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。
聚集索引
在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。

如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。


clear; close all;
setdbprefs('DataReturnFormat', 'numeric');
dbpath = ['C:\Users\ddd\MyDatabase.accdb'];
url = [['jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='''';DBQ='] dbpath];
conn = database('','','','sun.jdbc.odbc.JdbcOdbcDriver',url); 
% (1) using cursor.fetch
 % No is the fieldname conflicted with the keyword, using "No" to discriminate
sqlquery = 'SELECT "No" FROM table2';
curs = exec(conn, sqlquery); 
curs = fetch(curs);
numrows = rows(curs); numcols = cols(curs); % get rows and columns from the data cursor
data = curs.Data; % cell2mat(data)
% (2) using database.fetch, better
data2 = fetch(conn, sqlquery);
sqlqueryData = 'SELECT B.Name as bName, B.[No] as bNo, C.Name as cName FROM table2 AS B, table3 AS C WHERE B.[No]=C.[No]';
data3 = fetch(conn, sqlqueryData);
sqlqueryCnt = 'SELECT Count(*) AS cnt FROM (SELECT B.Name as bName, B.[No] as bNo, C.Name as cName FROM table2 AS B, table3 AS C WHERE B.[No]=C.[No])  AS [temp_Alias]';
cnt2 = fetch(conn, sqlqueryCnt);
sqlqueryData2 = 'SELECT * FROM table2 INNER JOIN table3 ON table2.No = table3.No';
data4 = fetch(conn, sqlqueryData2);
% (3) do some transactions
% create a talbe and set the primary key
sqlCreateTable = 'CREATE TABLE Skills (SkillID INTEGER NOT NULL, SkillName CHAR( 20 ) NOT NULL, SkillType CHAR( 20 ) NOT NULL, CONSTRAINT pkName PRIMARY KEY( SkillID ));';
curs = exec(conn, sqlCreateTable); 
sqlDelPrimaryKey = 'ALTER TABLE Skills Drop CONSTRAINT pkName';
curs = exec(conn, sqlDelPrimaryKey); 
sqlSetPrimaryKey = 'ALTER TABLE Skills ADD CONSTRAINT newPK PRIMARY KEY ( SkillID, SkillName )';
curs = exec(conn, sqlSetPrimaryKey); 
close(curs);
close(conn);

-----------------------------------
create table tt1(id integer,bh char,bh1 char, CONSTRAINT rr PRIMARY KEY (id) )
alter table tt1 drop CONSTRAINT rr
alter table tt1 add CONSTRAINT rr primary key(id,bh,bh1)

主键、外键和索引的区别

 

定义:

 主键--唯一标识一条记录,不能有重复的,不允许为空

 外键--表的外键是另一表的主键外键可以有重复的可以是空值

 索引--该字段没有重复值,但可以有一个空值

 

作用:

 主键--用来保证数据完整性

 外键--用来和其他表建立联系用的

 索引--是提高查询排序的速度

 

个数:

 主键--主键只能有一个

 外键--一个表可以有多个外键

 索引--一个表可以有多个唯一索引

  评论这张
 
阅读(142)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016