4.数据表的创建于更新

原创 2018年04月17日 09:28:52

我这些学习笔记,记录的都是我自己认为的知识点,可能以后再看的时候还要翻书,但是可以用来定位到准确的书中示例的位置,减少翻书重找的时间,利于自身知识体系的搭建。                                            self-transcendence

第4章 数据表的创建于更新

数据表是数据库中操作的级别现象。数据表用来存储数据记录。在数据表中会经常用到主键、外键、约束和索引。

 

4.1 数据库中的表

数据表是关系数据库中的基本单元,由行和列组成。他是根据数据库设计阶段的e-r图转换而来,表中除了行、列、数据记录、属性、字段等基本概念外,还会涉及主键、外键、索引、约束等概念。

 

4.1.1 数据记录、属性、字段、行和列

表中每一行称为一条数据记录。

 

4.1.2 主键

主键是作为唯一标示,保证一条数据记录的唯一性。主键列的列值唯一且不能为null

主键在关系模型中用来约束 实体完整性(数据表中行的完整性约束)。

主键列不一定只有一列,也可以多列组合作为主键。

4.1.3 外键

外键用来定义表与表之间的关系。

外键在关系模型中用来约束 参照完整性(表与表之间的约束)。

其中一个表增删改查都会对另一个表产生影响。

但是,定义了外键约束的两个表,在操作数据时会存在一些限制,参考12.1.213.1.214.1.2

 

4.1.4 索引

多使用索引进行查询,索引可以加快访问速度,访问时间。索引就像书的目录。数据表会有成千上万的数据,所以需要在表中建立索引。

索引是一个指向数据表中数据的指针,指向索引字段在数据表中的物理位置。如果查询是,where中指定的字段是索引字段,则数据库会首先在索引中对指定的值进行查询,并返回查询数据再数据表中的位置。如果索引字段不在where中,则查询数据会扫描每一条数据。

索引的弊端是会占用大量的磁盘空间,列增加、创建和维护索引的时间也会随之增加;对数据增删改时,要对索引进行维护,降低更新数据的速度。因此增删查常用的列及查询不常用的列不适合创建索引。

综上,一般在下面这些列中创建索引:

主键中。

多表连接时,常用的列。

常使用where的列。

group byoredr by 的列。

 

4.1.5 约束

为了保证数据完整性,要使用数据库约束。

完整性约束  列的约束  唯一约束、参照约束、检查约束、非空约束

表的约束  唯一约束、主键约束、外键约束、检查约束

列级完整性约束是指在定义列和指定列中数据类型之后就定义完整性约束条件。

表级完整性约束是指在定义了所有列之后在定义完整性约束条件。

唯一约束(unique):保证列的唯一性,可以为null

主键约束(primary key):保证列的唯一性,不能为null,每张表只能有一列是主键

外键约束(foreign key):保证表的参照完整性,确保一个表的数据操作不会对关联表造成不利的影响。

检查约束(check):限制列的取值范围或取值条件。一个列可以定义多个检查约束。

非空约束(not null):只用来约束列。在向该列插入数据时不允许插入空值null

 

 

 

4.4 使用索引

4.4.1 索引的分类

唯一索引:使用unique关键字为一列定义一个唯一索引,保证记录的唯一性。在新增数据时,数据库会对这条数据进行检查,如果发现该条记录中的值在定义了唯一索引的列中出现过,则不能插入该条数据。一般创建了唯一约束,数据库就会对该列建立一个唯一索引,索引名月约束名相同。

主索引:使用primary key关键字为一列定义一个主索引。主索引就是定义在主键列中的索引,主索引保证列中记录的唯一性。一般创建了主键约束,数据库就会对该列建立一个主索引,索引名月约束名相同。

单列索引:定义在一列上的索引。Where查询该列,可以提升效率。

复合索引:定义在多列上的索引。Where查询这些咧,可以提升效率。

聚簇索引:为数据表创建聚簇索引。索引的索引项顺序与表中数据记录的物理顺序一致。一个表只能创建一个。

mysql中一张表总索引数不能超过16oracle中如果创建符合索引,则索引列的总数不能超过32

右键表,选择edit table创建索引。

 

windows程序中生成崩溃转储文件(.dmp)

提供给用户使用的程序如果崩溃,如果能生成相应的转储文件,那么很容易定位出错原因 对于自己编写的win32程序,可以如下编写 __try { 逻辑代码 ... } __exception(...
  • buck84
  • buck84
  • 2013-05-27 09:51:34
  • 3495

Linux创建管道

管道是两个进程的连接器,单向,
  • a158337
  • a158337
  • 2014-08-26 19:03:53
  • 1134

编写创建二叉树的算法

①、编写创建二叉树的算法; ②、编写查找节点的算法; ③、编写找孩子节点的算法; ④、编写求二叉树高度的算法; ⑤、编写输出二叉树的算法; ⑥、编写先序遍历递归算法; ⑦、编写主函数。 ...
  • xdf0101
  • xdf0101
  • 2016-02-02 18:40:41
  • 373

Linux 进程管理剖析(创建、管理、调度和销毁)

Linux® 的用户空间进程的创建和管理所涉及的原理与 UNIX® 有很多共同点,但也有一些特定于 Linux 的独特之处。在本文中,了解 Linux 进程的生命周期,探索用户进程创建、内存管理、调度...
  • songjinshi
  • songjinshi
  • 2014-04-09 11:07:19
  • 2271

C语言二维数组动态创建与释放

二维数组动态创建与释放有多种方式,下面就给
  • hwb_1988
  • hwb_1988
  • 2014-09-17 16:46:21
  • 769

用于json解析的CJson类

  • 2016年12月19日 11:12
  • 9KB
  • 下载

基于Web的Java开发设计课件-Servlet篇

  • 2014年12月24日 14:03
  • 3.66MB
  • 下载

windows 网络操作系统 域的创建于管理

  • 2014年04月15日 18:34
  • 1.82MB
  • 下载

我的专利

#NoTrayIcon#Region ;**** 参数创建于 ACNWrapper_GUI ****#AutoIt3Wrapper_icon=data/ICON/InDesign.ico#AutoIt...
  • lw35888894
  • lw35888894
  • 2009-09-05 13:59:00
  • 3981

栈的创建于基本操作

一  定义结构体 typedef struct { int data[MAX_SIZE]; int top; }sqstack; 二 栈置空 int initstack(...
  • mc1973_bgl
  • mc1973_bgl
  • 2016-11-27 21:24:48
  • 70
收藏助手
不良信息举报
您举报文章:4.数据表的创建于更新
举报原因:
原因补充:

(最多只允许输入30个字)