数据库基础 | 正在更新~

文章目录

  • 第一章 绪论
    • 1 数据库系统概述
      • 1.1 基本概念
      • 1.2 数据管理技术的发展
    • 2 数据模型
      • 2.1 数据模型的概念与两类数据模型
      • 2.2 概念模型
        • 2.2.1 常用的术语
        • 2.2.2 概念模型的一种表示方法:实体-联系图(E-R图)
      • 2.3 层次模型
      • 2.4 网状模型
      • 2.5 关系模型
    • 3 数据库系统结构
      • 3.1 数据库系统模式的基本概念
      • 3.2 数据库系统的三级模式结构
      • 3.3 数据库的二级映像
      • 3.4 SQL中的三级模式结构
  • 第二章 关系数据库
    • 1 关系数据库结构级形式化定义
    • 关系数据库的范式
      • 1NF、2NF、3NF
      • 关系型数据库的优点
      • 关系型数据库的缺点
    • 一个完整的数据库设计一般分为以下六个阶段
  • SQL
    • DDL 数据定义语言
      • 常用的数据类型
    • DML数据操纵语言
    • DCL数据控制语言
    • DQL 数据查询语言

第一章 绪论

1 数据库系统概述

1.1 基本概念

  • 数据:指的是所有能输入到计算机并被计算机程序处理的符号的介质的总称,用于输入计算机进行处理。

  • 数据类型:是一个值的集合。

  • 数据库系统DBS: 由数据库DB,数据库管理系统DBMS,应用软件,数据库管理员组成的存储、管理、处理、维护数据的系统。

  • 数据库DB: 存放数据的一个仓库。
    数据库的专业定义:数据库是长期存储在计算机内的、有组织的、可共享的数据集合。

  • 数据库管理系统DBMS:是位于用户和操作系统之间的数据管理软件。
    数据库管理系统是数据库系统的核心,如MySQL。
    数据库管理系统的核心是数据库(或数据)。
    数据库技术的根本目的是要解决数据共享问题。

  • 数据库在计算机系统中的地位:
    数据库基础 | 正在更新~_第1张图片

  • 数据库系统DBS包括数据库DB和数据库管理系统DBMS。
    数据库系统>数据库管理系统>数据库

1.2 数据管理技术的发展

  • 数据库技术是应数据管理任务的需要而产生的。
    数据管理则是指对数据进行分类、组织、编码、存储、检索和维护,它是数据处理的中心问题。
    数据的处理是指对各种数据进行收集、存储、加工和传播的一系列活动的总和。
  • 发展:
    人工管理 -> 文件管理 -> 数据库系统管理
    数据库基础 | 正在更新~_第2张图片

2 数据模型

  • 数据模型的三要素:数据结构、数据操作、数据约束
    数据库基础 | 正在更新~_第3张图片

2.1 数据模型的概念与两类数据模型

  • 数据模型是对现实世界数据特征的抽象。是用来描述数据、组织数据和对数据进行操作的。
  • 两类数据模型:概念模型、逻辑模型和物理模型。
    (1)概念模型:指的是在设计阶段,由设计员按照用户观点对数据和信息建模,实现对现实世界的概念抽象。
    (2)逻辑模型:包括网状、层次、关系和对象模型等。 由设计人员按照计算机观点建模实现概念模型到适应某DBMS的逻辑模型的转变。再由DBMS完成逻辑到物理模型的转变。
    (3)物理模型:是数据最底层的抽象,描述数据的存储结构和存取方法。
    数据库基础 | 正在更新~_第4张图片
    层次模型:采用的是树(二叉树)的结构来表达实体和实体间联系
    网状模型:采用的是
    的结构来表达实体和实体间联系
    对象模型:采用的面向对象的思想,用对象和其之间的联系来表达实体和实体间联系
    关系模型:采用的是二维表
  • 现实世界的数据化过程如图所示:
    数据库基础 | 正在更新~_第5张图片
    总共分为三个世界:现实世界、信息世界、数据世界。

2.2 概念模型

概念模型就是将现实的一些数据的信息抽象成概念。

