【数据库基础】基本认识数据库--入门引导

文章目录

    • 什么是数据库?
    • 主流数据库
    • 基本使用
      • 安装MySQL
      • 连接服务器
      • 服务器、数据库、表关系
      • 使用案例
      • 数据逻辑存储
    • MySQL架构
    • SQL语句分类
    • 什么叫存储引擎

什么是数据库?

数据库是指在磁盘和内存中存储特定结构组织数据。数据库通常用于存储于某个系统、组织或应用相关的信息。和文件系统存储管理数据的方式不同,数据库以结构化的方式进行存储,比如按行列式(类似于表格)
等形式。除此之外,相比于文件系统,数据库保存数据还有以下优点:

  • 数据更加安全
  • 更有利于数据的查询和管理
  • 有利于存储大量数据
  • 控制数据方便

数据库存储的介质:磁盘和内存

主流数据库

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

基本使用

安装MySQL

在安装MySQL之前建议先去查看当前linux系统的版本,版本越新的系统最好搭配越新的MySql。如果你是ubuntu系统,直接使用指令sudo apt install mysql-server就可以安装了。这是因为ubuntu内置了最新版本的MySql。

  • Centos安装Mysql,这里有安装教程。

连接服务器

当我们安装好MySql之后,一般都会默认启动MySql服务。可以使用指令ps ajx | grep mysql观察mysql进程:
在这里插入图片描述
此时要想进入mysql,需要先登录。本地登录指令mysql -u root -p
-u选项后面跟着登录的用户名
-p选项后面跟密码
此外 -h选项后面跟登陆的主机号 -P后面接访问的端口号
在这里插入图片描述
默认没有密码,直接按回车就可以进去了。退出输入quit

服务器、数据库、表关系

值得注意的是,mysql是数据库服务的客户端,mysqld是数据库服务的服务端(后端)。
在这里插入图片描述
mysql的本质是基于C(mysql,客户端)S(mysqld,服务端) 模式的一种网络服务。我们常说的mysql其实只是指mysql服务的客户端数据库服务才是指mysqld

  • 所谓的安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库。
  • 数据库中一般会有多个表,表是数据库的基本单位,每张表存储具体的数据

数据库服务器、数据库、和表的关系如下:
在这里插入图片描述
DB是存储引擎。

使用案例

登录mysql,简单使用一下mysql指令,目前不用考虑指令的细节,观察结果即可。

  • 创建数据库
create database helloworld;

在这里插入图片描述
在mysql创建的数据库一般会存放在/var/lib/mysql目录下,并且我们可以看到,数据库本质是一个文件目录。

  • 查看当前数据库
show databases;

在这里插入图片描述

  • 使用数据库
use helloworld;

这条指令表示接下来的操作都是在helloworld数据库中进行。比如新建一张表,该表就属于该数据库。

  • 在数据库中创建表
create table student(
   id int,
   name varchar(32),
   gender varchar(2)
);

sudent是表的名字,括号里面的是表的属性,以键值对的形式描述,左边是属性名,右边是类型,()里面是字节大小。
在这里插入图片描述

  • 在表中插入数据
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
  • 查询表中数据
select * from student

查询并显示student表中所有信息
在这里插入图片描述

数据逻辑存储

数据库中的存储逻辑是指数据在数据库系统中组织和表示方式,主要关注数据的结构和关系,而不是物理存储的的具体实现。简单理解为,逻辑存储方式是用来描述人看到的数据的表现形式,而物理存储方式是数据具体在磁盘中存储形式。

mysql的逻辑存储方式就是行列式
在这里插入图片描述

MySQL架构

MySQL是一个可移植的数据库服务程序,几乎能在当前所有操作系统上运行。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性

MySQL的架构从上到下一般可以分为4个层次:

  1. 连接层:客户端通过连接层与 MySQL 服务器建立连接
  2. 服务层:解析SQL语句,优化查询,生成执行计划
  3. 存储引擎层:查询执行计划通过存储引擎 API 与相应的存储引擎交互,读取或写入数据
  4. 存储层:数据最终存储在文件系统中

在这里插入图片描述
这种分层结构使MySQL具有良好的可扩展性和灵活性,各个层次之间的职责分明,方便优化和扩展

