来说数据库

news/2025/1/8 11:45:28 标签: oracle, 数据库

什么是数据库

是部署在操作系统上,把数据按一定的数据模型组织、永久存储,并可以被用户共享的软件系统。

其实数据库,可以理解为,把数据都存成文件,有很多的文件和很多的目录,不好管理,所以就存成类似于excel表格这样的形式,好检索,也好写入。然后还有删除和修改。

当然,这个知识表格形的数据库,也叫结构化的数据库,就是sql,是结构化查询语言。

还有其他非结构化的数据库,层次型、网状、面向对象、nosql、newsql这些。

数据库系统和数据库管理系统不是一回事。

数据库系统是DBS

数据库管理系统是DBMS

数据库系统就是存数据的

数据库管理系统,就是在数据库的基础上,加上一些用户权限管理、访问数据库系统的程序、性能监控、备份、调优这些功能的一套多功能系统。

数据库管理系统,是位于用户与操作系统之间的数据库管理软件。

DBMS是数据库和用户之间的接口

DBMS是数据库和程序之间的接口

事务(Transaction),是任务

事务由程序引起的。

其实还是得从英文单词本身来理解,这是一个什么,事务怎么听起来跟商务、事情的关系一样,光从字面意思来说,还是挺不好理解的。

Transaction,这个英文单词的词根和来源是。Trans,这是一个转变的意思,比如翻译,转换什么的,Transaction是这个转变的词的一个名词形式。所以Transaction就是转变,或者处理的意思。

一个Transaction就是一个转变,或者一个处理。

那么放到数据库这里就好理解了,DBMS数据库系统执行一次转变,或者一个处理,就是执行一个Transaction,那么说到这个东西的原子性,意思就是你不能说转变又不转变,又中间讲什么条件,又这又那的,说处理,就是处理,别又这么处理,那么不处理什么东西的。这个玩意就是Transaction的原子性,所谓原子性,就是就这样了,别分了,又这情况那说法的。Transaction的原子性,就是这个转变成功没,这个处理成功没,就行了,别整那些有的没的,一大堆。

存储过程是SQL的组合,对sql语句集进行封装,调用方便。是一组预编译的SQL语句和控制流语句的集合。存储在数据库中,可以通过名称调用执行。

其实这个存储过程又是翻译之后变得非常学术化,初学者很容易理解不了,而产生望难生畏的感觉。其实这个本身是Stored Procedure,平译过来,确实是存储和过程,这两个单词,但是存储和过程是什么关系呢?英文的意思其实很明确了,是Stored,不是store,这里的stored,是什么意思呢,是动词、名词、还是形容词、还是副词,用中文怎么说才是大白话容易理解的呢?这个stored,是一个形容词,所以形容词不是关键,关键是它形容了什么,所以关键是procedure这个词,这个词是过程的名词形式,也就是说,整个的意思是存储了的过程。这个过程是干嘛的?就是一大堆sql语句集合起来的,就是要干一件事情,需要很多个步骤,这很多个步骤总体来讲,就是干这一件事的过程,所以这个很多个步骤加起来,就叫一个过程。然后把这些常用的步骤封装起来,就是一个叫过程的东西了,就是procedure,那么stored procedure就是系统弄好的,整理好的,DBMS数据库管理系统安装的时候,开发者们都写好的,放在这个数据库管理系统里面的一些功能,这些功能就是存储好的过程,所以非常熟练之后,叫存储过程,那么专业人士和专业人士的对话就显得是高效的。但是不是非常熟练的从业人员,这么讲的时候,要么就是不懂,要么就是有点不懂装懂的感觉。存储过程,什么叫存储过程,是存数据的时候的过程吗,那取数据的时候叫什么过程呢,那么改和删数据的时候叫什么过程呢,所以单从中文的角度来讲,把stored procedure叫存储过程是容易引起歧义的,主要是,这是存数据的过程吗,还是存储好的操作数据库的过程。前者是动词加名词,总体是个名词,但是这个过程就不好理解,什么叫存数据的过程,这个过程就是个过程,怎么还能拿来调用呢,这不是一个名词么。但实际上,它是存储好了的,可以直接拿来调用的,干一系列事情的一些sql语句的组合,这些组合叫干一系列事情的一个procedure,这样就明白了。哦,跟函数一样,跟方法一样,跟模块一样,跟类一样。就是搞好的东西,现成的,可以拿来直接用的。哦,这就是stored procedure啊,就是系统里面已经存好的,一个把很多sql语句捏在一个的一个东西啊,叫procedure,哦,这样也是可以的。

