MySql:理解数据库

       

目录

一、什么是数据库

第一层理解

第二层理解

第三层理解

二、Linux下的数据库

三、基本认识


        登录数据库时,

mysql -u root -h 127.0.0.1 -P 3306 -p

        -h指定MySql服务器所在主机,若在本地则为回环地址。-P表示目标主机上MySql服务端口号

        一般简单写成下面这个样子。

mysql -uroot -p

        退出MySql时,输入quit即可。 

一、什么是数据库

第一层理解

  • 不难知道,由Linux对可执行程序的归类(Linux的指令都在bin和sbin目录下),mysql、mysqld这两条命令都是可执行程序。
  • mysqld,带d说明mysqld是一种网络服务。
  • 于是,mysql是客户端,mysqld是服务端。
  • 总结,数据库就是一种基于C(mysql)-S(mysqld)的一种网络服务。
  • 一般服务端的MySql端口号为3306。

第二层理解

        理解平时口述的三个概念,它们最常用的一层意义。

  • 一般提到mysql,指的是一套网络程序,用来帮助使用者存储数据。
  • 数据库一般指,存储在磁盘上的一套管理数据的方案。
  • 数据库服务,就是指mysqld。

第三层理解

        从文件的角度理解。

文件存储数据的缺点:

        文件的安全性问题
        文件不利于数据查询和管理(增删查改)
        文件不利于存储海量数据
        文件在程序中控制不方便

于是,发明了数据库管理:

        本质就是对文件的一套存储解决方案(方便增删查改)。因此,提到“数据库”,也可能是在说某个数据库文件。

        当使用者增删查改的时候,基于客户端请求数据库(服务器)来完成,具体操作由数据库(数据库文件)完成后,返回给使用者,这个过程就叫数据库,是一套解决方案。

        换句话说,是把存储数据的解决方案,由传统的普通文件存储,转换为可以帮助我们增删查改的数据库文件。


二、Linux下的数据库

        登录成功后,输入show databases;

        注意,MySql语句不同于命令行指令,要加分号

        而在Linux的 /var/lib/mysql目录下,

        蓝色的打印信息表示是一个目录,于是,不难总结出一点,建立了一个数据库的本质,就是Linux下的一个目录

  • 建立一个数据库
create database school;

        注意不要漏写分号。

  • 建立一张学生表

        建表之前,指定要在哪个数据库建表。

use school;

        建立一张学生表,表中有学号、姓名、性别。

create table student(
id int,
name varchar(32),
gender varchar(2)
);

        注意student后面是()而不是{},分号在最后加。

  • 在表中插入数据       
insert into student(id,name,gender)values(1,'张三','男');
  •  查询表中数据
select * from stduent;

        以上过程都由服务端的mysqld完成。

三、基本认识

  • 主流数据库
        SQL Sever: 微软的产品, .Net 程序员的最爱,常用于中大型项目。
        Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如 MySQL
        MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS ,论坛。对简单的 SQL 处理效果好。
        PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
        SQLite: 是一款轻型的数据库,是遵守 ACID 的关系型数据库管理系统,它包含在一个相对小的 C 库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K 的内存就够了。
        H2: 是一个用 Java 开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
  • 服务器、数据库、表关系

  • MySql三层架构

        Connection Pool,链接池:一般做权限管理

        词法分析、语法分析。

        Storage Engines,存储引擎:MySql一般使用的是InnoDB,支持热插拔,具体的文件操作是由它来完成。

  • SQL语句分类

        SQL语句大致可以分为三类:

        DDL(data definition language),数据定义语言,这种SQL语句用来维护存储数据的结构,比如建库、建表。代表的指令有create、drop、alter

        DML(data manipulation language),数据操作语言,这种SQL语句就是用来操作数据的,代表的指令有insert、delete、update。DML又有一个分支叫DQL,数据查询语言,比如select

        DCL(data control language),数据控制语言,主要用来赋权、减权、事物管理。代表指令有grant、revoke、commit

  • 存储引擎

        存储引擎是位于最底层,和数据库文件直接交互的。

        存储引擎是数据库管理系统如何存储数据、如何建立索引和如何更新数据、查询数据等技术的具体实现方法。

        MySQL的核心就是插件式存储引擎,支持多种存储引擎。
查看支持的存储引擎:
show engines;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/483638.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spire.PDF for .NET【页面设置】演示:旋转 PDF 中的页面

在某些情况下,您可能需要旋转 PDF 页面。例如,当您收到包含混乱页面的 PDF 文档时,您可能希望旋转页面以便更轻松地阅读文档。在本文中,您将学习如何使用Spire.PDF for .NET在 C# 和 VB.NET 中旋转 PDF 中的页面。 Spire.PDF for…

【JavaEE初阶 — 网络编程】实现基于TCP协议的Echo服务

TCP流套接字编程 1. TCP & UDP 的区别 TCP 的核心特点是面向字节流,读写数据的基本单位是字节 byte 2 API介绍 2.1 ServerSocket 定义 ServerSocket 是创建 TCP 服务端 Socket 的API。 构造方法 方法签名 方法说明 ServerS…

[linux应用]emby媒体服务器软件简单部署和使用

一、介绍 Emby 是一款媒体服务器软件,用于组织、管理和共享个人的音乐、电影、电视节目和其他媒体文件。简单来说,是管理和播放电影的软件。官方网址:Emby - The open media solution 二、部署 安装包下载地址:Download Emby -…

