本篇主要介绍关于MySQL数据的基本知识,包括数据存储的变化,什么是MySQL以及其有什么优点、以及什么是RDBMS概念性知识等,以及关于MySQL语句的SOL的基本用法;

一、数据库

  数据库,顾名思义是用来存储数据的仓库,像以前的草绳记事、甲骨文,或者像现代的图书馆、文件管理系统等等都是数据储存的方式,但是面对海量数据,需要保证其稳定、无损、且能够快速的读取和写入数据,以前的数据存储方式显然很难再去满足这些需求,于是有了我们现在的数据库存储;

  那到底什么是数据库呢?

  其实数据库就是一堆特殊的文件,若仅仅是一堆文件躺在那里肯定是无法满足对海量数据的快速读取和写入,当然还有数据管理系统,准确来说,数据库是按照数据结构来组织、存储和管理数据的仓库。

  

  通常我们把数据库分为:关系型数据库 、 非关系型数据库。

  关系型数据库:关系型数据库通过外键关联来建立表与表之间的关系,即表与表、字段与字段之间存在找关联;

  非关系型数据库:非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定;

两者优缺点如下:

  可以参考博客    关系型数据库和非关系型数据库的特性以及各自的优缺点>>>

  本篇主要介绍关于关系型数据库的MySQL数据库;


二、什么是MySQL?

  MySQL是一种关系型数据库,其主要通过表结构来存储数据,每一个列称为一个字段,每一行称为一个记录,而每一个列的集合称为数据表,每一个表的集合称为数据库;其实其数据结构与Excel表格十分相识,例如:

  

  如上表所示:整个Excel文件就相当于一个MySQL数据库,而Excel表格相当于数据库的数据表,每个数据表示有一行行记录组成和一列列字段组成,整个数据库存储结构大致就是如此;


三、数据库管理系统 -DBMS/RDBMS

  那么仅仅有一个数据库的存储框架是无法实现对数据的管理、快速读取和写入的,还需要数据库管理系统,其实我们通常说的MySQL数据库通常包括了数据库文件和数据库管理系统,那么什么是数据库管理系统呢?

  

  DBMS  -- 数据库管理系统

  DBMS :即 DataBase Manager System,数据库管理系统,其本质上是一个应用程序,用来一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。可以理解为:Excel软件;

  RBMS --- 关系型数据库管理系统

  顾名思义,是用来操作和管理关系型数据库的大型软件;其是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据;

   

  RDBMS-client /RDBMS-server模型

  我们知道数据库是用来存储用户信息等数据的,而这些数据肯定不能是一成不变的,而数据库对于普通程序员而言是无法直接操作的,那么我们是怎么对数据库中的数据进行读写操作呢?

  其实程序员与数据库之间的通信也是通过C/S架构模型,即RDBMS-client客户端与RDBMS-server服务端模型进行通信交互的;与web浏览器和web服务端直接进行通信相相识的是,都需要基于TCP协议先建立连接,但是 web客户端与服务端进行通信是获取网页数据提取表单,但是MySQL客户端与服务端进行通信是通过命令修改或者添加服务端中的数据,而这两者之间进行通信交流也需要一种语言,而这种语言就是SOL语言,即通过SQL语言告诉服务端的数据库管理系统应该执行怎样的操作。即如下图图所示。

   

  RDBMS-client、RDBMS-serve、SQL、RDBMS、以及数据库文件之间的关系:

  即RDBMS-client客户端通过基于TCP协议与RDBMS-server服务端建立联系,使用SQL语言告诉RDBMS-server服务端上的数据库管理系统RDBMS对数据库文件进行怎样的操作;


四、SOL语言

  对于SOL语言是MySQL数据库客户端与服务端进行通信的一种交流方式,但是无论是客户端还是服务端都只是机器,他们无法像人类一样使用语言自由进行交流,故SOL语言有其可以让RDBMS可以认识的规则即语法。接下来我们学习关于SOL语言;

  例如:

-----刚学习数据库的操作流程进行举例吧-----

-- 连接数据库服务器
mysql -u username -p -- 创建数据库
create database information charser=utf8; -- 使用数据库
use information -- 创建数据表
create table students(
id int unsigned not null auto_increment primary key,
name varchar(20),
age tinyint unsigned default 18,
high decimal(5,2),
gender enum("male" , "female" , "other","保密") default "保密",
cls_id int unsigned default 0
);
-- 插入数据表记录
insert into students values(0,"alex",22,172.53,"male",443);

  简单了解一下数据类型,和约束,其他的我也不知道怎么介绍。

  数据类型:

 常用数据类型如下:

  • 整数:int,bit
  • 小数:decimal
  • 字符串:varchar,char
  • 日期时间: date, time, datetime
  • 枚举类型(enum)

 特别说明的类型如下:

  • decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位
  • char表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为'ab '
  • varchar表示可变长度的字符串,如varchar(3),填充'ab'时就会存储'ab'
  • 字符串text表示存储大文本,当字符大于4000时推荐使用
  • 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径

  约束:

  • 主键primary key:物理上存储的顺序
  • 非空not null:此字段不允许填写空值
  • 惟一unique:此字段的值不允许重复
  • 默认default:当不填写此值时会使用默认值,如果填写时以填写为准
  • 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
  • 说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加、修改、删除、查询)时,都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证呢?答:可以在逻辑层进行控制

  over ~~~ 下篇介绍SOL语句的语法,即怎么对数据库、数据表、数据表字段、数据表的记录进行操作~~~~~