一个数据库系统可以创建多个数据库,但客户端程序一次只能连接一个数据库

表空间

表空间是一个目录,可以存在多个。表空间允许在文件系统中定义数据库对象的存储位置。通过表空间可以指定各种物理文件。一个表空间可以被多个数据库使用,一个数据库可以使用多个表空间,数据库和表空间属于多对多的关系。数据库中管理的对象可以分布在多个表空间。

表空间可以占用磁盘的一部分,但不一定占满整个磁盘。一个磁盘可以包含多个表空间,而一个表空间也可以跨多个磁盘。

创建表空间时,可以指定其初始大小和增长方式(如自动扩展)。许多数据库系统支持表空间的动态扩展,也可以通过配置参数限制表空间的最大大小。

adm_tablespaces和adm_tables是gaussdb的系统视图。还可以查到表空间的物理路径。

SELECT spcname, spcoptions

FROM pg_tablespace

WHERE spcname = 'your_tablespace_name';

spcoptions是选项,看这个字段的autogrow是不是on的,是on,就是动态扩容的。SHOW TABLESPACE your_tablespace_name; 这个不知道版本支持不支持

再就是看数据库的配置文件中,有没有说是不是动态扩容的。

用户是具体的实体,角色是行为规范,一个用户可以属于一个或多个角色。角色是权限的载体,因此角色不具备登录数据库并执行SQL语句的能力。

创建分区表,就是把逻辑上的一张表根据某种方案分成几个物理块进行存储。这张逻辑上的表被称为分区表,物理块被称为分区。分区表是一张逻辑表,不存储数据,而数据实际是存储在分区上的。

索引有全局索引和本地索引,本地索引的数据存储在对应的分区中,与该分区的数据一起管理。

表空间中的每个分区及其索引文件通常存储在指定的物理路径下。可以通过查询adm_tablespaces视图来获取这些路径。

SELECT spcname, spclocation

FROM adm_tablespaces

WHERE spcname = 'your_tablespace_name';

分区表的查询链路,

数据库系统会根据查询条件确定需要访问哪些分区,并利用相应的本地索引来加速查询。根据分区键确定需要访问的分区。

若要把普通表转成分区表,就需要先新建分区表,然后把普通表中的数据导入新建分区表。

PRIMARY KEY,主键约束的作用是唯一地标识数据表中的每条记录,主键必须包含唯一的值且不能包含NULL值

每个表可以有多个UNIQUE约束,但只能有一个PRIMARY KEY约束。

SQL structured query language 结构化查询语言

DQL data query language 数据查询语言

DML data manipulation language 数据操作语言

DDL data definition language 数据定义语言

DCL data control language 数据控制语言

DTL data transaction language 数据转变处理(事务)语言

视图view:

视图是从一个或多个表(也可以是视图)中通过SQL语句创建的虚拟的表。系统的数据字典中仅存储视图的定义(即SQL语句),视图中不存储对应的数据。

视图view是查看表中数据的另外一种方式。

用户可以创建各种视图,在视图中存储不同的SQL查询,也可以通过访问视图随时运行并查看需要统计的数据。视图是从一个或多个实际表中获得的,这些表的数据存储在数据库中。产生视图的表称为该视图的基表。一个视图也可以从另一个视图中产生,通过视图看到的数据非常像数据库的物理表。由于视图不存储数据,因此当基表中的数据改变时,对应视图的调用结果也会随之改变。