2.2.1 常用的术语
  1. 实体:客观存在并且可以区分的具体事物或抽象概念。比如:一个学生、一个宿舍、一个操作流程等。
  2. 属性:就是特征,比如学生会有学号、姓名、成绩等,属性的具体内容就是属性值。
  3. 码(键):在实体型中,能唯一标识一个实体的属性或属性集称为实体的码。比如学生的学好就是学生这个实体的码,因为学号每个人都是不一样的,但名字就不能作为码了,因为可能会有重名的。
  4. 域:一个属性的取值范围被称为域。比如性别这个属性只有“男”或“女”这两个范围。
  5. 实体型:用实体名及其属性的集合来抽象和描述同类实体,称为实体型。比如学生(学号,姓名,成绩,年龄,性别,系)就是一个实体型,它描述的就是学生这一类实体。
  6. 实体集:所有属性名完全相同的实体集合在一起,称为实体集。比如所有学生、所有课程。
2.2.2 概念模型的一种表示方法:实体-联系图(E-R图)

E:Entity实体;R:Relationship联系。
E-R图是概念模型中的一种表现形式,E-R图主要包含三个概念,分别是:实体集、联系集和属性。
数据库基础 | 正在更新~_第6张图片

  1. 实体-联系图的表示方法
    数据库基础 | 正在更新~_第7张图片
    在这里插入图片描述

  2. 联系
    两个实体间的联系归纳为三类:
    (1)一对一(1:1)
    数据库基础 | 正在更新~_第8张图片

(2)一对多(1:N)和多对一(N:1)
数据库基础 | 正在更新~_第9张图片

(3)多对多(M:N)
比如:一个学生可以再多个教室上课,一个教室也可以容纳多个学生,因此联系表为:
数据库基础 | 正在更新~_第10张图片
3. 多元模型
表示两个以上实体集之间的联系,称为多元联系。一个实体可以关联多余两个的实体。比如:
数据库基础 | 正在更新~_第11张图片

2.3 层次模型

层次模型是数据库中最早出现的数据模型。层次模型的数据结构有如下特点:
(1)每棵树有且仅有一个节点没有父节点,该节点就是根节点;
(2)除根节点以外的其他节点有且仅有一个双亲节点;
(3)父子节点之间的联系是一对多(1:N)的联系。
数据库基础 | 正在更新~_第12张图片

2.4 网状模型

网状模型的特点:
(1)有一个以上的节点没有父节点;
(2)允许节点有多个父节点;
(3)允许两个节点之间有多种练习(复合联系)。
比如一个学生可以选多门课,一门课也可以有多个学生选择,网状图就如下:
学生 <——> 课程

2.5 关系模型

关系数据库系统采用的就是关系数据模型作为数据的组织方式。关系模型是建立在严格的数学概念的基础上的。
关系模型的数据结构是一张规范化的二维表,由表名、表头和表体三部分构成。
数据库基础 | 正在更新~_第13张图片

  1. 关系:一个关系就是一张表
  2. 元组:一行数据总称为一个元祖。
  3. 属性:每一列
  4. 码:某个属性能唯一标识关系中的各个元组
  5. 域:属性的取值范围
  6. 分量:一个元祖在一个属性上的值称为该元组在该属性上的分量。
  7. 关系模式
    (1)描述:关系名(属性1,属性2,…,属性n)
    (2)实例:学生(学号,姓名,成绩,年龄,性别,系)

3 数据库系统结构

3.1 数据库系统模式的基本概念

数据库系统中有记录型和记录值两个概念。记录型就是表头,记录值就是具体的值。
数据库基础 | 正在更新~_第14张图片
所谓的模式 就指的是记录型,它是数据库中全体数据的逻辑结构和特征描述,模式只关心描述,不关心具体的值。模式的一个具体的值称为一个实例或状态。

