SQL必知必会(1)数据库基础
时 间:2009-07-21 16:17:40
作 者:(美)Ben Forta ID:1445 城市:上海
摘 要:本章将介绍SQL究竟是什么,它能做什么事情。
正 文:
1.1 数据库基础
你正在阅读一本SQL图书这个事实表明,你需要以某种方式与数据库打交道。SQL正是用来实现这一任务的一种语言,因此在学习SQL本身以前,应该对数据库及数据库技术的某些基本概念有所了解。
你可能还没有意识到,其实你自己一直在使用数据库。每当你从自己的电子邮件地址簿里查找名字时,你就在使用数据库。如果你在某个因特网搜索站点上进行搜索,也是在使用数据库。如果你在工作中登录网络,也需要依靠数据库验证自己的名字和密码。即使是在自动取款机上使用ATM卡,也要利用数据库进行PIN码验证和余额检查。
虽然我们一直都在使用数据库,但对究竟什么是数据库并不十分清楚。特别是不同的人可能会使用相同的数据库术语表示不同的事物,这更是加剧了这种混乱。因此,我们学习的良好切入点就是给出一张最重要的数据库术语清单,并加以说明。
|
基本概念回顾 下面是某些基本数据库概念的简要介绍。如果你已经具有一定的数据库经验,这可以用于复习巩固;如果你是一个数据库新手,这将给你提供一些必需的基本知识。理解数据库是掌握SQL的一个重要部分,如果有必要的话,你应该参阅一些有关数据库基础知识的书籍。
|
1.1.1 什么是数据库
数据库这个术语的用法很多,但就本书而言(以及从SQL的角度来看),数据库是一个以某种有组织的方式存储的数据集合。理解数据库的一种最简单的办法是将其想象为一个文件柜。此文件柜是一个存放数据的物理位置,不管数据是什么以及如何组织。
数据库(database)保存有组织的数据的容器(通常是一个文件或一组文件)。
|
误用导致混淆 人们通常用数据库这个术语来代表他们使用的数据库软件。这是不正确的,它是产生许多混淆的根源。确切地说,数据库软件应称为数据库管理系统(或DBMS)。数据库是通过DBMS创建和操纵的。数据库可以是保存在硬设备上的文件,但也可以不是。在很大程度上说,数据库究竟是文件还是别的什么东西并不重要,因为你并不直接访问数据库;你使用的是DBMS,它为你访问数据库。
|
1.1.2 表
在你将资料放入自己的文件柜时,并不是随便将它们扔进某个抽屉就完事了,而是在文件柜中创建文件,然后将相关的资料放入特定的文件中。
在数据库领域中,这种文件称为表。表是一种结构化的文件,可用来存储某种特定类型的数据。表可以保存顾客清单、产品目录,或者其他信息清单。
表(table) 某种特定类型数据的结构化清单。
这里关键的一点在于,存储在表中的数据是一种类型的数据或一个清单。决不应该将顾客的清单与订单的清单存储在同一个数据库表中。这样做将使以后的检索和访问很困难。应该创建两个表,每个清单一个表。
数据库中的每个表都有一个用来标识自己的名字。此名字是唯一的,这表示数据库中没有其他表具有相同的名字。
|
表名 使表名成为唯一的,实际上是数据库名和表名等因素的组合。有的数据库还使用数据库拥有者的名字作为唯一名的组成部分。这表示,虽然在相同数据库中不能两次使用相同的表名,但在不同的数据库中却可以使用相同的表名。
|
表具有一些特性,这些特性定义了数据在表中如何存储,如可以存储什么样的数据,数据如何分解,各部分信息如何命名,等等信息。描述表的这组信息就是所谓的模式,模式可以用来描述数据库中特定的表以及整个数据库(和其中表的关系)。
模式(schema) 关于数据库和表的布局及特性的信息。
1.1.3 列和数据类型
表由列组成。列中存储着表中某部分的信息。
列(colomn) 表中的一个字段。所有表都是由一个或多个列组成的。
理解列的最好办法是将数据库表想象为一个网格。网格中每一列存储着一条特定的信息。例如,在顾客表中,一个列存储着顾客编号,另一个列存储着顾客名,而地址、城市、州以及邮政编码全都存储在各自的列中。
|
分解数据 正确地将数据分解为多个列极为重要。例如,城市、州、邮政编码应该总是独立的列。通过把它分解开,才有可能利用特定的列对数据进行分类和过滤(如,找出特定州或特定城市的所有顾客)。如果城市和州组合在一个列中,则按州进行分类或过滤会很困难。
|
数据库中每个列都有相应的数据类型。数据类型定义列可以存储的数据种类。例如,如果列中存储的为数字(或许是订单中的物品数),则相应的数据类型应该为数值类型。如果列中存储的是日期、文本、注释、金额等,则应该用恰当的数据类型规定出来。
数据类型(datatype) 所容许的数据的类型。每个表列都有相应的数据类型,它限制(或容许)该列中存储的数据。
数据类型限制可存储在列中的数据种类(例如,防止在数值字段中录入字符值)。数据类型还帮助正确地分类数据,并在优化磁盘使用方面起重要的作用。因此,在创建表时必须对数据类型给予特别的关注。
|
数据类型兼容 数据类型及其名称是SQL不兼容的一个主要原因。虽然大多数数据类型得到一致的支持,但许多更为高级的数据类型却不是这样。更糟的是,我们偶然会发现相同的数据类型在不同的DBMS中具有不同的名称。对此用户毫无办法,重要的是在创建表结构时要记住这些差异。
|
1.1.4 行
表中的数据是按行存储的;所保存的每个记录存储在自己的行内。如果将表想象为网格,网格中垂直的列为表列,水平行为表行。
例如,顾客表可以每行存储一个顾客。表中的行编号为记录的编号。
行(row) 表中的一个记录。
|
是记录还是行? 你可能听到用户在提到行(row)时称其为数据库记录(record)。在很大程度上,这两个术语是可以互相交换使用的,但从技术上说,行才是正确的术语。
|
1.1.5 主键
表中每一行都应该有可以唯一标识自己的一列(或一组列)。一个顾客表可以将顾客编号用于此目的,而包含订单的表可以使用订单ID。雇员表可以使用雇员ID或雇员社会保险号。
主键(primary key)一列(或一组列),其值能够唯一标识表中每个行。
唯一标识表中每行的这个列(或这组列)称为主键。主键用来表示一个特定的行。没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只涉及相关的行。
|
应该总是定义主键 虽然并不总是都需要主键,但大多数数据库设计人员都保证他们创建的每个表具有一个主键,以便于以后的数据操纵和管理。
|
表中的任何列都可以作为主键,只要它满足以下条件:
q 任意两行都不具有相同的主键值;
q 每个行都必须具有一个主键值(主键列不允许NULL值);
q 主键列中的值不允许修改或更新;
q 主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。
主键通常定义在表的一列上,但这并不是必需的,也可以一起使用多个列作为主键。在使用多列作为主键时,上述条件必须应用到构成主键的所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)。
还有一种非常重要的键,称为外键,我们将在第12章中介绍。
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)