数据库学习笔记
数据库基础知识整理与复习总结

数据库基础知识整理与复习总结关系型数据库MySQL1、数据库底层MySQL数据库的底层是B+树。
说到B+树,先说下B树,B树也叫多路平衡查找树,所有的叶⼦节点位于同⼀层,具有以下特点:1)⼀个节点可以容纳多个值;2)除⾮数据已满,不会增加新的层,B树追求最少的层数;3)⼦节点中的值与⽗节点的值有严格的⼤⼩对应关系。
⼀般来说,如果⽗节点有a个值,那么就有a+1个⼦节点;4)关键字集合分布在整棵树中;5)任何⼀个关键字出现且只出现在⼀个节点中;6)搜索可能在叶⼦结点结束,其搜索性能等价于在关键字全集做⼀次⼆分查找。
B+树是基于B树和叶⼦节点顺序访问指针进⾏实现,它具有B树的平衡性,并且通过顺序访问指针来提⾼区间查询的性能,⼀个叶⼦节点中的key从左⾄右⾮递减排列。
特点在于:1)⾮叶⼦节点中含有n个关键字,关键字不保存数据,只作为索引,所有数据都保存在叶⼦结点;2)有的叶⼦节点中包含了全部关键字的信息及只想这些关键字记录的指针,即叶⼦节点包含链表结构,能够⽅便进⾏区间查询;3)所有的⾮叶⼦结点可以看成是索引部分,节点中仅包含其⼦树中的最⼤(或最⼩)关键字;4)同⼀个数字会在不同节点中重复出现,根节点的最⼤元素就是B+树的最⼤元素。
MySQL中的InnoDB引擎是以主键ID为索引的数据存储引擎。
InnoDB通过B+树结构对ID建⽴索引,在叶⼦节点存储数据。
若建索引的字段不是主键ID,则对该字段建索引,然后再叶⼦节点中存储的是该记录的主键,然后通过主键索引找到对应的记录。
因为不再需要全表扫描,只需要对树进⾏搜索即可,所以查找速度很快,还可以⽤于排序和分组。
InnoDB和MyISAM引擎都是基于B+树,InnoDB是聚簇索引,数据域存放的是完整的数据记录;MyISAM是⾮聚簇索引,数据域存放的是数据记录的地址。
InnoDB⽀持表锁、⾏锁、间隙锁、外键以及事务,MyISAM仅⽀持表锁,同时不⽀持外键和事务。
InnoDB注重事务,MyISAM注重性能。
数据库系统概论读书笔记

⏹数据(Data)是数据库中存储的基本对象⏹数据的定义⏹描述事物的符号记录⏹数据的种类⏹文字、图形、图象、声音⏹数据的特点⏹数据与其语义是不可分的数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的大量数据集合⏹数据库的特征⏹数据按一定的数据模型组织、描述和储存⏹可为各种用户共享⏹冗余度较小⏹数据独立性较高⏹易扩展⏹数据库管理系统(Database Management System,简称DBMS)是位于用户与操作系统之间的一层数据管理软件。
⏹DBMS的用途⏹科学地组织和存储数据、高效地获取和维护数据DBMS的主要功能⏹数据库的运行管理保证数据的安全性、完整性、多用户对数据的并发使用发生故障后的系统恢复⏹数据库的建立和维护功能(实用程序)数据库数据批量装载数据库转储介质故障恢复数据库的重组织性能监视等数据库系统(Database System,简称DBS)是指在计算机系统中引入数据库后的系统构成。
⏹数据库系统的构成⏹由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(和用户)构成。
⏹数据管理⏹对数据进行分类、组织、编码、存储、检索和维护,是数据处理的中心问题数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。
⏹数据模型应满足三方面要求⏹能比较真实地模拟现实世界⏹容易为人所理解⏹便于在计算机上实现⏹数据模型分成两个不同的层次(1) 概念模型也称信息模型,它是按用户的观点来对数据和信息建模。
(2) 数据模型主要包括网状模型、层次模型、关系模型等,它是按计算机系统的观点对数据建模。
⏹客观对象的抽象过程---两步抽象⏹现实世界中的客观对象抽象为概念模型;⏹把概念模型转换为某一DBMS支持的数据模型。
⏹数据结构⏹对象类型的集合数据结构是对系统静态特性的描述⏹两类对象⏹与数据类型、内容、性质有关的对象⏹与数据之间联系有关的对象⏹数据操作⏹对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则⏹数据操作的类型⏹检索⏹更新(包括插入、删除、修改)⏹数据模型对操作的定义⏹操作的确切含义⏹操作符号⏹操作规则(如优先级)⏹实现操作的语言⏹数据操作是对系统动态特性的描述。
(完整版)数据库知识点整理(全)

