首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库简单实现

所有应用软件之中,数据库可能是复杂。 MySQL手册有3000多页,PostgreSQL手册有2000多页,Oracle手册更是比它们相加还要厚。...但是,自己写一个简单数据库,做起来并不难。Reddit上面有一个帖子,只用了几百个字,就把原理讲清楚了。下面是我根据这个帖子整理内容。...对于数据库来说,每进入一层,就要从硬盘读取一次数据,这非常致命,因为硬盘读取时间远远大于数据处理时间,数据库读取硬盘次数越少越好。 B树是二叉查找树改进。...可以对姓名建立索引文件,该文件以B树格式姓名进行储存,每个姓名后面是其在数据库位置(即第几条记录)。查找姓名时候,先从索引中找到对应第几条记录,然后再从表格中读取。...(3)数据库事务(transaction)是指批量进行一系列数据库操作,只要有一步不成功,整个操作都不成功。所以需要有一个"操作日志",以便失败时操作进行回滚。 (4)备份机制:保存数据库副本。

88150

数据库简单实现

所有应用软件之中,数据库可能是复杂。 MySQL手册有3000多页,PostgreSQL手册有2000多页,Oracle手册更是比它们相加还要厚。...但是,自己写一个简单数据库,做起来并不难。Reddit上面有一个帖子,只用了几百个字,就把原理讲清楚了。下面是我根据这个帖子整理内容。...对于数据库来说,每进入一层,就要从硬盘读取一次数据,这非常致命,因为硬盘读取时间远远大于数据处理时间,数据库读取硬盘次数越少越好。 B树是二叉查找树改进。...可以对姓名建立索引文件,该文件以B树格式姓名进行储存,每个姓名后面是其在数据库位置(即第几条记录)。查找姓名时候,先从索引中找到对应第几条记录,然后再从表格中读取。...(3)数据库事务(transaction)是指批量进行一系列数据库操作,只要有一步不成功,整个操作都不成功。所以需要有一个"操作日志",以便失败时操作进行回滚。 (4)备份机制:保存数据库副本。