SQL语句分类

mysql中的指令我们称为SQL语句。

  • DDL(data definition language):数据定义语言,用来维护存储数据的结构,代表指令有:create(创建表)、drop(删除表)、alter(修改表)。
  • DML(data manipulation language):数据操纵语言,对数据进行操作。代表指令有:insert(向表中插入数据)、delete(向表中删除数据)、update(修改表中数据)
  • DCL(data Control language):数据控制语言。主要负责权限事务管理。代表指令有:grant(授予用户权限)、revoke(撤销用户权限)、commit(提交事务)

什么叫存储引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术
实现方法。我们输入的sql指令最后都是由存储引擎来实现的。并且,MySQl针对不同的场景,提供了不同的存储引擎。这种插件式存储引擎使得MySQL更加灵活且高效。

我们在mysql种可以使用指令show engines;来查看不同的引擎:
在这里插入图片描述

其中呢InnoDB存储引擎是最常用的,其次是MyISAM。这些引擎目前了解即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式异步框架celery + Redis 安装配置

引入 这里不对web框架做过多说明,到时候在总结一篇 python的常见web框架 django、flask、tornado、sanic、fastapi..各框架区别 - 内部集成功能的多少 django,内部提供了很多组件。 【相对大】flask、tornado、sanic、fastapi… 本身自己功能很少第…

Linux c开发线程锁和条件变量使用

#include <pthread.h> #include <stdio.h> #include <unistd.h>pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond PTHREAD_COND_INITIALIZER;void* thread_function(void* arg) {printf("线程等待唤醒,锁定互斥量...\n");…

【Unitydemo制作】音游制作—排行榜逻辑Json存储

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

查看当前Shell系统环境变量

查看当前Shell系统环境变量 查看命令 env效果 查看Shell变量(系统环境变量自定义变量函数) 命令 set效果 常用系统环境变量 变量名称含义PATH与windows环境变量PATH功能一样&#xff0c;设置命令的搜索路径&#xff0c;以冒号为分割HOME当前用户主目录&#xff1a;/rootSH…

day08-Java常用API

day08——Java常用API 一、今日内容介绍、API概述 各位同学&#xff0c;我们前面已经学习了面向对象编程&#xff0c;使用面向编程这个套路&#xff0c;我们需要自己写类&#xff0c;然后创建对象来解决问题。但是在以后的实际开发中&#xff0c;更多的时候&#xff0c;我们是…

通过 Spring 操作 Redis

要想通过 Java 操作 redis&#xff0c;首先要连接上 redis 服务器&#xff0c;推荐看通过 Java 操作 redis -- 连接 redis 创建项⽬ 勾选 NoSQL 中的 Spring Data Redis 当然, 把 Web 中的 Spring Web 也勾选⼀下.⽅便写接进⾏后续测试. 配置 redis 服务地址 在 application.…

数据库的约束 not null, unique, default, primary key, foreign key, check

约束可以理解成 数据库提供的一种针对数据的合法性进行验证的机制, 在创建表的时候使用 1. 约束类型 NOT NULL - 指示某列不能存储 NULL 值, 表里的这个内容是必填项UNIQUE - 保证某列的每行必须有唯一的值, 不能重复 每次插入/修改时, 都要先触发查询, 如果当前插入/修改的…

mysql存储比特位

