Linux数据库:【数据库基础】【库的操作】【表的操作】

目录

一.数据库基础

1.1什么是数据库

1.2基本使用

1.2.1连接服务器

1.2.2服务器,数据库,表关系

1.2.3使用案例

1.2.4数据存储结构

​编辑

 1.3MySQL架构

1.4SQL分类

1.5存储引擎

1.5.1什么是存储引擎

1.5.2查看存储引擎

 ​编辑

1.5.3存储引擎对比 

​编辑 二.库的操作

2.1创建和删除数据库

2.2创建数据库案例

2.3字符集和校验规则

2.3.1查看系统默认的字符集和校验规则

​编辑

2.3.2查看数据库支持的字符集

2.3.3查看数据库支持的字符集校验规则 

2.3.4校验规则对数据库的影响

2.4操纵数据库

2.4.1数据库删除 

2.4.2数据库查看

​编辑

 2.4.3数据库的修改

2.4.4备份和恢复

2.4.4.1备份 

 2.4.4.2恢复

2.4.4.3注意

2.4.5查看连接情况

三.表的操作

3.1创建表

3.2查看表结构

3.3修改表

3.3.1修改表名:

 3.3.2插入数据:

 3.3.3修改表里数据

3.4删除表


一.数据库基础

1.1什么是数据库

数据库是一个用于存储和管理数据的系统。它可以帮助用户组织、检索、更新和管理大量数据。

mysql是数据库服务的客户端,mysqld是数据库服务的服务端,它的本质就是基于CS模式的网络服务。 

文件保存数据有以下几个缺点:

文件的安全性问题

文件不利于数据查询和管理

文件不利于存储海量数据

文件在程序中控制不方便

比如我们在一个普通文件里写入大量的数据(十万行十亿行),那么多的数据在普通文件里,我们如果想要管理起来这是非常麻烦的一件事,比如我要修改十亿行数据里的第一百万行,怎么搞?

所以数据库本质就是:对数据库内容存储的一套解决方案。

1.2基本使用

1.2.1连接服务器

输入:mysql -h 127.0.0.1 -P 3306 -u root -p

或者:mysql -uroot -p

注意:

如果没有写 -h 127.0.0.1 默认是连接本地

如果没有写 -P 3306 默认是连接3306端口号

端口号我们自己也可以去改。打开/etc/my.cnf文件修改。

1.2.2服务器,数据库,表关系

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多 个数据库,一般开发人员会针对每一个应用创建一个数据库。

为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。

数据库服务器、数据库和表的关系如下:

1.2.3使用案例

我创建一个helloworld:

使用数据库:

创建数据库表: 

此时在/var/lib/mysql/helloworld下会多出两个student:

 在表中插入和查询数据:

 

我们不会主动的去修改磁盘中的数据库文件,这些工作都是mysql帮我们去做的。 

1.2.4数据存储结构

 1.3MySQL架构

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

1.4SQL分类

DDL【data definition language】 数据定义语言,用来维护存储数据的结构 代表指令: create, drop, alter

DML【data manipulation language】 数据操纵语言,用来对数据进行操作 代表指令: insert,delete,update

        DML中又单独分了一个DQL,数据查询语言,代表指令: select

DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务 代表指令: grant,revoke,commit  

1.5存储引擎

1.5.1什么是存储引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。 MySQL的核心就是插件式存储引擎,支持多种存储引擎。

1.5.2查看存储引擎

 

1.5.3存储引擎对比 

 二.库的操作

2.1创建和删除数据库

drop datebase (名字):

删除之后:

 本质就是在/var/lib/mysql创建和删除一个目录(文件系统层面)。

所以说反过来在/var/lib/mysql目录下使用mkdir创建一个目录,也可以在数据库中使用show databases看到。(注意理解一下就行了,不要这么干)

在创建数据库层面我们还可以:

有了就不会再创建了,这是为了安全起见。

2.2创建数据库案例

 那么我们在创建数据库的时候当然可以使用默认的,我们还可以进行指定:

这三种方式都可以使用默认的字符集utf8: 

