1-1 数据库是什么
- 将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合称为数据库(Database, DB)
- 用来管理数据库的计算机系统称为数据库管理系统(Database Management System, DBMS)
- DBMS 主要通过**数据的保存格式(数据库的种类)**来进行分类,现阶段主要有以下5种类型:
- 层次数据库(Hierarchical Database, HDB)—— 把数据通过层次结构(树形结构)的方式表现出来
- 关系数据库(Relational Database, RDB)—— 采用由行和列组成的二维表来管理数据,同时使用专门的SQL(Structured Query Language,结构化查询语言)对数据进行操作;这种类型的DBMS称为关系数据库管理系统(Relational Database Management System, RDBMS),比较有代表性的RDBMS有如下5种:
- Oracle Database:甲骨文公司的RDBMS
- SQL Server:微软公司的RDBMS
- DB2: IBM公司的RDBMS
- PostgreSQL:开源的RDBMS
- MySQL:开源的RDBMS
- 面向对象数据库(Object Oriented Database, OODB)—— 把数据以及对数据的操作集合起来以对象为单位进行管理
- XML数据库(XML Database, XMLDB)—— 对XML形式的大量数据进行高速处理
- 键值存储系统(Key-Value Store, KVS)—— 用来保存查询所使用的主键(Key)和值(Value)的组合的数据库
1-2 数据库的结构
-
RDBMS的常见系统结构
-
使用RDBMS时,最常见的系统结构就是客户端/服务器类型(C/S类型) 这种结构
-
服务器指的是用来接收其他程序发出的请求,并对该请求进行相应处理的程序(软件),或是安装了此类程序的设备(计算机)。在计算机上持续执行处理,并等待接收下一条请求。RDBMS也是一种服务器,它能够从保存在硬盘上的数据库中读取数据并返回,还可以把数据变更为指定内容
-
客户端指的是向服务器发出请求的程序(软件),或者是安装了该程序的设备(计算机)。访问有RDBMS管理的数据库,进行数据读写的程序称为RDBMS客户端。RDBMS客户端将想要获取什么样的数据或者对哪些数据进行何种变更等信息通过SQL语句发送给RDBMS服务器。RDBMS根据该语句的内容返回所请求的数据,或者对存储在数据库中的数据进行更新
-
-
表的结构
-
用来管理数据的二维表在关系数据库中简称为表;
-
表存储在由RDBMS管理的数据库中,一个数据库中可以存储多个表
-
表的列(垂直方向)称为字段,它代表了保存在表中的数据项目;表的行(水平方向)称为记录,它相当于一条数据。关系数据库必须以行为单位进行数据读写。
-
1-3 SQL概要
-
SQL是为操作数据库而开发的语言
-
虽然SQL也有标准,但实际上根据RDBMS的不同SQL也不尽相同
-
SQL语句及其种类
SQL根据 操作目的(功能)可以分为以下三类:
- DDL (Data Definition Language,数据定义语言) 用来创建或者删除存储数据用的数据库以及数据库中的表等对象。DDL包含以下几种指令:
- CREATE:创建数据库和表等对象
- DROP:删除数据库和表等对象
- ALTER:修改数据库和表等对象的结构
- DML(Data Manipulation Language,数据操纵语言)用来查询或者变更表中的记录。DML包含以下几种指令:
- SELECT:查询表中的数据
- INSERT:向表中插入新数据
- UPDATE:更新表中的数据
- DELETE:删除表中的数据
- DCL(Data Control Language,数据控制语言)用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对RDBMS的用户是否有权限操作数据库中的对象(数据表等)进行设定。DCL包含以下几种指令:
- COMMIT:确认对数据库中的数据进行的变更
- ROLLBACK:取消对数据库中的数据进行的变更
- GRANT:赋予用户操作权限
- REVOKE:取消用户操作权限
- DDL (Data Definition Language,数据定义语言) 用来创建或者删除存储数据用的数据库以及数据库中的表等对象。DDL包含以下几种指令:
-
SQL的基本书写规则
- SQL不区分关键字的大小写
- 原则上SQL语句都会使用分号结尾
- 字符串和日期常数需要使用单引号括起来
1-4 表的创建
-
表通过CREATE TABLE 语句创建而成
-
表和列的命名要使用有意义的文字
-
指定列的数据类型(整数型、字符型和日期型等)
-
可以在表中设置约束(主键约束和NOT NULL约束)
-
数据库的创建
CREATE DATABASE 数据库名称
-
表的创建
例子:
-
命名规则:
- 只能使用 英文字母、数字和下划线 作为数据库、表和列的名称
- 名称必须以英文字母开头
- 在同一个数据库中不能创建两个相同名称的表,在同一个表中也不能创建两个名称相同的列。如果出现这种情况,RDBMS会返回错误信息
-
数据类型的指定:
- 所有的列都必须指定数据类型
- 数据类型表示数据的种类,包括数字型、字符型和日期型等,每一列都不能存储与该列数据类型不符的数据
-
约束的设置:
约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能
- NOT NULL约束——必须输入数据的约束
- 主键约束——主键就是可以特定一行数据的列
1-5 表的删除和更新
-
表的删除
DROP TABLE 表名 -- 注意:删除了的表是无法恢复的,所以在执行DROP TABLE语句之前请务必仔细确认
-
表定义的更新
-- 添加列 ALTER TABLE 表名 ADD COLUMN 列的定义 -- 例如: ALTER TABLE Product ADD COLUMN product_name VARCHAR(100); -- 删除列 ALTER TABLE 表名 DROP COLUMN 列名