86560
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据库常见查询语句_数据库检索语句

    大家好,又见面了,我是你们朋友全栈君。...数据库常用查询语句(DQL) 基本查询 select 字段1, 字段2,…from 表名; 例如:select id , name from stu; 条件查询 select 字段1, 字段2,…from...,如果为true,执行then后语句, 如果when后条件为false,执行第二个when后条件 如果都为flase 执行else后语句 多表联查 1 联合查询-合并结果集 ​ union 将两表查询结果纵向连接...一一: 在任何一张表添加字段均可 ​ 一多:只能在多表添加字段 ​ 多多:定义中间表 连接方式: ​ 内连接: select * from 表1 inner join 表2 on 关联条件(过滤条件...right [outer] join 表2 on 表1.字段名 = 表2.字段名 ​ 注:会保留右表中不符合条件数据 ​ 注:会保留不满足条件数据 子查询 子查询就是嵌套查询.

    1.9K40

    数据库面试几个常见误区

    基础数据结构包括链表、哈希表、树等常见数据结构和相关算法,最好都能快速地自己实现,并了解每种数据结构特点。...最基本就是几种常见排序算法[1],弄清楚其时间复杂度和空间复杂度以及基本优缺点。另外一个初学者比较难理解就是基于树回溯算法,这个本质上是递归思想了解不透彻。...动态规划算法会比较难,通常不会考,即使考也只会考非常简单,比如基础版本 01 背包问题。 工程题目。...比如数据类型不确定时,我们可以假设是简单整形;又如文件数据格式不确定时,我们可以假设一行一个数据。 抽象出基本模块,先走通宏观思路。...也就是做项目时常用最小可用原型思想,将每个子问题(比如读写文件、排序等)模块化,使用简单实现、甚至暂时留白,从而专注主干逻辑搭建,迅速实现一个可用原型,尔后再跟面试官讨论,需要模块进行优化。

    15610

    数据库常见面试题

    总结: 所以,我们在设计数据库时候,就需要满足一定规范要求,而满足不同程度要求就是不同范式。 第一范式: 列不可分 1NF(第一范式)是属性具有原子性要求,不可再分,例如: ?...(1)底层数据结构是B+树: 在数据结构中,我们最为常见搜索结构就是二叉搜索树和AVL树(高度平衡二叉搜索树,为了提高二叉搜索树效率,减少树平均搜索长度)了。...悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性操作 悲观锁是一种利用数据库内部机制提供方式,也就是更新数据加锁,这样在并发期间一旦有一个事务持有了数据库记录锁,其他线程将不能再对数据进行更新了...主键(主码):数据库表中储存数据对象予以唯一和完整标识数据列或属性组合。一个数据列只能有一个主键,且主键取值不能缺失,即不能为空值(Null)。...from emp where sal in (1500,3000,800); ⒏SELECT子句中避免使用*号: 我们开始接触 SQL 时候,“*” 号是可以获取表中全部字段数据,但是它要通过查询数据字典完成

    98010

    常见数据库主键选取方式

    1、自动增长字段:   自动增长型字段允许我们在向数据库添加数据时,不考虑主键取值,记录插入后,数据库系统会自动为其分配一个值,确保绝对不会出现重复。...这是我们设置主键首选: innodb 中主键是聚簇索引,会把相邻主键数据放在相邻物理存储位置上。...如果主键不是自增,而是随机,那么频繁插入会使 innodb 频繁地移动磁盘块; 在innodb中,别的索引还都要包含主键值,因此建立索引时占用空间小; 利用数字,更容易比较排序。...缺点: 当我们需要在多个数据库间进行数据复制时,自动增长型字段可能造成数据合并时主键冲突。...)来作为主键,UUID算法核心思想是结合机器网卡、当地时间、一个随机数来生成UUID。

    1.5K00

    常见几大数据库

    【纪录片】中国数据库前世今生在数字化潮流席卷全球今天,数据库作为IT技术领域“活化石”,已成为数字经济时代不可或缺基础设施。那么,中国数据库技术发展经历了怎样历程?...《中国数据库前世今生》纪录片共分为五期,从1980年代数据库在中国起步,1990年代多家竞争混沌,2000年代数据库分型和国产数据库开端,2010年代大数据席卷市场,到2020年代国产数据库“...点此前往查看>>《中国数据库前世今生》今天,让我们一起踏上一段有趣旅程,探索中国几大常见数据库世界。别担心,我会用生活中例子,让这些看似复杂技术变得简单易懂。...OceanBase特点是:超高性能,就像一个运转高效智慧城市强大扩展性,就像一个能不断发展城市金融级可靠性,就像城市关键设施,保证7*24小时运转通过这些生活中例子,我希望你们中国几大数据库有了初步认识...OceanBase特点是:自动水平拆分只需在建表时候设定 shardkey,即支持对数据库中大表自动水平拆分(分表),系统将自动将写入数据均匀分布到不同物理分片中,查询也自动聚合返回;分表业务系统透明

    10610

    常见 NoSQL 数据库有哪些?

    前言今天我们来介绍一下工作开发中常见一些NoSQL数据库及其基本特点。欢迎在评论区留下文章中没有介绍且好用​NOSQL数据库。...与关系型数据库不同是非关系型数据库不使用传统表格和行列结构来存储数据,而是采用更灵活数据模型,例如键值、文档、列族、图形等形式。...适应多种数据类型:NoSQL数据库广泛支持不同数据模型,包括键值、文档型、列族型、图形型等,以满足不同应用场景需求。...键值数据库键值数据库是NoSQL数据库一种常见类型,它以键值(Key-Value)方式来存储和操作数据。...MemcachedMemcached是一种开源高性能分布式内存对象缓存系统,也是一种以键值形式存储数据NoSQL数据库

    48410

    oracle数据库安全测试

    是甲骨文公司一款关系数据库管理系统。它是在数据库领域一直处于领先地位产品。...可以说Oracle数据库系统是目前世界上流行关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好 适应高吞吐量数据库解决方案。...检测数据库端口是否开放 这个任务可以使用nmap来目标IP进行测试,也可以使用其他端口扫描工具,下面就以nmap为例,可以使用如下命令: nmap -Pn -n -T4 --open -p1521... 检查数据库版本信息 得到一个存活oracle数据库服务端口,了解数据库版本信息非常关键,针对不同版本会有不一样测试方式,有不同安全漏洞需要不同poc来其进行测试...、跟踪信息以及端口信息 获取数据库SID 连接oracle数据库不仅需要账号密码,而且还需要SID(SID是一个数据库唯一标识符!

    1.1K10

    Python mysql数据库操作

    Python mysql数据库操作 #!...,标准方法 commit()提交 rollback()回滚 cursor用来执行命令方法: callproc(self,procname,args):用来执行存储过程,接收参数为存储过程名和参数列表...,返回值为受影响行数 execute(self, query, args):执行单条sql语句,接收参数为sql语句本身和使用参数列表,返回值为受影响行数 executemany(self, query..., args):执行单挑sql语句,但是重复执行参数列表里参数,返回值为受影响行数 nextset(self):移动到下一个结果集 cursor用来接收返回值方法: fetchall(self):...接收全部返回结果行. fetchmany(self, size=None):接收size条返回结果行.如果size值大于返回结果行数量,则会返回cursor.arraysize条数据. fetchone

    1K10

    【底层原理】数据库简单实现

    作者:阮一峰 链接:http://www.ruanyifeng.com/blog/2014/07/ 所有应用软件之中,数据库可能是复杂。...MySQL手册有3000多页,PostgreSQL手册有2000多页,Oracle手册更是比它们相加还要厚。 但是,自己写一个简单数据库,做起来并不难。...对于数据库来说,每进入一层,就要从硬盘读取一次数据,这非常致命,因为硬盘读取时间远远大于数据处理时间,数据库读取硬盘次数越少越好。 B树是二叉查找树改进。...可以对姓名建立索引文件,该文件以B树格式姓名进行储存,每个姓名后面是其在数据库位置(即第几条记录)。查找姓名时候,先从索引中找到对应第几条记录,然后再从表格中读取。...3:数据库事务(transaction)是指批量进行一系列数据库操作,只要有一步不成功,整个操作都不成功。所以需要有一个"操作日志",以便失败时操作进行回滚。 4:备份机制:保存数据库副本。

    1.5K30

    数据库常见面试题及答案(数据库面试常见问题)

    它可以强化约束,来维护数据完整性和一致性,可以跟踪数据库操作从而不允许未经许可更新和变化。可以联级运算。如,某表上触发器上包含另一个表数据操作,而该操作又会导致该表触发器被触发。...游标:是查询出来结果集作为一个单元来有效处理。游标可以定在该单元中特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。...1.建索引 2.减少表之间关联 3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据 量大表排在前面 4.简化查询字段,没用字段不要,已经返回结果控制,尽量返回少量数据...UNION在进行表链接后会筛选掉重复记录,所以在表链接后会对所产生结果集进行排序运算,删除重复记录再返回结果。实际大部分应用中是不会产生重复记录,最常见是过程表与历史表UNION。...PL/SQL是Oracle数据库SQL语句扩展。

    4K10

    MySQL数据库常见名词对比

    摘要 MySQL 由于性能高、成本低、可靠性好,已经成为流行开源数据库,因此被广泛地应用在 Internet 上中小型网站中。...随着 MySQL 不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google 和 Facebook 等网站。非常流行开源软件组合 LAMP 中“M”指就是 MySQL。...Multi-Version Concurrency Control 多版本并发控制,MVCC 是一种并发控制方法,一般在数据库管理系统中,实现对数据库并发访问;在编程语言中实现事务内存。...无论存储 0,-1,1234567 占用空间是一致。...变长数据类型,随着存储数据有效位增加,而占用更多存储空间。 double:浮点数,精度丢失。

    1.5K30

    常见数据库有哪几种?

    大家好,又见面了,我是你们朋友全栈君。 数据库有两种类型,分别是关系型数据库与非关系型数据库。...SQLServer提供了XML和Internet标准支持,具有强大、灵活、基于Web应用程序管理功能。...而且界面友好、易于操作,深受广大用户喜爱,但它只能在Windows平台上运行,并操作系统稳定性要求较高,因此很难处理日益增长用户数量。 3....MongoDB数据库 MongoDB是由10gen公司开发一个介于关系数据库和非关系数据库之间产品,是非关系数据库当中功能丰富,最像关系数据库。...Sybase数据库 美国Sybase公司研制一种关系型数据库系统,是一种典型UNIX或WindowsNT平台上客户机/服务器环境下大型数据库系统。

    1.6K40

    数据库常见面试题大全

    如,某表上触发器上包含另一个表数据操作,而该操作又会导致该表触发器被触发。 2、什么是存储过程?用什么来调用?...游标:是查询出来结果集作为一个单元来有效处理。游标可以定在该单元中特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。...一般不使用游标,但是需要逐条处理数据时候,游标显得十分重要。 10、视图优缺点 优点: 1)对数据库访问,因为视图可以有选择性选取数据库一部分。...1.建索引 2.减少表之间关联 3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据 量大表排在前面 4.简化查询字段,没用字段不要,已经返回结果控制,尽量返回少量数据...UNION在进行表链接后会筛选掉重复记录,所以在表链接后会对所产生结果集进行排序运算,删除重复记录再返回结果。实际大部分应用中是不会产生重复记录,最常见是过程表与历史表UNION。

    1.4K40

    Hadoop与常见数据库区别

    想必在数据量情况少情况下我们首先想到时擅长于存储常见数据库如MySQL或者oracle,甚至我们可以将企业web Server,db Server都装载到一个服务中,但是随着时间或者公司成长数据库会越来越满...目前oracle虽然可以搭建集群 但是当数据量达到一定限度之后查询处理速度会变得很慢 且机器性能要求很高。...而不是专注于提高单台服务器性能 用键/值代替关系表 SQL 针对结构化查询语句 是结构化数据,hadoop针对是非结构化数据,文本形式 关系数据库是 有一定格式,而存放文本、图片和xml文件...,它并不适合那种几个记录随机读写在线事务处理模式。...同时在设计Hadoop时考虑大量数据存储和操作,虽然在小量数据上Hadoop可能不如RDMS,但是大量数据存储情况下,如HDFS可以存储超大文件,更新或修改大部分数据时MapReduce效率大于常见数据

    2.8K30

    thinkphp数据库操作常见问题

    1、thinkphp在查询数据库时候: $infoLists=M('user')->field('id,amount')->where('openid='....>find(); $infoLists=M('user')->field('id,amount')->where(array('openid'=>$openid))->find(); 上面两个语句执行结果是一样...,但是再特殊情况下二者会存在很大差距 上面 1、SQL语句有时报错$openid查询找不到数据,所以我一般用二这种方法,就不会出现这种问题了, 这只针对于字段比价长。...*,b.title') ->order($sortSql) ->where($where) ->select(); 4、对数据库中一条数据某个字段进行数学运算操作...$first_user_info['uid'])->setInc('money',$jl_price); setDec:值减; setInc:值增; 5、thinkphp后端查询数据库出来会把字段大写全部转为小写解决方案

    37830

    设计数据库常见规范

    避免使用MySQL保留字 不要外键关联,一般用代码维护 一般都选择INNODB存储引擎 选择合适字符集 如果数据库字段是枚举,就在comment注释清楚 时间类型选择 不建议使用存储过程,触发器...1:N关系设计 大字段 分库分表 命名规范 数据库表名,字段名,索引名等都要命名规范,可读性高 表名,字段名必须使用小写字母或者数字,禁止使用数字开头,禁止使用拼音,一般还不使用英文缩写 主键索引名为...否则设计表时候,如果有查询条件字段,一般就要加索引 索引使用注意事项: 索引不要建太多,一般单索引个数不要超过5个 去分度不高字段,不能加索引,如:性别 索引建立完成后,还是要避免索引失效情况...表情要用到 GBK:支持中文,但不支持国际通用字符集,2个字节长度 latin1:MySQL默认字符集,1个字节长度 如果数据库字段是枚举,就在comment注释清楚 时间类型选择 date:表示日期值...,把N:N修改为俩个1:N 大字段 当碰到很大数据时候,不建议直接把表字段设计为text类型,可以保存到mongodb中,然后,在业务表保存对应mongodbid即可 分库分表 分表:就是一个数据库分为多个表

    1.6K91

    数据库常见图形工具有哪些?

    疑惑一 MySQL常用图形化管理工具有哪些? 现在随着PHP+MySql越来越火,周边相关产品也受到众多人关注。在PC上修改数据库,查看数据库内容是研发人员常用操作。...下面就介绍几种常用MySql图形化管理工具: ? MySQL Workbench是一款专为MySQL设计ER/数据库建模工具。它是著名数据库设计工具DBDesigner4继任者。...你可以用MySQL Workbench设计和创建新数据库图示,建立数据库文档,以及进行复杂MySQL 迁移。...phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上MySQL数据库管理工具,让管理者可用Web接口管理MySQL数据库。...Navicat是一套快速、可靠并价格相宜数据库管理工具(现在有免费版),专为简化数据库管理及降低系统管理成本而设。它设计符合数据库管理员、开发人员及中小企业需要。

    2.5K90
    领券