创建一个使用utf字符集,并带校对规则的 db3 数据库。

第四种:既指明字符集又指明检验规则:

 当然上面都是针对默认的字符集和校验规则,我们也可以换其他的字符集和校验规则:

换一下这种:

这里就可以看到: 

 

2.3字符集和校验规则

2.3.1查看系统默认的字符集和校验规则

字符集使用的是utf8

校验规则utf8_ general_ ci :

2.3.2查看数据库支持的字符集

上面写建的数据库我们都没有写明要使用哪一个字符集,所以系统就使用了默认的字符集,除了系统默认的utf8,还有以下的: 

 

2.3.3查看数据库支持的字符集校验规则 

2.3.4校验规则对数据库的影响

一个实验:使用utf8的字符集创建,但是使用不同的校验规则

不区分大小写  使用utf8_general_ci

create database test1 collate utf8_general_ci;  

create之后,用use使用test1: 

desc查看表结构: 

然后往表里插入(utf8): 

select查看表里有什么: 

 这里的校验规则是不区分大小写(utf8_general_ci):

区分大小写 使用utf8_bin

这里的步骤跟上面的差不多,先使用use,再创建creat table

之后还是insert into person 

这里使用select去查找就只有小写的a: 

 上面也就只是简单的区分了一下不同的校验规则查找的差别。

2.4操纵数据库

增删查改

增:create database +(名字) charset (字符集) collate(校验规则)

适当的取用字符集和校验规则 

2.4.1数据库删除 

删:DROP DATABASE [IF EXISTS] db_ name;

执行删除之后的结果:

数据库内部看不到对应的数据库

对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

注意:不要随意删除数据库  

2.4.2数据库查看

查:show databases;

有时候会频繁的使用use,需要确认自己在哪一个数据库里

 2.4.3数据库的修改

对数据库的修改主要指的是修改数据库的字符集,校验规则

假如我们现在需要把它的字符集和校验规则改为gbk格式的:

2.4.4备份和恢复

2.4.4.1备份 

语法:

# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
# mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql

我想把test1数据库里的内容进行备份: 

此时再开一个终端:

在test1.sql里就是下面的内容,里面存储的就是数据库里的所有的数据(和操作),我们当然也可以直接对数据库进行复制,但是这种做法的话是不建议的。我们还是要使用mysqldump:

 2.4.4.2恢复
mysql> source D:/mysql-5.7.22/mytest.sql;

我们先把之前的数据库里的test1给删掉:

使用source 加上刚才在另一个终端上备份的地址: 

source /root/MySQL/test1.sql

 

此时:

还原成功:

2.4.4.3注意

如果备份的不是整个数据库,而是其中的一张表,怎么做?  

 # mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql

同时备份多个数据库

# mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据 库,再使用source来还原。

2.4.5查看连接情况

show processlist

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。  

三.表的操作

3.1创建表

CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

说明:

field 表示列名

datatype 表示列的类型

character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准

collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

案例: 

此时的另一台终端上的mysql目录下的user_db里就会有: 

 不同的存储引擎,创建表的文件不一样。 

users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:

users.frm:表结构

users.MYD:表数据

users.MYI:表索引

 这里换一种engine: 

在另一个终端上只会多出来这两种: 

当我们不添加engine 的时候,会默认使用innodb:

因为在/etc/my.cnt里:

3.2查看表结构

desc 表名;

 

这个可以显示更详细的表信息: 

show create table+表名

这样看不太方便的话可以加上\G来清除不想要的信息: 

3.3修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型, 表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

3.3.1修改表名:

alter table user1 rename to user;

to:可以省掉  

 3.3.2插入数据:

 3.3.3修改表里数据

添加新字段:

alter table user add image_path varchar(128) comment '用户的头像路径' after birthday;

after指明是在表的哪个位置: 

 

 修改name(修改大小):

原本的name大小是20,现在我想改为60:

alter table user modify name varchar(60);

 注意:这里的修改是覆盖的修改,我们之前在写name这个字段的时候有对字段的描述commend。但是在我们修改之后,commend就会不见了。

 删除password列:

