返回
数据
分类

必赢手机登录网址在数据库中通过数据表来存放记录,在数据表中除了行、列、数据记录、属性、字段等基本概念外

日期: 2020-01-02 07:59 浏览次数 : 154

数据表的创建与更新

 

 

   在数据库中通过数据表来存放记录,在数据表中常常会碰到主外键。索引。约束等条件,以下就具体一下。

数据表是关系数据库中操作的级别对象。在关系数据库中,通过数据表来存储数据记录。在数据表中会经常用到主键、外键、约束和索引。这一章将对数据表中涉及到的数据类型以及主键、外键、约束和索引等概念和使用方法做一个全面的介绍。另外还将介绍数据表的创建方法,以及如何对表中的记录进行增加和修改操作、如何删除数据表等内容。 

 

1.数据库中的表 

  主键

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

  一张数据表中唯一的标识。确保一张数据表中不会出现两个全然同样的数据记录。

数据记录、行、字段、列 

  主键能够定义在多个列上。也就是说在定义数据库的时候能够将数据表中的多个列合并在一起作为该表的主键

在关系数据库中,数据表是存储数据的基本单元,由行和列两部分组成的。其中,行用来描述实体中的具体数据,在数据表中每一行中的数据被称为一条数据记录,也可以简称为记录;字段是表中的一列,用来保存数据表中某一条记录中的特定信息。字段在关系数据库中也可以称为列。 

 

 

  外键

必赢手机登录网址 1

  用来表与表之间关系的。

 

假设字段F是表B中的字段,并且是表A的主键的话,那么列F就是表B的外键。用来运行增

主键 

删改查的时候,两张表一致性。

为了保证在一张数据表中不会出现两个完全相同的数据记录,需要为每一张数据表都定义一个主键。主键作为数据表中的唯一标示,保证了一条记录的唯一性。通过主键可以区分数据表中的每一条记录。在创建数据表时,需要保证被定义为主键的列的列值唯一,并且不能为空值(即NULL值)。 

 

主键在关系模型中用来约束实体完整性。所谓实体完整性约束是指对数据表中行的完整性约束。在实体完整性中,需要有一个主键来唯一标示数据表中每一行的数据记录,数据表中的主键唯一且不能为空值。 

  外键删除时,相应的表中的记录也应该做出相应的调整。分为三种方式

注意:主键可以定义在多个列上,并不一定只定义在一个列上。也就是说,在定义数据表的时候,可以将数据表中的多个列合并在一起作为该表的主键。 

  

外键 

  1.CASCADE:级联删除,假设主表中的记录被删除。那么从表中的记录也一并被删除

外键是用来定义表与表之间的关系的。在数据表中,外键是这样定义的:如果属性列F是关系B中一个属性(并不是关系B的主键),并且属性列F是关系A中的主键,则F就是关系B的外键。关系A中的表被称为主表,关系B中的表被称为主表的从表。 

  

外键在关系模型中用来约束参照完整性。所谓参照完整性约束是指表与表之间的约束。在参照完整性中,从表中的每一条数据记录中的外键值都必须存在于主表中。对于建立了关联关系的两个数据表来说,对其中一个数据表的增加、修改或者删除数据的操作都会对另一个数据表中的记录产生影响。 

必赢手机登录网址 ,  2.SET NULL:置空删除。假设主表中的记录被删除。那么从表中的记录就会被置空

索引 

   

在实际应用中,为了加快访问速度,节省访问时间,一般都需要使用索引进行查询。通过建立索引,在查询数据表中的数据时,数据库可以很快的将其找到,而不用扫描整个数据表。 

  3.RESTRICT:受限删除。假设主表中的一条记录被删除,那么系统会报错,会告知用户从表中的记录仍然存在

索引是一个指向数据表中数据的指针,指向索引字段在数据表中的物理位置。如果在执行查询操作时,WHERE子句中指定的字段是被设置为索引的字段,则数据库会首先在索引中对指定的值进行查询,并返回查询的数据在数据表中的位置。如果在执行查询操作时,WHERE子句中指定的字段没有设置为索引的字段,那么数据库会查询数据表中的每一行数据记录,进行全部扫描。因此适当的创建索引,可以加快数据的检索速度,提高对数据的访问效率,提供数据查询的性能。 