一、介绍 二、SQL CREATE TABLE bits_table (id INT PRIMARY KEY AUTO_INCREMENT,bit_value BIGINT UNSIGNED );-- 插入一个 8 位的 BIT 值 INSERT INTO bits_table (bit_value) VALUES (B10101010);-- 查询并格式化输出 SELECT id,bit_value,CONCAT(b, LPAD(BIN(bit_value),…

解决小皮面版搭建php网站数据库连接不了

首先进入mysql bin目录下 并执行cmd mysql -u root -pCREATE USER userlocalhost IDENTIFIED BY pass;GRANT ALL PRIVILEGES ON *.* TO userlocalhost;GRANT SELECT, INSERT, UPDATE ON database_name.* TO xxwlocalhost;FLUSH PRIVILEGES;select host ,user from mysql.user…

pdf文件怎么编辑?分享3个专业的pdf软件!

在数字化时代&#xff0c;PDF文件已成为我们工作、学习中的得力助手。然而&#xff0c;面对需要修改的PDF文件&#xff0c;许多人却感到无从下手。今天&#xff0c;就让我们一起探索如何轻松编辑PDF文件&#xff0c;并介绍几款实用的编辑软件&#xff0c;让你轻松应对各种PDF编…

Linux DAY 6 _systemctl

systemctl命令&#xff0c;通过这个命令控制系统操作 语法&#xff1a;systemctl start | stop | status | enable | disable 服务名 start 启动 stop 关闭 status 查看状态 enable 开启开机自启 disable 关闭开机自启 服务名&#xff1a; NetworkManager 主网络服务 net…

DFE_offset失调校准

1.校准原因 *制造工艺的限制&#xff1a;晶体管在制造过程中&#xff0c;由于工艺的限制&#xff0c;不可能做到完全对称&#xff0c;这导致了输入级晶体管的性能存在微小的差异。 *输入级偏置电流的不对称&#xff1a;输入级晶体管的偏置电流也会存在差异&#xff0c;这也会…

如何在OpenHarmony上使用SeetaFace2人脸识别库?

简介 相信大部分同学们都已了解或接触过OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;了&#xff0c;但你一定没在OpenHarmony上实现过人脸识别功能&#xff0c;跟着本文带你快速在OpenHarmony标准设备上基于SeetaFace2和OpenCV实现人脸识别。 项目效…

如何理解kmp的套娃式算法啊?

概念 KMP算法&#xff0c;全称Knuth Morris Pratt算法 。文章大部分内容出自《数据结构与算法之美》 核心思想 假设主串是a&#xff0c;模式串是b 在模式串与主串匹配的过程中&#xff0c;当遇到不可匹配的字符的时候&#xff0c;对已经对比过的字符&#xff0c;是否能找到…

向上调整建堆与向下调整建堆的时间复杂度 AND TopK问题

目录 前言建堆的时间复杂度TOPK问题总结 前言 本篇旨在介绍使用向上调整建堆与向下调整建堆的时间复杂度. 以及topk问题 博客主页: 酷酷学!!! 感谢关注~ 建堆的时间复杂度 堆排序是一种优于冒泡排序的算法, 那么在进行堆排序之前, 我们需要先创建堆, 为什么说堆排序的是优于…

YOLOv8绘制map曲线图

yolov8源码绘制的map曲线图不够清晰&#xff0c;python代码绘制的曲线图导入word之后清晰度也不够高&#xff0c;所以选择使用matlab来绘制曲线图&#xff0c;matlab可以直接复制图窗到word中&#xff0c;在转换成pdf也不会失真。点击编辑&#xff0c;复制图窗即可复制到word中…

【Linux】:Linux 2.6内核 调度队列和调度原理

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux 2.6内核 调度队列和调度原理&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a…

做抖店需要截流吗?聊下抖店的出单玩法和运营思路

我是王路飞。 做抖店需要截流吗&#xff1f; 关于抖店的玩法&#xff0c;一直都是众说纷纭&#xff0c;谁都想发表点自己的意见。 尤其是很多新手&#xff0c;可能以前接触过淘宝等传统电商&#xff0c;对截流等玩法有个基本了解&#xff0c;就认为抖店是不是也是这样玩的。…

使用Flask ORM进行数据库操作的技术指南

文章目录 安装Flask SQLAlchemy配置数据库连接创建模型类数据库操作插入数据查询数据更新数据删除数据 总结 Flask是一个轻量级的Python Web框架&#xff0c;其灵活性和易用性使其成为开发人员喜爱的选择。而ORM&#xff08;对象关系映射&#xff09;则是一种将数据库中的表与面…

免费开源人脸识别系统,支持RESTful API

简介 CompreFace 是一个免费开源的人脸识别项目&#xff0c;您不需要具备机器学习技能就能安装设置和使用 CompreFace&#xff0c;官方提供了基于 docker 的部署方法&#xff0c;可以方便地部署在本地或者云端服务器上。 CompreFace 提供了 RESTful API&#xff0c;用于人脸识别…