3.2 数据库系统的三级模式结构

  • 数据库系统的三级抽象模式包含:外模式、模式和内模式。 由美国国家标准学会ANSI划分的。
    对用户而言,这三级模式分别对应:一般用户模式、概念模式和物理模式,分别反映了看待数据库的三个角度。
    数据库基础 | 正在更新~_第15张图片
  1. 外模式。又称为子模式或用户模式。 外模式是三级结构的最外层,是数据库用户能看到并允许使用的那部分数据的逻辑结构和特征的描述,也是数据库用户的数据视图,即用户视图。外模式:可以理解为视图,逻辑结构
  2. 模式。也称为概念模式, 是数据库中全体数据的逻辑结构和特征描述。模式:可以理解为用户看到的表
    模式不存储数据,仅仅用来描述数据库的结构。在数据库系统中用数据库管理系统(DBMS)提供的数据库定义语言(DDL)来定义数据库的模式 。一个数据库只有一个模式。
  3. 内模式。也称为存储模式。 它既定义了数据库中全部数据的物理结构,还定义了数据存储的方法等。一个数据库只有一个内模式。内模式:物理结构和存储结构
  • 总结: 在数据库系统中,外模式可以有多个,而模式、内模式只能各有一个。 内模式是整个数据库实际存储的表示,而模式是整个数据库实际存储的抽象表示,外模式是逻辑模式的某一部分的抽象表示。
  • 三级模式的关系:
    模式是数据库的中心与关键;
    内模式依赖于模式;
    外模式面向具体的应用;
    应用程序依赖于外模式;

3.3 数据库的二级映像

为了能够在内部实现这三个抽象层次的联系和转换,DBMS在三级模式之间提供了二级映像功能。二级映像保证了数据库系统的数据独立性:逻辑独立性与物理独立性。

  1. 逻辑独立性。
    逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。 即,当数据的逻辑结构改变时,用户程序(外模式)也可以不变
    外模式/模式映像保证了数据和程序的逻辑独立性
  2. 物理独立性。
    物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。 即,数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。
    模式/内模式映像,保证了数据和程序的物理独立性

3.4 SQL中的三级模式结构

SQL中的关系也可以用三级模式来体现:

  • 视图:是外模式的基本单位
  • 基本表:是模式的基本内容
  • 存储文件:是内模式的基本单位
    数据库基础 | 正在更新~_第16张图片

第二章 关系数据库

数据库分为关系型数据库和不只是SQL的数据库(NoSQL泛指非关系型的数据库)。

  • 关系型数据库RDBMS:是基于二维表的形式,由关系代数这种数学理论来实现的数据库的管理。
  • 不仅仅是SQLNoSQL(Not Only SQL)——非关系型数据库:目的是解决大规模的数据结合,多重数据所带来的挑战,尤其是大数据等。
    数据库基础 | 正在更新~_第17张图片

1 关系数据库结构级形式化定义

关系型数据库的存储:表。
主码(主关键字):唯一确定一行记录的属性组。
表的一行是一条记录,对应一个对象的数据。

表设计问题:存在数据冗余,存在插入、更新和删除异常。
通过主键和外键来建立表之间的关系,适当的冗余有利于数据查询效率。

SQL(Structured Query Language):结构化语言,适用于访问和处理数据库的标准计算机语言。

  • DDL(数据定义语言):用来创建和定义数据库的各种管理对象,如建立,修改和删除数据库:CREATE,ALTER,DROP。
    定义数据的模式,有关的约束条件,物理存取的构建。
  • DML(数据操纵语言):实现对数据库数据的基本操作,数据的新增、更新和删除:INSERT,UPDATE,DELETE;
  • DQL(数据查询语言):用来获取数据:SELECT
  • DCL(数据控制语言):用来授予或者回收访问数据库的某种特权,并控制数据库操作事物发生的时间效果,对数据库进行实时监控,如GRANT,REVOKE,COMMIT,ROLLBACK等。
    数据库基础 | 正在更新~_第18张图片

关系数据库的范式

1NF、2NF、3NF

  • 1NF,表示属性是不可分割或拆分的。
  • 2NF,表示非主要的属性,必须完全依赖主要的属性,不能部分依赖。因此消除了非主属性对主属性的部分依赖就是2NF了
  • 3NF,表示非主属性不要依赖于其他非主属性。因此消除了非主键属性对主键属性的传递依赖就是3NF了
  • BCNF 满足3NF,消除每一属性对候选键的传递依赖
  • 说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

关系型数据库的优点

  • 保证了数据的一致性;
  • 通用的SQL语言是的操作关系型数据库方便;