create table t_result
(
stuid varchar(15),
curid varchar(15),
result int,
foreign key(stuid) references t_student(stuid) on delete cascade,
--定义外键
)

当然,索引本身也有一些弊端,例如,索引会占用大量的硬盘空间;随着数据列的增加,创建和维护索引的时间也会随之增加;在对数据进行增加、删除和修改等更新操作的时候,需要对索引进行维护,降低更新数据的速度。因此,对那些不是在查询过程中经常用到的列以及在数据表中经常需要进行增加、删除和修改等更新操作的列就不适合建立索引。 

 

虽然创建索引可以提高查询的速度,但是由于索引本身会占用物理空间以及维护索引可能带来的时间的损耗,所以在为数据表中的列创建索引时,并不是为数据表中的每一个列都要创建索引,那样做反而不会起到提高查询效率的作用。因此需要在数据表的适当的列上创建索引。一般可以在下面这些列中创建索引。 

牛刀小试

1.在主键列中创建索引 

  

2.多表连接时,在经常使用的连接列上创建索引 

create table t_student
(
stuid varchar(15) primary key, --创建主键
stuname varchar(10) not null,  --非空约束
age int not null,
sex varchar(2) not null,
birth datetime not null,
)

3.在经常使用WHERE子句查询的列上创建索引 

  索引

4.在经常进行分组(GROUP BY)和排序(OREDR BY)的列上创建索引 

  用来加快訪问的速度。节省訪问的时间

约束 

 索引就好比是一本书的文件夹或者是一个电话薄,可以节约查询的时间

为了保证数据的完整性,需要使用数据库约束。完整性约束包括对表的约束和对列的约束。表约束主要包括唯一约束、主键约束、外键约束和CHECK约束,列约束除了包括唯一约束、参照约束和CHECK约束之外,还有非空约束 

 

唯一约束(UNIQUE):保证使用唯一约束的某一列或者一组列中没有相同的值,即保证列的值的唯一性。但是唯一约束中可以允许在列中插入空值(即NULL值)。 

  索引就好比是一个数据库中的指针,当运行查询操作时,WHERE子句会首先运行索引的字段

主键约束(PRIMARY KEY):保证使用主键约束的列中只能有唯一的值,并且不能包含空值。数据表中每一列只能定义一个PRIMARY KEY。 

  索引的分类

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

唯一索引 在数据表中使用UNIQUEkeyword就能够为一个数据列定义一个唯一索引,当定义了唯一索引列后,就保证

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

不会有反复的记录插入到该数据表中

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

主索引 在数据表中使用PRIMARY KEYkeyword也能够保证该列不会有反复的记录输入到里面

2.创建数据表 

单列索引 定义在数据表中一个数据列上的索引就是单列索引。当where子句中经经常使用到数据表中的某一列作为查

在创建完数据库之后,就可以在数据库中创建数据表了。创建数据表可以通过使用CREATE TABLE语句。使用CREAT TABLE语句创建数据表的语法格式如下: 

询条件时,为了提高查询效率就能够为该列建立单列索引

CREATE TABLE table_name(
column_name1 datatype1 [constraint_condition1]
[,column_name2 datatype2 [constraint_condition2]]…
)

复合索引 定义在一个数据表的多个数据列上。就别成为复合索引,像单列索引一样,假设where子句用到多列的

 

话。就能够为多列建立复合索引

column_name1为指定数据表的列名;datatype1为指定列名的数据类型;constraint_condition1为指定列名的完整性约束。 

聚簇索引 为了提高SQL语句对数据表的查询效率,能够为数据表创建索引

为了保证数据的完整性,需要使用数据库约束。约束主要包括唯一约束(UNIQUE)、主键约束(PRIMARY KEY)、外键约束(FOREIGN KEY)、检查约束(CHECK)和非空约束(NOT NULL)。

牛刀小试

唯一约束(UNIQUE)用来保证某一列或者一组列中没有相同的值。如果为列定义了唯一约束,则该列中不允许出现重复的值,但是允许列中存在空值(即NULL值)。唯一约束即可以定义的表级上,也可以定义在列级上。一般在为列创建唯一约束后,数据库会自动为该列建立一个唯一索引,其索引名与约束名是相同的。 

