数据库基础概念
数据库
数据库(database) 是保存有组织的数据的容器(通常是一个文件或一组文件)。
理解数据库的一种最简单的办法是将其想象为一个文件柜。
此文件柜是一个存放数据的物理位置,不管数据是什么以及如何组织的。
数据库软件
数据库软件应称为DBMS(数据库管理系统),如 MySQL。数据库是通过DBMS创建和操纵的容器。
表
在你将资料放入自己的文件柜时,并不是随便将它们扔进某个抽屉就完事了,而是在文件柜中创建文件,然后将相关的资料放入特定的文件中。
在数据库领域中,这种文件称为表。表是一种结构化的文件,可用来存储某种特定类型的数据。表可以保存顾客清单、产品目录,或者其他信息清单。
表(table)是某种特定类型数据的结构化清单。
表名具有唯一性,表示在同一个数据库中的表的名称具有唯一性。注意:在相同数据库中不能两次使用相同的表名,但在不同的数据库中却可以使用相同的表名。
模式
表具有一些特性,这些特性定义了数据在表中如何存储,如可以存储什么样的数据,数据如何分解,各部分信息如何命名,等等。描述表的这组信息就是所谓的模式,模式可以用来描述数据库中特定的表以及整个数据库(和其中表的关系)。
模式描述了表中数据的类型、组织方式、表间关系等。
列
表由列组成。列中存储着表中某部分的信息。
列(column) 是表中的一个字段。所有表都是由一个或多个列组成的。
如下图所示,理解列的最好办法是将数据库表想象为一个网格。网格中每一列存储着一条特定的信息。例如,在顾客表中,一个列存储着顾客编号,另一个列存储着顾客名,而地址、城市、州以及邮政编码全都存储在各自的列中。
数据类型
数据库中每个列都有相应的数据类型。
数据类型限制可存储在列中的数据种类
(例如,防止在数值字段中录入字符值)。数据类型还帮助正确地排序数据,并在优化磁盘使用方面起重要的作用。因此,在创建表时必须对数据类型给予特别的关注。
行
表中的数据是按行存储的,所保存的每个记录存储在自己的行内。行是表中的一个记录。
主键
表中每一行都应该有可以唯一标识自己的一列(或一组列)。一个顾客表可以使用顾客编号列,而订单表可以使用订单ID,雇员表可以使用雇员ID或雇员社会保险号。
主键(primary key)是一列(或一组列),其值能够唯一区分表中每个行。
表中的任何列都可以作为主键,只要它满足以下条件(MySQL本身强制实施的。
):
任意两行都不具有相同的主键值;
每个行都必须具有一个主键值(主键列不允许NULL值)。
主键通常定义在表的一列上,但这并不是必需的,也可以一起使用多个列作为主键。在使用多列作为主键时,上述条件必须应用到构成主键的所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)。
除MySQL强制实施的规则外,应该坚持的几个普遍认可的最好习惯为:
不更新主键列中的值;
不重用主键列的值;
不在主键列中使用可能会更改的值。(例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并和更改其名字时,必须更改这个主键。)
SQL
SQL(发音为字母S-Q-L或sequel)是结构化查询语言(Structured Query Language)的缩写。SQL是一种专门用来与数据库通信的语言。
SQL有如下的优点。
SQL不是某个特定数据库供应商专有的语言。几乎所有重要的DBMS都支持SQL,所以,学习此语言使你几乎能与所有数据库打交道。
SQL简单易学。它的语句全都是由描述性很强的英语单词组成,而且这些单词的数目不多。
SQL尽管看上去很简单,但它实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。