菜鸟崛起 DB Chapter 1 数据库概述
1. 数据库的概述
在目前阶段,如果要存储和管理数据,则离不开数据库。当数据存储到数据库后,就会通过数据库管理系统对这些数据进行组织和管理。数据库由一批数据构成有序的集合,这些数据被存放在结构化的数据表里。数据表之间相互关联,反映了客观事物间的本质联系。数据库系统阶段提供对数据的安全控制和完整性控制。
1.1 数据管理技术的发展阶段
所谓数据管理,是指对各种数据进行分类、组织、编码、存储、检索和维护。发展到现在,数据库管理技术经历了三个阶段,分别为人工管理阶段、文件系统阶段和数据库系统阶段。
1.1.1 人工管理阶段
20世纪50年代中期以前。由于计算机中硬件还没有像现在这样的硬盘、软件没有专门管理数据的软件,所以计算机只局限于科学技术方面,数据只由计算和处理它的程序自行携带。该时期被称为人工管理阶段。
人工管理阶段特点如下:
l 数据不能长期保存。
l 程序本身管理数据。
l 数据不能共享。
l 数据不具有独立性。
1.1.2 文件系统阶段
随着技术的发展,在20世纪50年代后期到20世纪60年代中期,计算机不仅应用于科学技术,而且开始用于管理。在该时期由于计算机硬件出现了硬盘,计算机软件出现了高级语言和操作系统,因此程序和数据有了一定独立性,出现了程序文件和数据文件,这就是所谓的文件系统阶段。
文件系统阶段的特点如下:
l 数据可以长期保存
l 数据由文件系统来管理。
l 数据冗余大,共享性差。
l 数据独立性差。
1.1.3 数据库系统阶段
随着网络技术的发展,计算机软硬件功能的进步,在20世纪60年代后期,计算机可以管理规模巨大的数据,这时如果计算机还使用文件系统来管理数据,则远远不能满足当时各种应用需求,于是出现了数据库技术,特别是关系型数据库技术。该阶段就是所谓的数据库系统阶段。
数据库阶段的特点如下:
l 数据实现结构化。
l 数据实现了共享性。
l 数据独立性强。
l 数据粒度变小。
1.1.3.1 数据库技术经历的阶段
在数据库系统管理数据阶段,随着时间的推移,又经历了3个技术阶段,分别为:层次数据库和网状数据库技术阶段、关系数据库技术阶段,不同种类的数据库按照不同的数据结构来联系和组织。
1.2 数据库系统阶段涉及的概念
数据库(DataBase DB):是指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户共享的,被统一管理的数据的集合。
数据库管理系统(DataBase Management System DBMS):是指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统管理和访问数据库中的数据。当前比较流行和常用的数据库管理系统有Oracle、MySQL、SQL Server和DB2等。
数据库系统(Database System DBS):是指在计算机系统中引入数据库后的系统,通常由计算机硬件、软件、数据库管理系统和数据管理员组成。
通常会用数据库来表示我们使用的数据库软件,确切说数据库软件应该为数据库管理系统。
数据库应用程序(DataBase Application):虽然已经有了DBMS,但是在很多情况下,DBMS无法满足对数据管理的要求。数据库应用程序的使用可以满足对数据管理的更高要求,还可以使数据管理过程更加直观和友好。数据库应用程序负责与DBMS进行通信,访问和管理DBMS中存储的数据,允许用户插入、删除、修改DB中的数据。
表(Table):在关系数据库中,数据库表是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构。它由纵向的列和横向的行组成,行被称为记录,是组织数据的单位;列被称为字段,每一个列表示记录的一个属性,都有相应的描述信息,如数据类型、数据宽度等。数据表是由表名、表中的字段和表的记录三个部分组成的。设计数据表结构就是定义数据表文件名,确定数据表包含哪些字段,各字段的字段名、字段类型、及宽度,并将这些数据输入到计算机当中。一个数据库中数据库表名称唯一。
数据类型:数据类型决定了数据在计算机中的存储格式,代表不同的信息类型。常用的数据类型有:整数数据类型、浮点数数据类型、精确小数类型、二进制数据类型、日期/时间数据类型、字符串数据类型。
主键(PRIMARY KEY):又称主码,用于唯一地标识表中的每一行记录。可以定义表中的一列或多列为主键,主键不能为空值。主键约束:非空,唯一,被引用(外键),主键列的值不能为NULL,也不能重复!指定主键约束使用PRIMARY KEY关键字。
1.3 数据库技术构成
简单来说数据库由硬件和软件构成,硬件包括计算机、存储设备等。软件部分包括DBMS、支持DBMS运行的操作系统,以及支持多种语言进行应用开发的访问技术等。
1.3.1 数据库系统
数据库系统由一下三个部分构成:
l 数据库(Database)
l 数据库管理系统(Database Management System)
l 数据库应用程序(DataBase Application)
1.3.2 SQL语言
对数据库进行查询和修改操作的语言叫做SQL。SQL的含义是结构化查询语言(Structured Query Language)。
1.3.2.1 SQL分类
SQL有许多不同的类型,有3个主要的标准:
l ANSI(美国国家标准)SQL;
l SQL-99
l 各大数据库厂商提供的SQL标准,这些标准包括原始的ANSI SQL,并在此基础上进行了扩展,这些扩展我们称为该数据库的私有语句。
1.3.2.2 构成SQL的四部分
SQL语言包括以下四个部分:
l DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
l DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);
l DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
l DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
1.3.2.3 SQL语法要求
SQL语法要求
l SQL语句可以单行或多行书写,以分号结尾;
l 可以用空格和缩进来来增强语句的可读性;
l 关键字不区别大小写,建议使用大写;
1.3.3 数据库访问接口
不同的程序设计语言会有自己不同的数据库访问接口,执行SQL语句进行数据库管理。主要数据库接口有以下几部分:
1.3.3.1 ODBC
ODBC:开放式数据库互连(Open Database Connectivity),是微软公司推出的一种实现应用程序和关系数据库之间通讯的方法标准,是一个接口标准。所以它实际上是一种标准,符合标准的数据库就可以通过SQL语言编写的命令对数据库进行操作,但只能针对关系数据库进行操作(如SQL Server,Oracle,Access,Excel等),目前所有的关系数据库都符合该标准。ODBC本质上是一组数据库访问API(应用程序编程接口),由一组函数调用组成,核心是SQL语句。
一个基于ODBC的应用程序对数据库进行操作时,用户直接将SQL语句传送给ODBC,同时ODBC对数据库的操作也不依赖任何DBMS,不直接与DBMS打交道,它将所有的数据库操作由对应的DBMS的ODBC驱动程序完成,由对应DBMS的ODBC驱动程序对DBMS进行操作。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的关系数据库。 具体见图1所示。
在具体操作时,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。
不过直接使用ODBC API比较麻烦,所以微软后来又发展出来DAO、RDO、ADO这些数据库接口,使用这些数据库接口开发程序更容易。这些接口都支持ODBC,所以即使你所访问的数据库没有提供ADO的驱动,只要有ODBC驱动一样可以使用ADO进行访问。但由图2可以看出,ODBC实际上是一种相当底层的访问技术,因此它可以从底层设置和控制数据库,完成一些高级数据库技术无法完成的功能。
1.3.3.2 JDBC
Java Data Base Connectivity(Java数据库连接)用于Java应用程序连接数据库的标准方法,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
1.3.3.3 ADO.NET
ADO.NET是微软在.NET框架下开发设计的一组用于和数据源进行交互的面向对象类库。ADO.NET提供了对关系数据、XML和应用程序数据的访问,允许和不同类型的数据源以及数据库进行交互。
1.3.3.4 PDO
PDO(PHP Data Object)为PHP访问数据库定义了一个轻量级、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO是PHP5新加入的一个重大功能。
针对不同的程序语言,在数据库中提供了不同数据库访问连接驱动,我们可以在使用时具体根据语言下载相关驱动。
1.4 常见数据库
l Oracle:甲骨文;
l DB2:IBM;
l SQL Server:微软;
l Sybase:赛尔斯;
l MySQL:甲骨文;(Oracle收购SUN)
1.5 理解数据库
我们现在所说的数据库泛指关“关系型数据库管理系统(RDBMS - Relational database management system)”,即“数据库服务器”。
当我们安装了数据库服务器后,就可以在数据库服务器中创建数据库,每个数据库中还可以包含多张表。
数据库表就是一个多行多列的表格。在创建表时,需要指定表的列数,以及列名称,列类型等信息。而不用指定表格的行数,行数是没有上限的。下面是tab_student表的结构:
当把表格创建好了之后,就可以向表格中添加数据了。向表格添加数据是以行为单位的!下面是s_student表的记录:
s_id |
s_name |
s_age |
s_sex |
S_1001 |
zhangSan |
23 |
male |
S_1002 |
liSi |
32 |
female |
S_1003 |
wangWu |
44 |
male |
大家要学会区分什么是表结构,什么是表记录。
1.5.1 表结构
数据表是由表名、表中的字段和表的记录三个部分组成的。设计数据表结构就是定义数据表文件名,确定数据表包含哪些字段,各字段的字段名、字段类型、及宽度,并将这些数据输入到计算机当中。
1.6 应用程序与数据库
应用程序使用数据库完成对数据的存储!