什么是数据库

概述

数据库(Database)是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小冗余度和较高的数据独立性。数据库管理系统DBMS(Database Management System)在数据库建立、使用和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复。

分类

数据库分为关系型数据库和非关系型数据库。

  • 关系型数据库(RDBMS:Relational Database Management System):这种类型的数据库是最古老的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。它以行(row)和列(column)的形式存储数据,以便于用户理解,存储的格式可以直观地反映实体间的关系。而SQL就是关系型数据库的查询语言。常见的关系型数据库有MySQL、SQL Server、DB2、Oracle)等。
  • 非关系型数据库(非RDBMS/NoSQL:Not Only SQL):指的是分布式的、非关系型的、不保证遵循ACID原则的数据存储系统。它基于键值对存储数据,不需要经过SQL层的解析,性能非常高。NoSQL数据库如MongoDB、Redis、Memcache、HBase出于简化数据库结构、避免冗余、影响性能的表连接、摒弃复杂分布式的目的被设计。

SQL

结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

SQL语言主要分为:

  • DQL(Data Query Language):数据查询语言,用于从表中取得数据。例如:select
  • DML(Data Manipulation Language):数据操作语言,用于对数据进行增加、修改、删除。例如:insert、udpate、delete
  • DDL(Data Definition Language):数据定义语言,用于在数据库中创建新表或修改、删除表,为表加入索引等。例如create、alter、drop
  • TPL:事务处理语言,对事务进行处理。例如:begin transaction、commit、savepoint、rollback
  • DCL:数据控制语言,实现权限控制。例如:grant、revoke
  • CCL:指针控制语言,用于对一个或多个表单独行的操作。例如:declare cursor(申明游标)、fetch info(进入)、update where current(更新当前位置)

数据库常用对象

  • 表(Table):表是数据库存储的逻辑单元,以行和列的形式存在;列是字段,行就是一条数据记录。
  • 视图(View):一个或多个数据表里的数据的逻辑显示,视图就是一张虚拟的表,并不真正存储数据。
  • 图表/数据库关系图(Database Diagram):护具库关系图,也称图表,利用图表可以编辑表与表之间的关系以及表的行列属性。
  • 默认值(Default):默认值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。
  • 规则(Rule):规则是对数据库表中数据信息的限制,其限定的是表的列。
  • 约束(Constraint):执行数据检验规则,用于保证数据完整性的规则。
  • 索引(Index):用于提高查询性能,相当于书的目录。
  • 函数(Function):用于完成一个特定的计算,具有返回值和参数。
  • 存储过程(Stored Procedure):完成某项完整的业务处理,没有返回值,但可通过传出参数将多个值传个调用环境。
  • 触发器(Trigger):相当于一个事件的监听器,当数据库发生特定的事件后,触发器被触发,完成响应处理。
  • 用户(User):用户是有权限访问数据库的使用者,同时需要自己输入登录账号和密码。一般来说,数据库用户分为管理员用户和普通用户,前者可对数据库进行各种操作,后者只能进行阅读、查看等操作。

什么是MySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品。MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般网站软件的开发都选择 MySQL 作为网站数据库。

MySQL基本架构

MySQL的逻辑架构图如下:

MySQL的优势

  • 使用C和C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。

  • MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。

  • MySQL是可以定制的,采用了GPL(GNU General Public License)协议,你可以修改源码来开发自己的MySQL系统。

  • MySQL是一种关联数据库管理系统,它将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并调高了灵活性。

  • MySQL使用标准的SQL数据语言形式。

  • MySQL可以允许运行在多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP和Ruby等

