计算机基础第三四讲_数据库和表(主键与索引)
- 格式:ppt
- 大小:695.50 KB
- 文档页数:53
第四讲主键与索引主键:主键是唯一标识表中每一条记录的一个字段或多个字段的组合。
通常每个表都应该有一个主键。
只有定义了主键,表与表之间才能建立起联系,从而能够利用查询、窗体和报表查找和组合不同信息,这也是数据库的主要作用之一。
索引:也是字段属性之一,可对表中的值提高查询和排序的速度及保证记录的正确性唯一性;按索引类型可分为主索引、唯一索引、普通索引三种。
主索引:建立主索引的字段,值必须是唯一的,不能重复,且一有只能有一个主索引唯一索引:建立唯一索引的字段,值必须是唯一的,不能重复,但一个表中可以有多个普通索引:一、主键建立方法:(1)打开表设计器——单击字段选定器——右击\设计选项卡——主键二、索引属性值设置:无:该字段不建立索引有(有重复):给该字段建立索引,并且字段中的值可以重复对应普通索引。
有(无重复):给该字段建立索引,并且字段中的值不能重复.这种字段适合做主索引或唯一索引;主索引:用于起到表中主要的关键字,一个表中只能建立一个,且值唯一;主索引分为两种:单项主索引:给某一个字段创建组合主索引:给多个字段创建注:其实也可以理解为主键就是主索引。
三、表之间的关系Access数据库中表之间相互独立,也相互联系,如学生表中学号和成绩表中学号就存在着联系.如果一对关系中,一端的值是唯一的不能重复,则为主键(父表);而另一端可以重复,则为相关表(子表); 一对多多对多一对一A:建立关系:1、打开数据库——数据库工具——关系2、添加建立关系的表,按主对普通索引的关系连接。
B:参照完整性:参照完整性是在输入或删除记录时,对其中一张表操作(更新、删除),另一张表相应变化,将有助于数据的完整性.C:编辑参照完整性:打开之前建立的关系——选中关系线——右击\工具按钮——编辑关系——在弹出的编辑关系中设置——“实施参照完整性”——确定——保存关系作业:1、给学生表建立学号建立主键(索引);2、给课程表课程代码建立主键(索引);3、给成绩表分别建立三个索引,学号和课程代码为一个组合主索引,给学号和课程代码再分别建立两个普通索引;并对三张表实施参照完整性(级联更新相关字段;级联删除相关字段)。
数据库的几个概念:主键,外键,索引,唯一索引主键:主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从学生表中搜索一条纪录如查找一个人,就只能根据学号去查找,这才能找出唯一的一个,这就是主键;如:id int(10) not null primary key auto_increment ;自增长的类型;外键:定义数据表假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息。
用来保存整机产品信息的表叫做 Pc;用来保存配件供货信息的表叫做Parts。
在Pc表中有一个字段,用来描述这款电脑所使用的CPU型号;在Parts 表中相应有一个字段,描述的正是CPU的型号,我们可以把它想成是全部CPU的型号列表。
很显然,这个厂家生产的电脑,其使用的CPU一定是供货信息表(parts)中存在的型号。
这时,两个表中就存在一种约束关系(constraint)——Pc表中的CPU型号受到Parts 表中型号的约束。
首先我们来创建 parts 表:CREATE TABLE parts (... 字段定义 ...,model VARCHAR(20) NOT NULL,... 字段定义 ...);接下来是Pc表:CREATE TABLE pc (... 字段定义 ...,cpumodel VARCHAR(20) NOT NULL,... 字段定义 ...};设置索引若要设置外键,在参照表(referencing table,即Pc表) 和被参照表(referenced table,即parts表) 中,相对应的两个字段必须都设置索引(index)。
对Parts表:ALTER TABLE parts ADD INDEX idx_model (model);这句话的意思是,为 parts 表增加一个索引,索引建立在 model 字段上,给这个索引起个名字叫idx_model。
对Pc表也类似:ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);事实上这两个索引可以在创建表的时候就设置。
【数据库】主键,外键,主表,从表,关联表,⽗表,⼦表⼀、前⾔在设计中,hibernate,iBatis等ORM框架的使⽤中经常听说主键,外键,主表,从表,关联表,⽗表,⼦表之类的术语,弄懂它们之前的区别与联系对于和ORM框架的学习使⽤是⾮常有必要的。
⼆、概述下⾯从数据库设计⾓度,ORM框架使⽤(以Hibernate为例),PowerDesigner软件以及实际业务⾓度进⾏⼀下介绍。
(1) 数据库⾓度⽽⾔主键:⼀般情况下,满⾜第⼀范式的表都有⼀个主键Primary key,⽤于唯⼀标⽰数据库中的⼀个字段。
外键:外键是相对于数据库设计中的参考完整性⽽⾔,它与主键之间是彼此依赖的关系。
假设现在有两个表,产品分类表ProductCategory(主键CategoryId)和产品信息表Product(主键ProductId),每类产品都属于⼀个分类。
那么如果产品信息表肯定需要参考产品分类表进⾏定义。
因为如果没有产品分类表,⼜何谈产品分类呢。
所以产品信息表Product需要引⽤ProductCategory中的主键CategoryId 进⾏产品分类定义,Product表中引⽤CategoryId的字段就是外键。
在概念模型(Concept Model)中,从产品分类⾓度看,产品分类和产品之间就是⼀对多的关系,⼀个分类下可以有多个产品。
从产品⾓度看,产品和产品分类之间是多对⼀的关系,多种产品属于⼀个分类。
主表:在数据库中建⽴的表格即Table,其中存在主键(primary key)⽤于与其它表相关联,并且作为在主表中的唯⼀性标识。
(摘⾃百度百科)从表:以主表的主键(primary key)值为外键 (Foreign Key)的表,可以通过外键与主表进⾏关联查询。
从表与主表通过外键进⾏关联查询。
(摘⾃百度百科)关联表:两个数据库及其(数据)表之间的数据的相互依赖和影响关系。
⽐如现有某学校三个数据表:学⽣(学号,姓名),课程(课程名,课程编号),选课(学号,课程号,成绩)。
数据库习题第一讲走进数据库1.1 走进数据库1 数据库系统与文件系统的最根本的区别是( ) 。
A.文件系统只能管理程序文件,而数据库系统可以管理各种类型文件B.数据库系统复杂,而文件系统简单C.文件系统管理的数据量少,而数据库系统可以管理庞大数据量D.文件系统不能解决数据冗余和数据的独立性,而数据库系统能正确答案: D2 下述不是 DBA 数据库管理员的职责的是( ) 。
A.完整性约束说明B.定义数据库模式C.数据库管理系统设计D.数据库安全正确答案: C3数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是()。
A.DBS 包括 DB 和 DBMSB.DBMS 包括 DB 和 DBSC.DB 包括 DBS 和 DBMSD.DBS 就是 DB,也就是 DBMS正确答案: A4 ( )是以一定的组织方式将相关的数据组织在一起,长期存放在计算机内,可为多个用户共享,与应用程序彼此独立,统一管理的数据集合。
正确答案:数据库5 在数据库的三级模式结构中,描述数据库中全体数据的逻辑结构和特征的是( ) 。
正确答案:模式1.2 关系数据库1 在关系运算中,选择运算的含义是( ) 。
A.从一个关系中找出满足给定条件的元组组成一个新的关系B.从一个关系中找出需要的属性组成一个新的关系C.从一个关系中找出满足条件的元组和属性组成一个新的关系D. 以上 3 种说法均是正确的正确答案: A2 在“学生表”中,要查找所有年龄大于 30 岁姓王的男同学,所采用的关系运算是 ( ) 。
A.选择B.投影C.连接D. 自然连接正确答案: A3 在关系运算中, ( )运算得到的新关系中属性个数通常多于原关系中属性个数。
A.选择B.投影C.连接D.并正确答案: C4 在“教师表”中要显示教师的姓名和职称的信息,应采用的关系运算是( )A.选择B.投影C.连接D.差正确答案: B5 传统的集合运算包含并、差、交和( )。
数据库索引和主键1、什么是索引?⾯试时候,常常被问到⾃⼰熟知的Mysql优化技巧,索引⼀定会被提及。
那么,什么是索引呢?索引是⼀种加快海量数据查询的技术。
索引就像是⼩时候的新华字典,有了索引,你可以快速地找到⾃⼰想找的东西。
MySQL索引的建⽴对于MySQL的⾼效运⾏是很重要的,索引可以⼤⼤提⾼MySQL的检索速度。
索引分单列索引和组合索引。
单列索引,即⼀个索引只包含单个列,⼀个表可以有多个单列索引,但这不是组合索引。
组合索引,即⼀个索引包含多个列。
创建索引时,你需要确保该索引是应⽤在 SQL 查询语句的条件(⼀般作为 WHERE ⼦句的条件)。
实际上,索引也是⼀张表,该表保存了主键与索引字段,并指向实体表的记录。
过多的使⽤索引将会造成滥⽤。
因此索引也会有它的缺点:虽然索引⼤⼤提⾼了查询速度,同时却会降低更新表的速度,如对表进⾏INSERT、UPDATE和DELETE。
因为更新表时,MySQL不仅要保存数据,还要保存⼀下索引⽂件。
建⽴索引会占⽤磁盘空间的索引⽂件。
2、索引的优缺点1)优点A.加快数据检索速度和表与表之间的连接;B.可以显著减少查询中分组和排序的时间(使⽤分组和排序⼦句进⾏数据检索时)。
2)缺点A.占物理空间。
B.需要动态维护,降低数据维护速度(update、delete、insert)。
3、索引的分类⼀般索引:这是最基本的索引,它没有任何限制。
值可以重复,可以为空。
唯⼀索引:它与前⾯的普通索引类似,不同的就是:索引列的值必须唯⼀,但允许有空值。
如果是组合索引,则列值的组合必须唯⼀。
聚集索引类似于电话簿,后者按姓⽒排列数据。
由于聚集索引规定数据在表中的物理存储顺序,因此⼀个表只能包含⼀个聚集索引。
但该索引可以包含多个列(组合索引),就像电话簿按姓⽒和名字进⾏组织⼀样。
如果在表中未创建聚集索引,则⽆法保证这些⾏具有任何特定的顺序。
聚集索引..就像我们新华字典中的按拼⾳排序..即你查.."爱"字..可以在前⾯看到"癌"字...但不会看到"受"字..⽽⾮聚集索引..就是新华字典中的按部⾸..笔划排序...聚集索引相当于我们书本上前⾯的⽬录的⼀样,它可以⽅便快速的找到你想找的内容,⽽⾮聚集索引就相当于书最后⼏页的解释,它是对书中某个语句或者是⽣词的解释,就像我们上学时候的地理说⼀样,书后⾯都有各种地理名称的英⽂解释;《数据库原理》⾥⾯的解释:聚集索引的顺序就是数据的物理存储顺序,⽽⾮聚集索引的顺序和数据物理排列⽆关。
数据库设计与管理中的主键索引问题探讨一、引言数据库作为现代信息系统的核心组件之一,其设计与管理的重要性不言而喻。
在数据库设计过程中,主键(primary key)和索引(index)是两个非常重要的概念。
主键是数据库表中的一列或一组列,其值可以唯一地标识每一行数据,而索引则是为了加速数据库查询而设计的一种结构。
在实际的数据库设计和管理中,主键和索引之间存在着一些互相影响的问题。
本文旨在探讨这些问题并提出一些解决方案。
二、主键的选择与设计在数据库表中,一个或多个列可以被定义为主键。
主键的作用是用来唯一地标识每一行数据。
在实际使用中,主键通常具有下列特性:1. 不能为空值:主键列的值不能为 NULL。
2. 唯一性:主键列的值必须唯一地标识每一行数据。
3. 不可更改性:主键列的值在插入数据后不能更改。
根据实际应用场景的不同,主键的选择也会有所不同。
主键可以选择单个列,也可以选择多个列。
一般来说,主键应该具有简洁明了、易于管理的特点。
主键的设计应当满足以下的条件:1. 稳定性:主键的值应当是稳定的,不会因为时间、环境等因素而发生变化。
2. 简洁性:主键的值应当足够简洁,方便对数据进行快速访问。
3. 唯一性:主键的值应当保证唯一性,以便于其他表格能够引用它。
4. 没有意义性:主键的值应当是没有意义的,不包含数据的具体信息。
三、索引的作用与设计索引是为了提高数据库查询性能而设置的一种数据结构。
通过索引,可以快速地定位到数据库表中某一行数据所在的位置,从而避免了全表扫描的低效率查询方式。
在数据库设计中,索引是一个非常重要的设计元素,一般会考虑如下几个因素:1. 索引类型:根据实际情况,可以选择不同的索引类型。
如B树索引、哈希索引、全文索引等。
2. 索引列选择:在建立索引时,需要选择一个或者多个索引列。
通常,应该选择被频繁查询的列作为索引列。
3. 索引列顺序:如果建立了多列索引,需要考虑这些列的顺序。
一般来说,应该根据频繁的查询条件来决定这些列的顺序。
主键和二级索引流程一、主键是啥呀?主键就像是一张表里面超级重要的小队长呢。
它有独特性,就好比在一个班级里,每个同学都有自己独一无二的学号,这个学号就可以当作主键。
它的存在是为了能准确又快速地找到表中的某一条数据。
比如说,在一个记录学生信息的表中,学号作为主键,只要知道学号,就能马上定位到这个学生的所有信息,像姓名呀、成绩呀、家庭住址之类的。
而且呀,主键还能保证数据的完整性,防止出现重复或者混乱的数据。
二、主键的创建流程。
创建主键可有意思啦。
一般在设计数据库表的时候就要考虑好主键啦。
要是用像MySQL这样的数据库管理系统的话,在创建表的时候就可以指定一个字段作为主键。
比如说创建一个“书籍”表,我们可以把“书号”这个字段设为主键。
我们可以用这样的语句(这里只是简单示意哦):CREATE TABLE books (book_id INT PRIMARY KEY, book_name VARCHAR(50), author VARCHAR(30)); 这样就把book_id这个字段变成主键啦。
如果表已经创建好了,也可以修改表结构来添加主键呢。
不过要小心哦,因为这可能会影响到已经存在的数据。
三、二级索引又是啥呢?二级索引就像是主键这个小队长的小助手。
它是基于表中的其他字段创建的一种索引。
为什么要有二级索引呢?因为有时候我们不是根据主键来查找数据的,而是根据其他字段。
比如说在“学生”表中,我们可能经常要根据姓名来查找学生的信息,但是姓名又不是主键。
这个时候,二级索引就派上用场啦。
它可以让我们更快速地根据姓名找到对应的学生记录。
二级索引就像是给那些非主键的字段做了一个特殊的小目录,方便我们快速查找。
四、二级索引的创建流程。
创建二级索引也不难哦。
还是以MySQL为例,如果我们想给“学生”表中的“姓名”字段创建二级索引,我们可以用这样的语句:CREATE INDEX index_name ON students (name); 这里的index_name是我们给这个索引取的名字,students是表名,name就是我们要创建索引的字段啦。
数据库主键及索引⼀、什么是索引?索引⽤来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。
如果没有索引,执⾏查询时MySQL必须从第⼀个记录开始扫描整个表的所有记录,直⾄找到符合要求的记录。
表⾥⾯的记录数量越多,这个操作的代价就越⾼。
如果作为搜索条件的列上已经创建了索引,MySQL⽆需扫描任何记录即可迅速得到⽬标记录所在的位置。
如果表有1000个记录,通过索引查找记录⾄少要⽐顺序扫描记录快100倍。
⼆、索引的类型MySQL提供多种索引类型供选择:普通索引这是最基本的索引类型,⽽且它没有唯⼀性之类的限制。
普通索引可以通过以下⼏种⽅式创建:创建索引,例如CREATE INDEX <索引的名字> ON tablename (列的列表);修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);创建表的时候指定索引,例如CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );唯⼀性索引这种索引和前⾯的“普通索引”基本相同,但有⼀个区别:索引列的所有值都只能出现⼀次,即必须唯⼀。
唯⼀性索引可以⽤以下⼏种⽅式创建:创建索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表);创建表的时候指定索引,例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) );主键主键是⼀种唯⼀性索引,但它必须指定为“PRIMARY KEY”。
如果你曾经⽤过AUTO_INCREMENT类型的列,你可能已经熟悉主键之类的概念了。
主键⼀般在创建表的时候指定,例如“CREATE TABLE tablename ( [...], PRIMARY KEY (列的列表) ); ”。