菜鸟崛起 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 应用程序与数据库
应用程序使用数据库完成对数据的存储!
菜鸟崛起 DB Chapter 1 数据库概述的更多相关文章
- 菜鸟崛起 DB Chapter 2 MySQL 5.6的概述与安装
在上文菜鸟崛起 DB Chapter 1 数据库概述我们初步认识了数据库,也知道市面上常见的几种数据库,下面我们就针对常见的MySQL数据库展开对DataBase的探讨. 2.1 MySQL介绍 M ...
- 菜鸟崛起 DB Chapter 5 MySQL 5.6数据库表的基本操作
5 数据库表的基本操作 在数据库中,数据表是数据库中最重要.最基本的操作对象,是数据存储的基本单位.数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的.每一行代表一条唯一的记录,每一列代 ...
- 菜鸟崛起 DB Chapter 4 MySQL 5.6的数据库引擎
数据库存储引擎是数据库底层的软件组件,我们平常看不到,但是却与我们操作数据库息息相关.DBMS使用数据引擎进行创建.查询.更新和删除数据操作.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能 ...
- 菜鸟崛起 DB Chapter 3 MySQL 5.6的基本操作
3 MySQL的基本操作 上面我们学习一如何安装数据库,那么这节我们来认识一下数据库: 我们在MySQL安装后,在data目录下会自动生成几个必须的数据库,可以使用SHOW DATABASES语句 ...
- 第一章 数据库概述、MySQL的安装和配置
第一章 数据库概述.MySQL的安装和配置 1.为什么要使用数据库 最早是纸质文件来存储数据 缺点:不易保存,占用空间大 计算机出现以后,采用软件来进行保存(excel) 缺点:容易损坏 文件 ...
- python 全栈开发,Day60(MySQL的前戏,数据库概述,MySQL安装和基本管理,初识MySQL语句)
一.MySQL的前戏 在学习Mysql之前,我们先来想一下一开始做的登录注册案例,当时我们把用户的信息保存到一个文件中: #用户名 |密码 root|123321 alex|123123 上面文件内容 ...
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
- MySQL数据库(1)- 数据库概述、MySQL的安装与配置、初始SQL语句、MySQL创建用户和授权
一.数据库概述 1.什么是数据(Data) 描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字.图片,图像.声音.语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机. 在计 ...
- Python与数据库[0] -> 数据库概述
数据库概述 / Database Overview 1 关于SQL / About SQL 构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一 ...
随机推荐
- JavaScript数组常用操作总结
我们在日常开发过程中,使用到原生 JavaScript的时候,有时候会频繁的对数组进行操作,今天我把工作以来,经常用到的有关 JavaScript数组的方法总结一下,方便日后工作的时候查找使用! 一. ...
- 【学习笔记】实用类String的基本应用即常用方法
一.String类概述 在Java中,字符串被作为String类型的对象来处理. String类位于java.lang包中,默认情况下会自动导入到所有的程序中. 创建String对象的方法如下: St ...
- 微服务学习笔记二:Eureka服务注册发现
Eureka服务注册发现 服务发现:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移. 1. Service Discovery: Eureka S ...
- stark——快速过滤list_filter
一.获取过滤字段 1.给自定义配置类配置list_filter app01/stark.py: class BookConfig(ModelStark): list_display = [" ...
- Java NIO(四) Scatter/Gather
Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作.分散(sc ...
- wxPython控件学习之wx.grid.Grid 表格控件
wxPython控件学习之wx.grid.Grid (包括对GridCellEditor和GridCelRender的扩展,以支持更多的grid cell 样式, 以GridCellColorEdit ...
- PDF2SWF简单使用
最近在项目中遇到文档预览的需求,和PM商讨了几种解决方案,最终还是选中了转为SWF的方式.下面就稍微记录一下自己的学习成果. 工具:pdf2swf 下载地址:http://www.swftools.o ...
- ORACLE_PROCEDURE_DROPTABLE
WEBSITE:https://stackoverflow.com/questions/14564641/drop-a-table-in-a-procedure Qusetion:Hou to use ...
- 用AutoHotkey一键完成Xmind里的几个功能
F5一键添加超链接(类型为主题),常规步骤:Ctrl_h打开窗口,点击[主题],激活光标到输入框. Ctrl-i一键添加截取的图片,常规步骤是:打开画图→粘贴→保存图片为文件→Xmind里Ctrl-i ...
- sqlplus中设置在屏幕中上不打印出输出
在某些特定的情况下我们想在做某种实验,需要执行一段sql语句,但是不想在屏幕上打印出sql语句的结果(太长了)可以采用如下方式.1 把想要执行的语句写到一个sql脚本中,例如:[oracle@i ...