UNIT 1四个基本概念1.数据(Data):数据库中存储的基本对象2.数据库的定义:数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的大量数据集合3.数据库管理系统(简称DBMS):位于用户与操作系统之间的一层数据管理软件(系统软件)。
用途:科学地组织和存储数据;高效地获取和维护数据主要功能: 数据定义功能; 数据操纵功能; 数据库的运行管理; 数据库的建立和维护功能(实用程序)4.数据库系统(Database System,简称DBS):指在计算机系统中引入数据库后的系统数据库系统的构成数据库数据库管理系统(及其开发工具)应用系统数据库管理员(DBA)和用户数据管理技术的发展过程人工管理阶段文件系统阶段数据库系统阶段数据库系统管理数据的特点如下(1) 数据共享性高、冗余少;(2) 数据结构化;(3) 数据独立性高;(4) 由DBMS进行统一的数据控制功能数据模型用来抽象、表示和处理现实世界中的数据和信息的工具。
通俗地讲数据模型就是现实世界数据的模拟。
数据模型三要素。
数据结构:是所研究的对象类型的集合,它是刻画一个数据模型性质最重要的方面;数据结构是对系统静态特性的描述数据操作:对数据库中数据允许执行的操作及有关的操作规则;对数据库中数据的操作主要有查询和更改(包括插入、修改、删除);数据操作是对系统动态特性的描述数据的约束条件:数据及其联系应该满足的条件限制E-R图实体:矩形框表示属性:椭圆形(或圆角矩形)表示联系:菱形表示组织层数据模型层次模型网状模型关系模型(用“二维表”来表示数据之间的联系)基本概念:●关系(Relation):一个关系对应通常说的一张表●元组(记录): 表中的一行●属性(字段):表中的一列,给每一个属性名称即属性名●分量:元组中的一个属性值,分量为最小单位,不可分●主码(Key):表中的某个属性组,它可以唯一确定一个元组。
●域(Domain):属性的取值范围。
数据库学习笔记

集成电路的发展到目前为止,依次经历了SSI,MSI,LSI,VLSI四个阶段。
微型计算机可采用不同的主振频率的CPU芯片。
叵现有芯片的主振频率为8MHZ,也就是说它的主振周期为0.125US,(主振周期=1/主振频率)若已知每个机器周期平均含有4个主振周期,该机的平均指令执行速度为0.8MI/S,那么该机的平均指令周期为1.25US,(平均指令周期=1/平均指令执行速度)平均每个指令周期含有2.5个机器周期(平均机器周期数=平均指令周期/平均机器周期)。
若改用主振周期为0.4US的CPU芯片,则计算机的平均指令执行速度为0.25MI/S(平均指令执行速度=1/平均指令周期=1/主振周期*平均机器周期含主振周期数*机器周期数)。
若要得到平均每秒40万次的指令执行速度,则应采用主振频率为4MHZ的CPU芯片。
(平均指令执行速度=1/{(1/主振频率)*主振周期数*机器周期数})单个磁头在向盘片的磁性涂层上写入数据时,是以串行方式写入的。
虚拟存储管理系统的基础是程序的局部性理论。
此理论的基本含义是程序执行时对主存的访问是不均匀的。
局部性有两种表现形式:时间局部性和空间局部性。
它们的意义分别为最近被访问的单元,很可能在不久的将来还要被访问和最近被访问的单位,很可能在它附近的单元还要被访问。
根据局部性理论,DENNING提出了工作集的理论。
设有四级流水线,分别完成取指、译码、运算、存数四步操作,各步时间依次为30ns\50ns,80ns 和100ns。
则流水线的操作周期应为100ns。
(取平均时间取决于流水线最慢的一步)每步操作时间依次为60、100、50、70 ns。
该流水线的操作周期应为100ns。
若有一小段程序需要用20条基本指令完成则得到第一条指令结果400ns,结果完成该段程序需2300 ns。
在流水线结构的计算机中,频繁执行条件转移指令时会严重影响机器的效率。
当有中断请求发生时,若采用不精确断点法,则将不仅影响中断响应时间,还影响程序的正确执行。
Oracle数据库学习笔记