一:MySQL系列之基本介绍(一)的更多相关文章

  1. mysql系列之多实例介绍

    介绍: mysql多实例,简单理解就是在一台服务器上,mysql服务开启多个不同的端口(如3306.3307),运行多个服务进程.这些 mysql 服务进程通过不同的 socket来监听不同的数据端口 ...

  2. 什么是blob,mysql blob大小配置介绍

    什么是blob,mysql blob大小配置介绍 作者: 字体:[增加 减小] 类型:转载   BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器.在计 ...

  3. 大并发大数量中的MYSQL瓶颈与NOSQL介绍

    NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面.今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于N ...

  4. MySQL系列(一)--基础知识大总结

    MySQL系列(一)---基础知识大总结 前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里只是作为简单的介绍,但是具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续 ...

  5. MySQL系列:高可用架构之MHA

    前言 从11年毕业到现在,工作也好些年头,入坑mysql也有近四年的时间,也捣鼓过像mongodb.redis.cassandra.neo4j等Nosql数据库.其实一直想写博客分享下工作上的零零碎碎 ...

  6. Mysql系列七:分库分表技术难题之分布式全局唯一id解决方案

    一.前言 在前面的文章Mysql系列四:数据库分库分表基础理论中,已经说过分库分表需要应对的技术难题有如下几个: 1. 分布式全局唯一id 2. 分片规则和策略 3. 跨分片技术问题 4. 跨分片事物 ...

  7. MySQL 系列(一)安装

    MySQL 系列(一)安装 以 Centos7 下安装 MySQL 5.6 为例. 一.环境准备 (1) 下载 下载地址: https://dev.mysql.com/get/Downloads/My ...

  8. MySQL 系列(二)Jdbc

    MySQL 系列(二)Jdbc 一.Jdbc 基本操作 import java.sql.Connection; import java.sql.DriverManager; import java.s ...

  9. Mysql系列 - 第3天:管理员必备技能(必须掌握)

    这是mysql系列第3篇文章. 环境:mysql5.7.25,cmd命令中进行演示. 在玩mysql的过程中,经常遇到有很多朋友在云上面玩mysql的时候,说我创建了一个用户为什么不能登录?为什么没有 ...

随机推荐

  1. <img>的title和Alt有什么区别?

    Alt是<img>的特有属性,是图片内容的等价描述,用于图片无法加载时显示,读屏器阅读图片. title 可提高图片高可访问性,除了纯装饰图片外都必须设置有意义的值,搜索引擎会重点分析.鼠 ...

  2. 泡泡一分钟:Teaching Robots to Draw

    Teaching Robots to Draw 教会机器人画画https://h2r.cs.brown.edu/wp-content/uploads/kotani19.pdf Atsunobu Kot ...

  3. PAT 甲级 1076 Forwards on Weibo (30分)(bfs较简单)

    1076 Forwards on Weibo (30分)   Weibo is known as the Chinese version of Twitter. One user on Weibo m ...

  4. IISExpress.无法启动IIS Express Web 服务器.Starting IIS Express... IIS Express is running

    x 提示: 无法启动IIS Express Web 服务器. 来自IIS Express的输出: Starting IIS Express... IIS Express is running 总结: ...

  5. 【linux学习笔记七】关机重启命令

    shutdown命令 shutdown [选项] 时间 #-c 取消前一个关机命令 #-h 关机(慎用远程关机) #-r 重启 其它关机命令 halt poweroff init 0  其它重启命令 ...

  6. vue强制刷新组件 ----组件重置到初始状态

    把一个组件重置到初始状态是一个常见的需求,推荐的做法有两种,一种是父组件重置子组件的 prop,另一种是子组件暴露一个重置的方法供父组件调用.但有些时候,子组件既没有提供重置的方法,也没提供 prop ...

  7. 错误:net::ERR_BLOCKED_BY_CLIENT

    提示net::ERR_BLOCKED_BY_CLIENT错误 解决办法: 当我们查看浏览器第三方插件的时候,就会看到插件中存在“广告过滤插件”,其实,报错的原因就是第三方广告过滤插件在捣鬼, 当你关闭 ...

  8. git删除远程.idea目录

    git删除远程.idea目录 1. 登录 Administrator@USER-20180708AB MINGW32 / (master) $ git config --global user.nam ...

  9. Quartus ii 设计中的差分信号在例化时的命名规则

    在Quartus中做设计,如果使用了差分信号的,如DDR的IP中的mem_ck与mem_ck_n,mem_dqs与mem_dqs_n,将其引入输出端口时,对其命名有一定的规则,否则就会出现错误. 如下 ...

  10. K8S+GitLab+.net core-自动化分布式部署-2

    K8S+GitLab-自动化分布式部署ASP.NET Core(二) ASP.NET Core DevOps K8S+GitLab-自动化分布式部署ASP.NET Core(二) ASP.NET Co ...