加入索引

主键约束(PRIMARY KEY)是用来保证使用主键约束的某一列或者一组列中有唯一的值,并且不能包含空值(即NULL值)。数据表中每一列只能定义一个PRIMARY KEY。一般在为列创建主键约束后,数据库会自动为该列建立一个主索引,其索引名与约束名是相同的。 

create index i_profession --加入索引
on t_student(stuid asc)

在创建数据表时,如果希望将多个列组合起来作为一个数据表中的主键,可以在PRIMARY KEY关键字后使用括号,将需要定义为主键的列放到PRIMARY KEY关键字后面的括号中。括号中的多个列之间需要使用逗号分割。 

约束

首先来考虑这样一个问题,现在由于某种原因需要将一名学生在学校的全部信息删除。这里涉及学生信息的一共有两个表,一个是学生信息表,一个是成绩信息表。学生信息表保存的是学生的基本信息,成绩信息表保存的是学生选课的课程成绩信息。如果没有定义外键约束,将该名学生从学生信息表中删除时,而没有将该名学生的选课的课程成绩信息删除,这样就会造成两个关联表之间数据的不一致。 

为了保证数据的完整性,须要使用约束

同样的问题也可能出现在对两个关联表中数据的修改操作中。如果是多个表之间存在关联关系的话,不定义外键约束,类似上面的情况很可能会发生。为了避免由于操作不当而引起的关联表中数据的不一致,有必要为关联表之间定义外键约束。 

唯一性(UNIQUE):保证某一列没有反复的值。可是能够执行在列中插入空值

外键约束(FOERING KEY)主要是用来定义两个表之间的关系。外键约束保证了表的参照完整性,确保对一个表的数据操作不会对与之关联的表造成不利的影响。定义外键的语法格式如下: 

主键约束(PRIMARY KEY):使用主键的列仅仅能由唯一值

FOREIGN KEY[表名1](列名1) REFERENCES 表名2(列名2)
[ON UPDATE [CASCADE]|[SET NULL]|[RESTRICT]]
[ON DELETE[CASCADE]|[SET NULL]|[RESTRICT]]

外键约束(FOREIGN KEY):參照性约束,保证两个关联的表之间不会发生信息不正确称

 

检查约束(CHECK):限制某一个列插入的值符合某一条件

 

非空约束(NOT NULL):某一列插入的数值不能为空值

其后的ON UPDATE和ON DELETE分别指明了对表中的数据做修改和删除时,主从表之间要采用的主要操作方式。 

 

CASCADE:级联删除。如果主表中的一条数据记录被删除,那么从表中与之相对应的的数据也将被一起删除。 

牛刀小试

SET NULL:置空删除。如果主表中的一条数据记录被删除,那么从表中与之相对应的的数据也将被设置为空值。 

 

RESTRICT:受限删除。如果主表中的一条数据记录被删除,则在执行DELETE命令时数据库管理系统会报错,通知用户与主表相对应的该数据在从表中仍然存在,但是与主表相对应的该数据在从表中不会被删除。它是默认的方式。 

create table t_curriculum
(
curid varchar primary key, --主键约束
curname varchar unique,--唯一性约束
credit int,
check(credit between 2 and 8)  --检查约束
)

检查约束(CHECK)是用来限制列的取值范围或者取值条件,使用CHECK约束可以保证数据规则的一致性。可以为一个列定义多个CHECK约束,当为列定义了CHECK约束后,该列中所对应的数据必须满足指定的约束条件。 

  改动数据库中的表

非空约束(NOT NULL)是用来保证在向该列插入数据时不允许插入空值(即NULL值)。非空约束只能用来约束列。

 

数据表是关系数据库中操作的级别对象。在关系数据库中,通过数据表来存储数据记录。在数据表中会经常用到主键、...

  假设在创建完数据表之后。还须要对数据表结构做一些改动的话,比如改动索引,添加一行,改动数据库表中的某

一列等。就会须要使用ALTER TABLE语句。

加入一列

alter table table_name add  column_name data_type

更改一列

alter table table_name alter column column_name

  牛刀小试

alter table t_student add salary int not null --更改一个表中的信息



ALTER TABLE t_student alter COLUMN sex char(4)