burp2

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…

基于hexo框架的博客搭建流程

这篇博文讲一讲hexo博客的搭建及文章管理,也算是我对于暑假的一个交代 !!!注意:下面的操作是基于你已经安装了node.js和git的前提下进行的,并且拥有github账号 创建一个blog目录 在磁盘任意位置创建一个…

106.【C语言】数据结构之二叉树的三种递归遍历方式

目录 1.知识回顾 2.分析二叉树的三种遍历方式 1.总览 2.前序遍历 3.中序遍历 4.后序遍历 5.层序遍历 3.代码实现 1.准备工作 2.前序遍历函数PreOrder 测试结果 3.中序遍历函数InOrder 测试结果 4.后序遍历函数PostOrder 测试结果 4.底层分析 1.知识回顾 在99.…

游戏引擎学习第25天

Git: https://gitee.com/mrxiao_com/2d_game 今天的计划 总结和复述: 这段时间的工作已经接近尾声,虽然每次编程的时间只有一个小时,但每一天的进展都带来不少收获。尽管看起来似乎花费了很多时间,实际上这些日积月累的时间并未…

【C++】深入优化计算题目分析与实现

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯第一题:圆的计算我的代码实现代码分析改进建议改进代码 老师的代码实现代码分析可以改进的地方改进代码 💯第二题:对齐输出我的代码实现…

Kafka配置SASL/PLAINTEXT安全认证

1、下载安装 Kafka下载地址:Apache Kafka 下载文件 wget https://downloads.apache.org/kafka/3.8.0/kafka_2.12-3.8.0.tgz 文件解压缩 tar -zxvf kafka_2.12-3.8.0.tgz 进入目录 cd kafka_2.12-3.8.0 2、Zookeeper 配置 2.1、修改 Zookeeper 配置文件 con…

go并发设计模式runner模式

go并发设计模式runner模式 真正运行的程序不可能是单线程运行的,go语言中最值得骄傲的就是CSP模型了,可以说go语言是CSP模型的实现。 假设现在有一个程序需要实现,这个程序有以下要求: 程序可以在分配的时间内完成工作&#xff0…

机器学习周志华学习笔记-第13章<半监督学习>

机器学习周志华学习笔记-第13章<半监督学习> 卷王,请看目录 13半监督学习13.1 生成式方法13.2 半监督SVM13.3 基于分歧的方法13.4 半监督聚类 13半监督学习 前面我们一直围绕的都是监督学习与无监督学习,监督学习指的是训练样本包…

DevOps工程技术价值流:GitLab源码管理与提交流水线实践

在当今快速迭代的软件开发环境中,DevOps(开发运维一体化)已经成为提升软件交付效率和质量的关键。而GitLab,作为一个全面的开源DevOps平台,不仅提供了强大的版本控制功能,还集成了持续集成/持续交付(CI/CD)…

Android笔记【12】脚手架Scaffold和导航Navigation

一、前言 学习课程时,对于自己不懂的点的记录。 对于cy老师第二节课总结。 二、内容 1、PPT介绍scaffold 2、开始代码实操 先新建一个screen包,写一个Homescreen函数,包括四个页面。 再新建一个compenent包,写一个displayText…

动态规划-----路径问题

动态规划-----路径问题 下降最小路径和1:状态表示2:状态转移方程3 初始化4 填表顺序5 返回值6 代码实现 总结: 下降最小路径和 1:状态表示 假设:用dp[i][j]表示:到达[i,j]的最小路径 2:状态转…

C_字符串的一些函数

1.字符串输入函数 scanf("%s",数组名)&#xff1b; gets(数组名)&#xff1b; 区别&#xff1a; scanf(“%s”,数组名); 把空格识别为输入结束 #include <stdio.h>int main() {char a[10];printf("输入&#xff1a;");scanf("%s",a)…

【数据事务】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

Zookeeper集群数据是如何同步的?

大家好&#xff0c;我是锋哥。今天分享关于【Zookeeper集群数据是如何同步的?】面试题。希望对大家有帮助&#xff1b; Zookeeper集群数据是如何同步的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper集群中的数据同步是通过一种称为ZAB&#xff08;Zo…

MySQL需掌握到何种程度?才能胜任工作

大家好&#xff0c;我是袁庭新。星友问&#xff1a;MySQL需要学到什么程度&#xff1f;才能胜任日常的软件开发工作呢&#xff01;以下是一些建议的学习目标和程度&#xff0c;这些目标旨在帮助你在工作中高效地使用MySQL。 数据库的基本概念、MySQL的安装及配置、SQL的概念、S…

HTML 快速上手

目录 一. HTML概念 二. HTML标签 1. 标题标签 2. 段落标签 3. 换行标签 4. 图片标签 5. 超链接标签 6. 表格标签 7. 表单标签 7.1 form 标签 7.2 input 标签 (1) 文本框 (2) 单选框 (3) 密码框 (4) 复选框 (5) 普通按钮 (6) 提交按钮 8. select标签 9. 无语义…

Qt 2D绘图之三:绘制文字、路径、图像、复合模式

参考文章链接: Qt 2D绘图之三:绘制文字、路径、图像、复合模式 绘制文字 除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontInfo()函数可以获取字体的信息,它返回QFontInfo类对象…