MySQL学习(1)---MySQL概述的更多相关文章

  1. MySQL学习笔记-MySQL体系结构总览

    MySQL体系结构总览 不管是用哪种数据库,了解数据库的体系结构都是极为重要的.MySQL体系结构主要由数据库和数据库实例构成. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件 ...

  2. MySQL学习(4)---MySQL索引

    ps:没有特殊说明,此随笔中默认采用innoDB存储引擎中的索引,且索引都是指B+树(多路平衡搜索树)结构组织的索引.其中聚集索引.复合索引.前缀索引.唯一索引默认都是使用B+树,统称为索引. 索引概 ...

  3. 我的MYSQL学习心得 mysql的权限管理

    这一篇<我的MYSQL学习心得(十三)>将会讲解MYSQL的用户管理 在mysql数据库中,有mysql_install_db脚本初始化权限表,存储权限的表有: 1.user表 2.db表 ...

  4. 我的MYSQL学习心得 mysql日志

    这一篇<我的MYSQL学习心得(十五)>将会讲解MYSQL的日志 MYSQL里的日志主要分为4类,使用这些日志文件,可以查看MYSQL内部发生的事情. 分别是 1.错误日志:记录mysql ...

  5. MySQL学习11 - MySQL创建用户和授权

    权限管理 权限管理 我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作.包括select.update.delete.update.grant等操作.那么一般情况在公司之后DBA工程师 ...

  6. MySQL学习笔记——MySQL启动过程(一)

    首先去官网或者github下载MySQL5.7的源码. 官网地址:https://dev.mysql.com/downloads/mysql/ github地址:https://github.com/ ...

  7. MySQL学习(3)---MySQL常用命令

    ps:此随笔基于mysql 5.7.*版本. 准备 net start mysql 启动MySQL服务 net stop mysql 关闭MySQL服务 mysql [-h<IP地址>] ...

  8. MySQL学习(一): MySQL的初步操作与命令

    启动与关闭: 用管理员身份运行cmd 启动:net start mysql57 其中mysql57是我的MySQL名称,版本不同名称可能不一样 关闭:net stop mysql57 与上面同理 登录 ...

  9. mysql学习(2)-MySQL服务器优化

    调优思路: 1.数据库设计与规划--以后再修该很麻烦,估计数据量,使用什么存储引擎 2.数据的应用--怎样取数据,sql语句的优化 3.mysql服务优化--内存的使用,磁盘的使用 4.操作系统的优化 ...

随机推荐

  1. 关于(Java)方法的再认识

    1.方法的调用(图中两个方法在一个包中) 2.静态与非静态 两个非静态可以调用 但是静态不可以同时调用非静态 package com.oop;public class Way02 { public s ...

  2. 什么新东西值得学「GitHub 热点速览 v.22.29」

    上周 18k+ 的项目 bun 这周又获得 7k+ star,是时候了解下它背后的编程语言 zig 了,它并不是一门新的语言,伴随着 bun 的风靡,zig 本周也上了 GitHub 热榜.同样,可以 ...

  3. Codeforces Round #768 (Div. 2) D. Range and Partition // 思维 + 贪心 + 二分查找

    The link to problem:Problem - D - Codeforces   D. Range and Partition  time limit per test: 2 second ...

  4. python3学习笔记之字符串

    字符串 1.一个个字符组成的有序的序列,是字符的集合: 2.使用单引号.双引号.三引号引住的字符序列 3.字符串是不可变对象 4.python3起,字符串就是Unicode类型: 字符串特殊举例: 不 ...

  5. 「游戏引擎 浅入浅出」4.1 Unity Shader和OpenGL Shader

    「游戏引擎 浅入浅出」从零编写游戏引擎教程,是一本开源电子书,PDF/随书代码/资源下载: https://github.com/ThisisGame/cpp-game-engine-book 4.1 ...

  6. 用虚拟机封装win10系统的一些记录

    想用虚拟机封装一个WIN10企业LTSC,期间参考了IT天空小鱼儿的几大步骤一直到手动优化完,后面就自己用系统安装直接备份了一个.gho镜像.期间出过好多毛病,不过总算是成功实现了.注意点: 1.前面 ...

  7. 技术分享 | Update更新慢、死锁等问题的排查思路分享

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 一.简介 在开始排错之前我们需要知道 Update 在 MySQL 中的生命周期 ...

  8. C#/VB.NET 将PDF转为PDF/X-1a:2001

    PDF/X-1a是一种PDF文件规范标准,在制作.使用PDF以及印刷时所需要遵循的技术条件,属于PDF/X-1标准下的一个子标准. PDF/X-1标准有由CGATS于1999年制定的PDF/X-1:1 ...

  9. HDFS的读写流程——宏观与微观

    HDFS的读写流程--宏观与微观 HDFS:分布式文件系统,负责存放数据 分布式文件系统:就是将我们的数据放到多台电脑上存储. 写数据:就是将客户端上的数据上传到HDFS 宏观过程 客户端向HDFS发 ...

  10. 第三十二篇:vue的响应式原理

    好家伙 什么是响应式?比较官方的回答: Vue.js 的核心包括一套"响应式系统". "响应式",是指当数据改变后,Vue 会通知到使用该数据的代码. 例如,视 ...