面试题 数据库中主键和索引的区别以及使用场景

面试题 数据库中主键和索引的区别以及使用场景,第1张

关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途:

惟一地标识一行。

作为一个可以被外键有效引用的对象。

索引是一种特殊的文件(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数据库面试题,如下,求解!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10048906.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存