alter table user drop password;

 修改列名称

把name改为xingming:

注意必须把属性带上。

3.4删除表

drop table t1;

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

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

相关文章

CKPT文件是什么?

检查点(Checkpoint,简称ckpt)是一种用于记录系统状态或数据变化的技术,广泛应用于数据库管理、机器学习模型训练、并行计算以及网络安全等领域。以下将详细介绍不同领域中ckpt检查点的定义、功能和应用场景。 数据库中的ckpt检查点…

Redis的公共操作命令

目录 1.Key操作命令1.1 keys *1.2 exists <key]>1.3 type <key>1.4 del <key>1.5 unlink <key>1.6 ttl <key>1.7 expire <key> <秒数>1.8 move <key> <index> 2.库操作命令2.1 select <index>2.2 dbsize2.3 flush…

【LLM】使用MySQL MCP Server让大模型轻松操作本地数据库

随着MCP协议&#xff08;Model Context Protocol&#xff09;的出现&#xff0c;使得 LLM 应用与外部数据源和工具之间的无缝集成成为可能&#xff0c;本章就介绍如何通过MCP Server让LLM能够直接与本地的MySQL数据库进行交互&#xff0c;例如新增、修改、删除数据&#xff0c;…

【C++】从零实现Json-Rpc框架(2)

目录 JsonCpp库 1.1- Json数据格式 1.2 - JsonCpp介绍 • 序列化接口 • 反序列化接口 1.3 - Json序列化实践 JsonCpp使用 Muduo库 2.1 - Muduo库是什么 2.2 - Muduo库常见接口介绍 TcpServer类基础介绍 EventLoop类基础介绍 TcpConnection类基础介绍 TcpClient…

语文常识推翻百年“R完备、封闭”论

​语文常识推翻百年“R完备、封闭”论 黄小宁 李四光&#xff1a;迷信权威等于扼杀智慧。语文常识表明从西方传进来的数学存在重大错误&#xff1a;将无穷多各异数轴误为同一轴。 复平面z各点z的对应点zk的全体是zk平面。z面平移变换为zk&#xff08;k是非1正实常数&#xf…

【Vue】 核心特性实战解析:computed、watch、条件渲染与列表渲染

目录 一、计算属性&#xff08;computed&#xff09; ✅ 示例&#xff1a; 计算属性-methods实现&#xff1a;在插值模块里&#xff0c;实现函数的调用功能 计算属性-computed的实现&#xff1a; 计算属性-简写&#xff1a; ✅ 特点&#xff1a; ⚠️ 与 methods 的区别…

二叉树 递归

本篇基于b站灵茶山艾府的课上例题与课后作业。 104. 二叉树的最大深度 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&…

与 AI 共舞:解锁自我提升的无限可能

与 AI 共舞&#xff1a;解锁自我提升的无限可能 在数字化浪潮的汹涌冲击下&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度重塑着世界的每一个角落。从日常生活的点滴便利到复杂工作的高效推进&#xff0c;AI 的力量无处不在。然而&#xff0c;面对 AI 的强…

【网络安全论文】筑牢局域网安全防线:策略、技术与实战分析

【网络安全论文】筑牢局域网安全防线:策略、技术与实战分析 简述一、引言1.1 研究背景1.2 研究目的与意义1.3 国内外研究现状1.4 研究方法与创新点二、局域网网络安全基础理论2.1 局域网概述2.1.1 局域网的定义与特点2.1.2 局域网的常见拓扑结构2.2 网络安全基本概念2.2.1 网络…

MoE Align Sort在医院AI医疗领域的前景分析(代码版)