关系型数据库的缺点

  • 需查询优化;
  • 读写性能较差;
  • 当为有数据更新的表做索引或对表结构进行变更时,性能差;
  • 不擅长对简单查询需要快速返回结果的处理、大量数据的写入处理;
  • 关系型数据库瓶颈:并发。 多个生产者应对一个消费者
  • 字段不固定时,数据处理麻烦;

一个完整的数据库设计一般分为以下六个阶段

需求分析:分析用户的需求,包括数据、功能和性能需求;
概念结构设计:主要采用E-R模型进行设计,包括画E-R图;
逻辑结构设计:通过将E-R图转换成表,实现从E-R模型到关系模型的转换;
数据库物理设计:主要是为所设计的数据库选择合适的存储结构和存取路径;
数据库的实施:包括编程、测试和试运行;
数据库运行与维护:系统的运行与数据库的日常维护。

SQL

DDL 数据定义语言

create
alter
drop
  1. 创建、删除、修改数据库
#在名为 testDatabase的数据库不存在时创建该库,这样可以避免报错。
create database if not exists testDatabase;
#删除数据库
delete database testDatabase;
#修改数据库的编码格式
alter tesstDatabase character set utf8;
  1. 创建、删除、修改表
#创建表
create table myTable(
id int primary key,
name varchar(5) not null,
age int default 18,
sex varchar(1)
);

#删除表
drop table myTable;

#修改表
-- 给表添加一列数据address
alter table myTable add(
address varchar(100);
-- 修改列类型
alter table myTable
modify sex char(2);
-- 修改列名字
alter table myTable
change age realAge char(2);
-- 删除列
alter table myTable
drop age;
-- 修改表名
alter table myTable
rename to Table;
)
  1. 创建、删除、修改索引
#alter创建普通索引
alter table 'myTable' add index ('age')
#create创建索引
-- 创建唯一索引
create unique index index1 on 'myTable' ('column1')
-- 创建普通索引
create index index2 on 'myTable' ('column2')
-- 创建多列索引
create index index3 on 'myTable' ('column1''column2')

#删除索引
-- 删除主键索引
alter table 'myTable' drop primary key
-- 删除普通索引或唯一索引
alter table  'myTable' drop index index2
-- 或
drop index index3 on 'myTable'

#查看索引
show index from myTable;
show keys from myTable;
  1. 创建、删除、修改视图
#创建视图
create or replace view myView as
select id,name
from table1
where 1=1

#删除视图
drop view myView;

#修改视图
alter view as 
(select * from table2 where 1=1)

常用的数据类型

  • int:整型
  • double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
  • decimal:泛型型(浮点型),在表单钱方面使用该类型,因为不会出现精度缺失问题;
  • char:固定长度字符串类型;长度默认255。
  • varchar:可变长度字符串类型;(65535)
  • text:字符串类型;
  • blob:字节类型;
  • date:日期类型,格式为:yyyy-MM-dd;
  • time:时间类型,格式为:hh:mm:ss
  • timestamp:时间戳类型;yyyy-MM-dd hh:mm:ss

DML数据操纵语言

  1. select从表/视图中检索数据

  2. update更改表中的数据

-- 将表中的所有age字段改成20
update myTable set age=20;

-- 将表中的age字段为20的全部改成0
update myTable set age=0
where age=20;

-- 修改表中id小于10的数据的age和gender的值为null
update myTable 
set age=null, gender=null
where id<10;
  1. delete从表中删除行
-- 删除表中id大于20的用户信息
delete from myTable where id>20;

-- 删除名字为王二狗的用户信息
delete from myTable where name='王二狗'

-- 删除表中的所有数据
delete from myTable;
  1. insert into增加数据行列表
-- 增加行数据
insert into myTable values(110, 'Tom', 18);
-- 把查询的结果插入到表中(前提是你查出的这几条数据与要插入的这个表的列字段顺序一致)
insert into myTable1(name, age) select name1, age1 from myTable2 where 1=1; 

DCL数据控制语言

  1. 用于规定数据库用户的各种权限
grant -- 授予权限
revoke -- 回收权限
  1. 数据库事务控制
commit -- 将更改写入磁盘
rollback -- 作废上次的更改

DQL 数据查询语言

select 
from 
where

你可能感兴趣的:(数据库,数据库,mysql)