视图可以简化用户对数据的操作。经常使用的查询被定义为视图,用户就不必在每次操作时都指定全部的查询条件。视图具有安全特性,用户通过视图只能查询和修改所看到的数据,数据库中的其他数据则不能被查看和操作。视图还可以把程序与数据相互独立,这是因为如果应用程序被建立在数据表上,当数据表发生变化时,应用程序也需要修改;但如果应用程序的访问接口建立在视图的基础上,就可以通过视图屏蔽表的变化,是数据表即使发生变化,通过修改视图的SQL语句也能使应用程序不作改变。

系统表(相对于用户表)和系统视图

数据库系统用户用于存储用户业务数据系统用于存储数据库自身私有数据也就是数据库数据系统表数据库系统运行控制信息来源包含DBMS安装信息DBMS运行各种查询进程信息数据各种对象定义结构信息存储系统因此系统表数据库系统核心组成部分有点linux操作系统内核文件怎么感觉对于DBS来说一切皆表格

系统视图提供查询系统访问数据库内部状态方法


http://www.niftyadmin.cn/n/5816278.html

相关文章

五种数据库的安装

在线YUM仓库 打开MySQL官网(MySQL) 点击【Downloads】进入下载界面 点击【MySQL Community(GPL) Downloads】进入社区版下载界面 点击【MySQL Yum Repository】进入在线仓库安装界面 点击【Download】下载 点击【No,thanks,just start my download】直…

深入Android架构(从线程到AIDL)_16 应用Android的UI框架03

目录 6、 设计一个GameLoop类别 7、 只诞生一次GameLoop对象​编辑 6、 设计一个GameLoop类别 刚才的小线程,其实就扮演了游戏线程(Game thread)的角色,它负责控制游戏的循环。 // myView.java //…… public class myView extends View {//……….Ov…

js:事件流

事件流 事件流是指事件完整执行过程中的流动路径 一个事件流需要经过两个阶段:捕获阶段,冒泡阶段 捕获阶段是在dom树里获取目标元素的过程,从大到小 冒泡阶段是获取以后回到开始,从小到大,像冒泡一样 实际开发中大…

Bi-Encoder vs. Cross-Encoder

Bi-Encoder vs. Cross-Encoder Bi-Encoder 和 Cross-Encoder 是两种常见的模型架构,主要用于自然语言处理(NLP)中的文本匹配、问答、检索等任务。它们的主要区别在于如何处理输入文本以及计算相似度的方式。 1. Bi-Encoder(双编…

近二百年历史传承,内藤酿造七醸烧用匠心打动中国市场

2025年1月5日,一场别开生面的蒸馏酒鉴赏会在上海隆重举行,标志着源自海外的蒸馏酒品牌——赏己七醸烧在中国市场的布局开启新的篇章。内藤酿造这家拥有近200年历史的综合性酒企,以其自主研发的御酵母、独特的七醸工艺、无与伦比的口感与中度白…

Linux Red Hat 7.9 Server安装Docker

1、安装必要的一些系统工具 sudo yum install -y yum-utils 2、添加软件源信息 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 3、安装Docker sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx…

ROS2+OpenCV综合应用--11. AprilTag标签码跟随

1. 简介 apriltag标签码追踪是在apriltag标签码识别的基础上,增加了小车车体运动的功能,控制车体从而使摄像头会保持标签码在视觉中间左右运动,在根据物体在摄像头成像近大远小的原理根据这一特性,从而实现标签码跟随功能。 2. 启…

【2025最新】网络安全攻防实战:护网行动经验与策略解析

博客内容多从网络搜集,结合个人学习进行总结,如有侵权请即时联系,立刻删除(〃‘▽’〃) 整理不易,虚心求教,欢迎各位大佬指导( • ̀ω•́ )✧ 护网行动基本介绍 什么护网行动护网经验分享攻防入侵路径红队攻击方式蓝…