本篇主要介绍关于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. null undefined NaN

    数据类型 6大基本 Number  String Boolean Undefined Null.  Symbol (ES6)   3大引用类型 object array Function Regexp ...

  2. 几种常见的java网页静态化技术对比

    名称 优点 缺点 使用场景 jsp 1.功能强大,可以写java代码 2.支持jsp标签(jsp tag) 3.支持表达式语言(el) 4.官方标准,用户群广,丰富的第三方jsp标签库 5.性能良好. ...

  3. 【SSH进阶之路】Hibernate映射——一对多关联映射(七)

    上上篇博文[SSH进阶之路]Hibernate映射——一对一单向关联映射(五),我们介绍了一对一的单向关联映射,单向是指只能从人(Person)这端加载身份证端(IdCard),但是反过来,不能从身份 ...

  4. consul多数据中心搭建 【h】

    自建IDC后面简称own.阿里云机房ali.腾讯云机房txown机房:内网10.10.10.0/24,边界节点,10.10.10.100/101.xxx.80.xxxali机房:内网10.10.10. ...

  5. mongoDB主从和集群

    主从(windows下的配置) 主服务器设置 mongod --dbpath=F:\mongoDB\db --master \\dbpath是设定数据存放路径 --master是指定为主库 从服务器设 ...

  6. Docker中安装mysql

    1.docker 中下载 mysql docker pull mysql 2.启动 docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PA ...

  7. [05]Go设计模式:建造者模式(Builder Pattern)

    目录 建造者模式 一.简介 二.代码 三:参考资料 建造者模式 一.简介 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式, ...

  8. sorted内置函数

    对List.Dict进行排序,Python提供了两个方法 --------------------------------sorted--------------------------------- ...

  9. libevent实现对管道的读写操作

    读管道: #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/t ...

  10. 嵌入式02 STM32 实验02 端口输入输出各4种模式

    GPIO(General-purpose input/output 通用目的输入/输出端口) 电压(A模拟量)与电平(D数字量) GPIO 8种工作模式(输入四种.输出四种) 1.GPIO_Mode_ ...