MoE Align & Sort技术通过优化混合专家模型(MoE)的路由与计算流程,在医疗数据处理、模型推理效率及多模态任务协同中展现出显著优势,其技术价值与应用意义从以下三方面展开分析: 一、方向分析 1、提升医疗数据处理效率 在医疗场景中,多模态数据(如医学影像、文本…

[ctfshow web入门] web4

前置知识 robots.txt是机器人协议&#xff0c;在使用爬虫爬取网站内容时应该遵循的协议。协议并不能阻止爬虫爬取&#xff0c;更像是一种道德规范。 假设robots.txt中写道 Disallow: /admind.php&#xff0c;那我就暴露了自己的后台&#xff0c;这属于信息泄漏&#xff0c;攻击…

innodb如何实现mvcc的

InnoDB 实现 MVCC&#xff08;多版本并发控制&#xff09;的机制主要依赖于 Undo Log&#xff08;回滚日志&#xff09;、Read View&#xff08;读视图&#xff09; 和 隐藏的事务字段。以下是具体实现步骤和原理&#xff1a; 1. 核心数据结构 InnoDB 的每一行数据&#xff08…

coding ability 展开第九幕(位运算——进阶篇)超详细!!!!

文章目录 前言丢失的数字两整数之和只出现一次的数字II消失的两个数字总结 前言 上一篇博客&#xff0c;我们已经把位运算的基础知识&#xff0c;以及基本运算都掌握啦 上次的习题还是让人意犹未尽&#xff0c;今天我们来尝试一下难一点的题目 位运算熟练起来真的让人觉得做题是…

【数据结构篇】算法征途:穿越时间复杂度与空间复杂度的迷雾森林

文章目录 【数据结构篇】算法征途&#xff1a;穿越时间复杂度与空间复杂度的迷雾森林 一、 什么是算法1. 算法的定义1.1 算法的五个特征1.2 好算法的特质 2. 时间复杂度3. 空间复杂度 【数据结构篇】算法征途&#xff1a;穿越时间复杂度与空间复杂度的迷雾森林 &#x1f4ac;欢…

Logo语言的系统监控

Logo语言的系统监控 引言 在信息技术飞速发展的时代&#xff0c;系统监控成为了确保计算机系统和网络平稳运行的重要手段。系统监控不仅可以实时跟踪系统的性能、资源使用情况和安全风险等&#xff0c;还能够在出现问题时及时发出警报&#xff0c;从而避免潜在的故障和损失。…

STP学习

{所有内容均来自于西安欧鹏的陈俊老师} STP生成树 当二层交换机意外成环路的时候会发生&#xff1a; 1.广播风暴&#xff1a;当广播帧进入环路时&#xff0c;会被不断复制并传输&#xff0c;导致网络中的广播流量急剧增加&#xff0c;消耗大量的网络带宽&#xff0c;降低网络…

使用RKNN进行yolo11-cls部署

文章目录 概要制作数据集模型训练onnx导出rknn导出概要 YOLO(You Only Look Once)是一系列高效的目标检测算法,其核心思想是将目标检测任务转化为一个回归问题,通过单个神经网络直接在图像上预测边界框和类别概率。当将其用于分类任务时,会去除目标检测相关的边界框预测部…

【MySQL】01.MySQL环境安装

注意&#xff1a;在MYSQL的安装与卸载中&#xff0c;需要使用root用户进行。 一、卸载不必要的环境 • 查看是否有运行的服务 [rootVM-24-10-centos etc]# ps axj |grep mysql1 22030 22029 22029 ? -1 Sl 27 0:00 /usr/sbin/mysqld --daemonize --pid-fi…

程序化广告行业(59/89):广告验证与反作弊实战技巧

程序化广告行业&#xff08;59/89&#xff09;&#xff1a;广告验证与反作弊实战技巧 大家好&#xff01;在程序化广告领域&#xff0c;想要做好投放&#xff0c;除了了解基本的架构和原理&#xff0c;还得掌握一些关键的技能&#xff0c;比如广告验证和反作弊。今天就和大家一…

矢量瓦片切片工具

1.geoserver 可以生成geojson mvt(pbf) tojson 三种格式矢量瓦片 2.mapbox的tippecanoe 可以生成pbf矢量瓦片&#xff0c;文件夹形式和mbtiles两种 3.TileStache python工具&#xff0c;可以生成geojson瓦片 4.PostGis mapbox插件可以生成pbf瓦片&#xff0c;据说是动态切片…