本篇主要介绍关于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. Python数据库连接池DBUtils详解

    what's the DBUtils DBUtils 是一套用于管理数据库连接池的Python包,为高频度高并发的数据库访问提供更好的性能,可以自动管理连接对象的创建和释放.并允许对非线程安全的数据库 ...

  2. 判断命令test

    判断命令test一般用于脚本当中,可以简写为中括号[ ].其会对跟随的条件进行判断,一般可以分为数值判断.字符串判断和文件判断.语法格式为test [判断条件]或[ 判断条件 ],注意中括号[ ]与判 ...

  3. docker基本排错

    遇到了一个很奇葩的问题,docker运行一个容器后,执行docker ps -a可以查看到该容器处于运行状态,但是无法进入该容器. 试着使用docker stop ID和docker kill -s ...

  4. 【机器学习之二】python开发spark案例

    环境 spark-1.6 python3.5 一.wordcount # -*- coding:utf-8 -*- ''' Created on 2019年5月13日 @author: Adminis ...

  5. 【VS开发】VS2015没修改源文件也导致重新编译的解决办法

    在使用VS2010编译C++程序的时候,每次修改工程中的某一个文件,点击"生成-仅用于项目-仅生成**"时,往往都是整个工程都需要重新编译一遍.由于这个工程代码量太大,每次编译完成 ...

  6. C# 与 .NET Framework 对应关系

    C#各版本新增加功能(系列文章)   本系列文章主要整理并介绍 C# 各版本的新增功能. C# 8.0 C#8.0 于 2019年4月 随 .NET Framework 4.8 与 Visual St ...

  7. 面试必备的10道MySQL题

    MySQL 事务,是我们去面试中高级开发经常会被问到的问题,很多人虽然经常使用 MySQL,SQL 语句也写得很溜,但是面试的时候,被问到这些问题,总是不知从何说起.下面我们先来了解一下什么是 MyS ...

  8. SpringBoot常用注解(二)

    这是整个 web 工程的入口,也是与其他框架最大的不同之处.这里主要关注 @SpringBootApplication注解,它包括三个注解: @Configuration:表示将该类作用springb ...

  9. SQL死锁情况汇总排查

    select dbname,entity_name,count(1) as locks from (SELECT request_session_id AS spid, DB_NAME(resourc ...

  10. IP通信学习心得02

    1.7层模型 2.OSI的应用 3.如何辨别.数清冲突域和广播域 1)首先,须知第一层不能隔离冲突域和广播域.例如集线器或者直接连PC 2)其次,第二层可以隔离冲突域,但不能隔离广播域.例如,二层交换 ...