-- 第一章 数据库概述 -- 1.为什么要学习数据库 -- 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用,大多数情况下,特别是企业级应用 -- 数据持久化意味着将内存的数据保存到硬盘上加以"固化",而持久化的实现过程大多通过各种关系数据库来完成。 -- -- 持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储到磁盘文件,XML文件中
-- 2.数据库与数据库管理系统 -- DB:数据库(Database) -- 即存储数据的仓库,其本质就是一个文件系统,他保存了一系列有组织的数据 -- -- DBMS:数据库管理系统(Database Management System) -- 是一种用来操纵和管理数据库的大型软件,用于建立,管理和维护数据库,对数据库进行统一管理和控制。用户通过 -- 数据库管理系统访问数据库中表内数据。 -- -- SQL:结构化查询语言(Structured Query Language) -- 专门用来与数据库通信的语言 -- -- 2.2数据库与数据库管理系统系统的关系 -- 数据库管理系统(DBMS)可以管理多个数据库,一般开发人员针对每一个应用创建一个数据库,为保存应用中实体的数据, -- 一般都会在数据库中创建多个表,以保存程序中实体用户的数据。
-- 2.3常见的数据库管理系统排名(DBMS) -- 目前互联网上常见的数据库管理软件系统有Oracle ,MySQL,MS SQL Server,DB2,PostgreSQL,Access,Sybase,Informix这几种。 -- (查看数据库使用率的最新排名:https://db-engines.com/en/ranking) -- -- Oracle -- 1979年,Oracle2诞生,它是第一个商用的RDBMS(关系型数据库管理系统)。随着Oracle软件的名气越来越大,公司也改名为Oracle公司。 -- -- 2007年,总计85亿美金收购BEA SYSTEM -- -- 2009年,总计74亿美元收购SUN.此前的2008年,SUN以10亿美金收购MySQL.意味着Oracle同时拥有了MySQL的管理权,至此,Oracle在数据库领域 -- 拥有了绝对的领导力。 -- -- 2013年,甲骨文超越IBM,称为继miscrsoft之后,第二大的软件公司 -- -- 如今Oracle的年收入达到460亿美金,足以证明商用数据库软件的价值。 -- -- SQL Server -- SQL SERVER是微软开发的大型商用数据库,诞生于1989年。c#.net等语言常用,与WinNT完全集成,也可以很好地与Microsoft BackOffice产品集成 -- -- DB2 -- IBM公司的数据库产品,收费的。常应用于银行系统中。 -- -- PostgreSQL -- PostgreSQL 是稳定性能强,最符合SQL标准的,开放源代码,具备商用DBMS质量,PG对数据量大的文本以及SQL处理较快。 -- -- SyBASE -- 已经淡出了历史的舞台。提供了一个非常专业数据建模工具PowerDisigner -- -- SQLITE -- 嵌入式小型数据库,应用于手机端。零配置。SQLITE3不用安装,不用启动,关闭或配置数据库实例。当系统崩溃后不用做任何操作,再下次使用数据库时候自动恢复。
-- -- 3.mysql概述 -- 3.1 -- MySQL是一个开放源代码的关系型数据库管理系统,由瑞典的MySQL AB 公司于1995年开发,迅速成为开源数据库的NO 1 -- 2008年被SUN公司收购,2009年SUN公司被Oracle收购,mariadb应运而生。 -- -- MySQL6.0版本以后分为社区版本和商业版本 -- -- MySQL 是一种关系型数据库管理系统,将数据保存到不同的表中,而不是将所有数据放在一个大仓库中,这样就增加了速度并提供了灵活性。 -- -- MySQL是开源的,所以不用支付额外的费用 -- -- MySQL是可以定制的,采用GPL协议,你可以修改源代码来开发自己的MySQL系统。 -- -- MySQL支持大型的数据库,可以处理拥有上千万条记录的大型数据库系统 -- 支持5000万条的数据仓库,32位系统表文件最大可支持4GB,64位系统最大支持的表文件为8TB -- -- MySQL使用的是标准的SQL数据语言形式 -- -- MySQL可以运行在多个系统上,并支持多种语言。 -- -- 3.2MySQL发展的重大事件 -- MySQL的历史就是整个互联网的发展史,互联网业务从社交领域,电商,金融领域的发展,推动着对数据库应用的提升,同时对传统的数据系统服务能力提出了 -- 挑战。对传统的数据库服务能力提出了挑战。高并发,高性能,高可用,轻资源,易维护,易扩展的需求,促进了MySQL的长足发展。
-- 为什么如此多的互联网厂商都使用MySQL -- 1.开放源代码,使用成本低 -- 2.性能卓越,服务稳定 -- 3.软件体积小,使用简单,硬切易于维护 -- 4.历史悠久,社区用户非常活跃,遇到问题可以寻求帮助 -- 5.许多大厂都在用,经过了时间考验 --
-- -- 5.关系型数据库设计规则 -- 关系型数据库的典型数据结构就是数据表,这些数据表的组成都是结构化的 -- 将数据放到表中,表再放到库中 -- 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己,表明具有唯一性 -- 表具有一些特性,这些特性决定了数据在表汇总如何存储 -- -- 5.1表,记录,字段 -- E-R (entity -relationship,实体-联系)模型中有三个主要概念是,实体集,属性,联系集 -- 一个实体集(class)对应数据库中的一个表(table),一个实体(instance)则对应数据库表中的一行(row),也称为一条记录(recode)。 -- 一个属性(attribute)对应数据库表中的一列(column),也称为一个字段(field)。 -- -- 5.2表的关联关系 -- 表与表之间的数据记录有关系(relationship)。现实世界中的各种实体之间的各种联系均用关系模型来表示 -- 四种:一对一,一对多,多对多,自我引用
-- ORM思想(Object Relational Mapping )
-- 数据库中的一个表《----》java或Python中的一个类 -- 表中的一条数据《----》类中的一个对象(或实体)对应 -- 表中的一个列对应Java的一个字段(field)
-- 5.2.1一对一关联(one-to-one) -- 在实际的开发中应用不多,因为一对一可以创建成一张表 -- 举例设计学生表:学号,姓名,手机号码,班级,系别,身份证号码,家庭地址,籍贯,紧急联系人 -- 拆为两个表:两个表的记录是一一对应关系 -- 基础信息表:学号,姓名,手机号码,班级,系别 -- 档案信息表:学号,身份证号码,家庭住址,籍贯,紧急联系人 -- -- 两种建表原则: -- 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一 -- 外键是主键:主表的主键和从表的主键,形成主外关系 -- -- 5.2.2一对多(one-to-many) -- 常见实例场景:客户表和订单表,分类表和商品表,部门表和员工表
-- 5.2.3多对多(many-to-many) -- 要表示多对多关系,必须创建第三个表,该表通常为联接表,它将多对多关系划分为两个一对多关系,将这两个表的主键都插入到第三个表中 -- 学生信息表:一行代表一个学生信息 -- 课程信息表:一行代表一门课程信息 -- 选课信息表:一个学生可以选多门课,一门课可以被多个学生选择