本篇主要介绍关于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. 通过sed -i ,通过准备好的sh脚本,来设置linux iptable白名单

    通过准备好的sh脚本,来设置linux iptable白名单 特定字符串的行前插入新行 sed -i '/特定字符串/i 新行字符串' file #!/bin/bash del_stdin_buf() ...

  2. Python分词工具——pyhanlp

    本文为本人学习pyhanlp的笔记,大多知识点来源于GitHubhttps://github.com/hankcs/HanLP/blob/master/README.md,文中的demo代码来源于该G ...

  3. Sublime用正则表达式进行逗号分隔实现列的替换

    eg: ([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*).* 这是取前面10列,后面的不管 ...

  4. js object 添加键值

    第一种方法let obj ={"name":"tom","age":16}let key = "id";let valu ...

  5. QT实现支持加密的Sqlite数据库引擎

    Sqlite数据库使用很广泛,我们经常会在发布一些小型软件的时候使用它,因为它不需要安装服务器.QT默认的数据库引擎是支持SQLITE数据库的,但并不支持对数据库加密,不加密的Sqlite数据库任何人 ...

  6. zookeeper ACL权限

    原文链接:https://www.jianshu.com/p/392248ab27f4 对zookeeper设置ACL属性 我们以zkCli为例,来说明zookeeper对ACL的设置. 使用zkCl ...

  7. vcf和bed的位置信息区别

    vcf和bed的位置信息区别 vcf和gff一般是从1-base开始计数,也就是文件里所代表的的位置是染色体的真实位置 bed文件一般所代表的位置是从0开始计数的,是一个半闭合区间,也就是(0,200 ...

  8. Java基础笔试练习(九)

    1.下面所示的java代码,运行时,会产生()类型的异常 ? int Arry_a[] = new int[10]; System.out.println(Arry_a[10]); A.Arithme ...

  9. java笔记4—继承

    继承: 作用: 提高了代码的复用性. 让类与类之间产生了关系,为多态提供了前提 继承中成员变量的特点: 继承中成员函数的特点: 方法重写: 注意:重写方法必须和被重写的方法具有相同的方法名,参数列表和 ...

  10. logrus 剖析之 hook

    logrus 通过实现 Hook接口扩展 hook 机制,可以根据需求将日志分发到任意的存储介质, 比如 es, mq 或者监控报警系统,及时获取异常日志.可以说极大的提高了日志系统的可扩展性. ho ...