Oracle数据库学习笔记Oracle数据库基础 orcale属于关系型数据库,适⽤于各类⼤,中,⼩,微机环境,是⼀种⾼效率、可靠性好的、适应⾼吞吐量的数据库⽅案。
学习,实验完全免费,商⽤需要⽀付相应费⽤。
Oracle 数据库包括数据库实例,和数据库,⼆者脱离谁都没有存在的价值。
实例是⽤来操作数据库的对象,数据库是⽤来存储数据使⽤的。
Oracle主要组件包含实例组件,数据库组件。
SGA(System Global Area)是Oracle Instance的基本组成部分,PGA(Process Global Area)是为每个连接到Oracle database的⽤户进程保留的内存。
每个实例只有⼀个SGA,所有的进程都能访SGA。
PGA是程序全局区,每个⼀个进程都⼀个PGA,PGA是私有的,只有对应进程才能访问对应的PGA。
数据库中包含:参数⽂件,⼝令⽂件,数据库⽂件,控制⽂件,⽇志⽂件以及归档⽇志⽂件。
Oracle实例进场包含⽤户进程,服务器进程和后台进程。
SGA:系统全局区 系统全局区包含共享池,数据缓冲区,⽇志缓冲区。
“共享池”:是对SQL,PL/SQL程序进⾏语法分析,编译,执⾏的内存区;由库缓存和数据字典缓存组成;其⼤⼩直接影响数据库性能。
“数据缓冲区”:临时存储从数据库读⼊的数据,所有⽤户共享,数据缓存区的⽬的是加快数据读写。
“⽇志缓冲区”:⽇志记录数据库所有修改信息,其先产⽣于⽇志缓冲区,当达到⼀定数量时,由后台进程将⽇志数据写到⽇志⽂件中。
PGA:程序全局区 PGA包含单个服务器进程所需要的数据和控制信息,在⽤户进程连接到数据库并创建⼀个会话时⾃动分配的,保存每个与数据库连接的⽤户进程所需要的信息。
PGA为⾮共享区,只能单个进程使⽤,当⼀个⽤户会话结束,PGA释放。
后台进程 后台进程中包含PMON(进程监视器(Process Monitor)),SMON(系统监视器(System Monitor)),DBWR(数据库书写器(Database Write)),LGWR(⽇志书写器(Log Write)),CKPT(检查点(Checkpoint)),以及其他。
《快速念咒:MySQL入门指南与进阶实战》笔记

《快速念咒:MySQL入门指南与进阶实战》阅读记录1. 第一章数据库基础在开始学习MySQL之前,了解一些数据库的基础知识是非常重要的。
数据库是一个用于存储和管理数据的计算机软件系统,它允许用户通过关键字或特定的查询语言来检索、更新和管理数据。
在数据库中,数据是以表格的形式进行组织的,每个表格都包含了一组相关的数据项,这些数据项被称为记录。
表(Table):表是数据库中存储数据的基本单位。
每个表都有一个唯一的名称,并由行(Row)和列(Column)组成。
每一行代表一个数据记录,每一列代表一个特定的数据属性。
字段(Field):字段是表中的一列,代表了数据的一种属性。
每个字段都有一个唯一的名称和一个数据类型,用于定义该字段可以存储的数据种类。
主键(Primary Key):主键是表中的一个特殊字段,用于唯一标识表中的每一行记录。
主键的值必须是唯一的,且不能为NULL。
外键(Foreign Key):外键是一个表中的字段,它的值引用了另一个表的主键值。
外键用于建立两个表之间的联系,确保引用完整性。
索引(Index):索引是一种数据库优化技术,用于提高查询性能。
通过创建索引,数据库可以更快地定位到表中的特定记录,而不必扫描整个表。
SQL(Structured Query Language):SQL是用于与数据库进行交互的编程语言。
它包括用于数据查询、插入、更新和删除的操作符和语法结构。
理解这些基本概念是学习MySQL的前提。
通过掌握SQL语言的基本语法和操作,你将能够有效地管理和操作数据库中的数据。
在接下来的章节中,我们将深入探讨MySQL的具体应用,包括如何创建和管理数据库、表、以及如何执行复杂的查询操作。
2. 第二章数据库设计《快速念咒:MySQL入门指南与进阶实战》是一本全面介绍MySQL 数据库的书籍,其中第二章详细阐述了数据库设计的基础知识和实践技巧。
在这一章节中,作者首先介绍了数据库设计的基本概念和目标,包括数据模型、实体关系模型(ER模型)等,并解释了如何通过这些模型来描述现实世界中的数据和业务逻辑。
【数据库学习笔记】什么是DBO?

