关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途:
惟一地标识一行。
作为一个可以被外键有效引用的对象。
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键和索引的一些区别与联系。
1 主键一定是唯一性索引,唯一性索引并不一定就是主键。
所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。数据库在设计时,主键起到了很重要的作用。
主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。
2 一个表中可以有多个唯一性索引,但只能有一个主键。
3 主键列不允许空值,而唯一性索引列允许空值。
4 索引可以提高查询的速度。
其实主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中,主键一般都要建,主要是用来避免一张表中有相同的记录,索引一般可以不建,但如果需要对该表进行查询 *** 作,则最好建,这样可以加快检索的速度。
1、忍不住想说一句,因为第一题中的字段类型是 日期型,而各种数据库 *** 作日期型数据有不同的方法,没有一种共通的方法,所以脱离了数据库而言没有一种共通的sql。
2、select ID,NAME,ADDRESS,PHONE,LOGDATE from T
where ID in( select ID from T group by NAME having count()>1)
order by NAME;
3、delete from T where ID not in
(select min(id) from T group by name);
4、update T
set TADDRESS=(select EADDRESS from E where ENAME=TNAME),
TPHONE=(select EPHONE from E where ENAME=TNAME);
5、这个不同的数据库也有不同的处理方法,不能脱离数据库谈了。
如:SqlServer或者access可以使用 top
oracle可以使用 rownum 等
---
以上,希望对你有所帮助。
1
product主键id
顾客表主键acid
商品交易表为联合主键(acid+id),同时acid和id分别是顾客表和商品表的外键
2
select bacname,bacadress
from product a,customer b,order c where aid=cid and bacid=cacid
and aname='李子'
3
select t1acname
from
(select bacname
from product a,customer b,order c where aid=cid and bacid=cacid
and aname='李子') t1,
(select bacname
from product a,customer b,order c where aid=cid and bacid=cacid
and aname='苹果') t2
where t1acname=t2acname
4
select bacname,
sum(case when type='家电' then apricecamount else 0 end) as 家电价格,
sum(case when type='水果' then apricecamount else 0 end) as 水果价格
from product a,customer b,order c where aid=cid and bacid=cacid
group by bacname
以上就是关于面试题 数据库中主键和索引的区别以及使用场景全部的内容,包括:面试题 数据库中主键和索引的区别以及使用场景、sql面试题、oracle数据库面试题,如下,求解!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)