【数据库学习笔记】什么是DBO?刚开始使⽤SQL server,对DBO不是很理解。
在⽹络上搜寻了⼀些他⼈的理解,现摘抄如下。
来源⽹址:我也上百度找了⼀下,有两个命案⽐较像。
1. dbo是⼀个构架(schema),在sql2005中,表的调⽤格式如下:"数据库名.构架名.表名",同⼀个⽤户可以被授权访问多个构架,也可以被禁⽌访问某个或多个构架,这就是2005中提倡的"⽤户与构架分离"的概念. 在2005中,如果在创建表时没有指定构架(schema),那么系统默认该表的构架是dbo,所以会出现很多表名前⾃动加上dbo.字符样式.2.DBO是每个数据库的默认⽤户,具有所有者权限,即DbOwner这两答案,看上去感觉是⼤致⼀样,却明显有差别,真是头痛,希望对SQL有多年了解的前辈们给解释或下⼀个定论,到底是“构架”还是“默认⽤户”?---------------------------------------------------------------------------------------------------------------------------dbo是默认⽤户也是架构,dbo作为架构是为了更好的与2000兼容,在2000中DataBaseName.dbo.TableName解释为:数据库名.⽤户名.表名,在2005中DataBaseName.dbo.TableName解释为:数据库名.架构名.表名,这样2000中的代码移植到2005中就不会报错(dbo在2005中是默认的架构,创建表时,如不指定架构,则默认为属于dbo为个架构)。
----------------------------------------------------------------------------------------------------------------------------------虽然 SQL Server 2000 包含 CREATE SCHEMA 语句,但实际上并不会像上⾯所定义的那样创建架构。
数据库原理笔记

数据库原理笔记数据库概念数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的⼤量数据的集合。
1. 数据库系统的特点数据结构化数据的共享性⾼,冗余度低,易扩充数据独⽴性⾼数据由DBMS统⼀管理和控制1. 两⼤类数据模型概念模型也称信息模型,它是按⽤户的观点来对数据和信息建模,⽤于数据库设计。
逻辑模型和物理模型,逻辑模型主要包括⽹状模型、层次模型、关系模型、⾯向对象模型等,按计算机系统的观点对数据建模,⽤于DBMS实现。
物理模型是对数据最底层的抽象,描述数据在系统内部的表⽰⽅式和存取⽅法,在磁盘或磁带上的存储⽅式和存取⽅法。
1. 关系数据库关系数据库系统采⽤关系模型作为数据的组织⽅式,在⽤户观点下,关系模型中数据的逻辑结构是⼀张⼆维表,它由⾏和列组成。
关系的每⼀个分量必须是⼀个不可分的数据项, 不允许表中还有表。
1. 数据库系统的三级模式结构模式(Schema)外模式(External Schema)内模式(Internal Schema)1. 关系模式关系模式可以形式化地表⽰为:R(U,D,DOM,F)R 关系名U 组成该关系的属性名集合D 属性组U中属性所来⾃的域DOM 属性向域的映象集合F 属性间的数据依赖关系集合1. 实体完整性规则(Entity Integrity)若属性A是基本关系R的主属性,则属性A不能取空值;关系模型中以主码作为唯⼀性标识。
1. 参照完整性规则若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不⼀定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值1. 关系代数运算符关系数据库标准语⾔SQLSQL(Structured Query Language)结构化查询语⾔,是关系数据库的标准语⾔。
集数据定义语⾔(DDL),数据操纵语⾔(DML),数据控制语⾔(DCL)功能于⼀体。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库学习笔记
图形化界(Navicate Premium)面操作数据库
1、工具---->命令行操作
2、选中某个表对象--->右击---->逆向表到模型---生成各表的关系模型
3、选中某个表对象-->右击-->对象信息--->DDL查看创建表的信息
Sql语言集数据定义语言,数据操纵语言,数据查询语言,数据控制语言于一体,可以完成数据库生命周期中的全部工作。
数据定义语言:完成创建,修改或删除数据库中的各种对象有create,drop,alter的命令。
数据查询语言:按各种条件查询数据库中的数据有select及其相关命令。
数据操纵语言:对已经从在的数据库对其进行数据的插入,删除和修改有insert,update,delete命令。
数据库控制语言:用于授权或收回访问数据库的某种特权,控制数据操纵事物的发生时间及效果,对数据库进行监视。
有grant,revoke,commit,rollback等命令。
一、数据库操作
1、启动数据库:net start mysql
2、关闭数据库:net stop mysql
3、打开数据库:mysql -u root -p123
4、显示所有数据库:show databases;
5、创建数据库:create database mydb1;
6、删除数据库:drop database mydb1;
二、单表操作:
1、选择并使用数据库:use mydb1
2、创建表:(宠物表)
宠物表:id名字、主人、种类,性别、出生和死亡日期。
create table pet(
id int primary key,
name varchar(20),
owner varchar(20),
species varchar(20),
sex char(1),
birth date,
death date
);
3、插入数据:
insert into pet values(1,’ergou’,’zx’,’dog’,’f’,’2013-09-06’ null);
4、查询所有内容
select * from pet;
5、删除一条数据:
delete from pet where id=1;
6、修改数据中的内容:
update pet set birth=’2015-09-09’ where name=’huahua’;
7、选择特殊行:
select * from pet where species=’dog’;
select * from pet where species=’dog’and sex=’f’;
select * from pet where species=’dog’ or ‘cat’;
select * from pet where birth>’2016-09-01’ and birth<’2014-09-09’; select * from pet where (species=’dog’and sex=’f’)or(species=’cat’and sex=’m’);
select * from pet where sex<>’f’;
select * from pet where sex!=’f’;
8、选择特殊列:
select name,species,birth from pet where species=’dog’ or species= ’cat’;
9、排序查询:order by
select name,birth from pet order by birth;
select name,birth from pet order by birth desc;
10、分组查询group by
select speices,sex from pet group by species,sex;
11、模糊查询:
select * from pet where owner like’z%’;
select * from pet where name like’%b’;
select * from pet where name like’%b%’;
12、计数行
select count(*) from pet;
select species,sex,count(*)from pet group by species,sex;
13、像表中添加一列:
alter table event add sex varchar(20);
14、删除表中一列:
alter table event drop sex;
15、修改表名:
rename table A to B;
学生表student
学号(sno)、姓名(sname)、性别(ssex)、年龄(sage)、所在系(sdept)student(sno,sname,ssex,sage,sdept)
主键:sno
课程表course
课程号(cno)课程名(cname)任课老师姓名(teacher)学分(credit)course(cno,cname,teacher,credit)
主键cno
学生选课表sc
学生号(sno)课程号(cno)成绩(geade)
sc(sno,cno,grade)
主键(sno,cno)外键(sno,cno)
教师表teacher
教师号(tno)姓名(tname)性别(tsex)年龄(tage)职称(title)工资(tsalary)奖金(tcomm)所在系(tdept)
teacher(tno,tname,tsex,tage,title,tsalary,tcomm,tdept)
主键:tno
教师授课表tc
教师号(tno)课程号(cno)
tc(tno,cno)
主键(tno,cno)外键(tno,cno)
部门信息表dept
部门号(deptno)、部门名称(dname)、部门地点(loc)
dept(deptno,dname,loc)
主键(deptno)
雇员信息表empt
雇员编号(empno)雇员姓名(ename)工作(job)经理编号(mgr)工资(sal)奖金(comm)雇佣日期(hiredate)部门号(deptno)emp(empno,ename,job,mgr,sal,comm,hiredate,dephno)
主键empno
外键deptno
工资等级表salgrade
等级号(grade)最低工资(lowsal)最高工资(highsal)
salgrade(grade,lowsal,highsal)
部门信息表dept
部门号(deptno)、部门名称(dname)部门地点(loc)
主键deptno
创建表:
例:创建学生选课表sc
CREATE TABLE `sc` (
`sno` char(8) NOT NULL,
`cno` char(8) NOT NULL,
`grade` int(11) DEFAULT NULL,
PRIMARY KEY (`sno`,`cno`),
KEY `cno_fk` (`cno`),
CONSTRAINT `cno_fk` FOREIGN KEY (`cno`) REFERENCES `course` (`cno`), CONSTRAINT `sno_fk` FOREIGN KEY (`sno`) REFERENCES `student` (`sno`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
添加主键:PRIMARY KEY (`sno`,`cno`),
添加外键:KEY `cno_fk` (`cno`),
关联主外建:
CONSTRAINT `cno_fk` FOREIGN KEY (`cno`) REFERENCES `course` (`cno`), CONSTRAINT `sno_fk` FOREIGN KEY (`sno`) REFERENCES `student` (`sno`) 单表查询:
1、查询全体学生的学号、姓名、性别
select sno,sname,ssex from student;
2、查询学校所开全部课程的课程名和学分
select cname,credit from course;。