【MySQL】库和表的基本操作

news2024/11/30 16:34:52

目录

库的增删查改

字符集与校验集

库的备份与恢复

表的创建和删除

用不同的存储引擎创建表的区别

查看表

修改表

添加删除属性

修改改变属性


上篇博客我们讲了数据库的基本理解,对数据库有了一个大致的概念,下面我们来介绍一下库和表的基本操作

库的增删查改

增加库可用下面的语句

create database (if not exists) db_name;

其中括号中的句子可以不加,加上主要是为了安全

假如已经有了某个数据库,加上括号中的句子执行后是

如果要不加就会

当然我们知道create数据库本质就是在/var/lib/mysql目录下创建一个目录,那如果我们在/var/lib/mysql目录下创建一个目录其实查数据库时确实会变多,当然这样肯定是不合理的

删除库可用下面的语句

drop database db_name;

查询当前都有哪些数据库可以用下面的

show databases;

如果要改数据库,比如改数据库的字符集和校验集(下面会提到),就可以:

alter database test1 charset=gbk collate gbk_chinese_ci;

字符集与校验集

我们知道,内存和磁盘存储数据不可能存储一个字母或一个汉字,它存储的都是二进制,所以就需要把字符转成数字再去存储,那么把特定的字符转成什么数字呢?这就用到了不同的编码方式

创建数据库的时候,有两个编码集,

一个是数据库字符集:用于确定数据库未来如何存储数据(就是把数据变成什么码)

一个是数据库校验集:用于读取数据库时做字段的比较(就是把码变成什么数据)

所以数据库无论对数据做任何操作,都必须保证存储和取出时是编码一致的,这样才能保证存进去是什么,读出来还是什么

下面的指令可以输出数据库支持的所有字符集

show charset;

下面的指令可以输出数据库支持的所有校验集

show collation;

下面的指令可以输出数据库的字符集设置

show variables like 'character_set_database';

下面的指令可以输出数据库的校验集是什么

show variables like 'collation_database';

当然还可以用通配符来展示连接时,提供服务时用到的字符集和校验集

于是我们就可以指明字符集和校验集来创建数据库

下面我们就来看看相同字符集但是不同校验集对于最终结果会产生什么影响

我们先创建两个数据库test1和test2,它们的字符集都用utf8,但是test1的校验集用utf8_general_ci(不区分大小写),test2的校验集用utf8_bin(区分大小写)

然后对于两个数据库执行相同的操作:分别建立一张表并向表中插入aAbB四个字符

然后分别查询和排序,对于test1不区分大小写的结果是:

对于test2区分大小写的结果是:

有时候我们可能会忘记自己当前在那个数据库中正在操作,可以用下面的指令查看:

select database();

库的备份与恢复

我们可以在命令行中用下面的指令对于数据库进行备份

这里需要输入root登录mysql时的密码

其实这个.sql文件中存的就是当初创建数据库时的一些操作

如果备份的不是整个数据库,而是其中的一张表,可用下面的指令

mysqldump -u root -p 数据库名 表名1 表名2 > 路径

如果同时备份多个数据库

mysqldump -u root -p -B 数据库名1 数据库名2 > 路径

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

其实不加-B就是.sql文件中没有创建数据库的操作

我们要恢复数据库可以:

如果要查看当前数据库正在执行哪些线程,可用

show processlist;

表的创建和删除

当我们创建完一个数据库之后,就是在数据库中创建各种各样的表,下面我们来简单的创建一个表:

if not exists跟上面创建库的作用是一样的,下面写表的成员时成员名放前面,类型放后面。后面的comment是对于前面表成员的解释,也可以说是描述。最后一行不一定非要指明字符集、校验集和存储引擎,因为这些内容是有默认的选择的

删除表非常简单

drop table table_name;

用不同的存储引擎创建表的区别

并且我们要知道,不同的存储引擎创建的表的文件类型和数量也是不同的,比如指定MyIsam创建的表会在/var/lib/mysql/db_name下创建如下的文件

其实.MYD的D就是指data,证明这里面存的是数据信息

.MYI的I就是指index,证明这里面存的是索引信息

如果指定InnoDB时会创建如下的文件

这里.ibd的i就是index,d就是data,证明这种存储引擎把数据和索引信息存到了一个文件中,这也更能体现不同存储引擎之间的差别

查看表

如何查看当前数据库下都有哪些表呢?

可以用show tables;

但是首先要保证我们确实在某个数据库里面

可以用下面的指令来看看这个表中都有哪些字段呢

如果要更详细的展示当时创建这个表时的详细信息,可以

show create table table_name;

但是这样看起来是非常乱的,可以把;改为\G

show create table table_name \G

这里面和我们当时创建表时写的内容明显不完全一样,那是因为mysqld会对我们的语句做优化成标准的语句存起来,所以会对我们的语句做修改

修改表

修改表的名字非常简单

alter table old_name rename to new_name;

下面可以修改表的内容,比如向表中插入数据

红框内的可加可不加,因为不加默认就是向每个属性值中依次添加内容

添加删除属性

比如要给用户再添加一个属性,比如性别gender,可以像下面这样

要指定添加的属性名称,类型和位置

如果要删除属性也很简单,直接

修改改变属性

如果要改变某个属性的类型,用modify,比如把name 的varchar(20)改为varchar(60),可以

可以看到修改之后之前的comment也就没了,所以这是一种覆盖式的修改

如果要直接改变某个属性,要用change

并且要加上要修改成的类型,要不然没法确定类型

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

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

相关文章

大数据新视界 -- 大数据大厂之 Hive 函数库:丰富函数助力数据处理(上)(11/ 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

03.ES7 04.ES8

3.1.Array.includes Includes 方法用来检测数组中是否包含某个元素&#xff0c;返回布尔类型值 <script>// includes const mingzhu [王二,张三,李四,王五];//判断console.log(mingzhu.includes(张三));//trueconsole.log(mingzhu.includes(周六));//false//indexOf …

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译 Why Is the Story of Materials Really the Story of Civilisation? 为什么材料的故事实际上就是文明的故事&#xff1f; Mark Miodownik 1 Everything is made of something. Take away co…

下载安装Android Studio

&#xff08;一&#xff09;Android Studio下载地址 https://developer.android.google.cn/studio 滑动到 点击下载文档 打开新网页 切换到english ![](https://i-blog.csdnimg.cn/direct/b7052b434f9d4418b9d56c66cdd59fae.png 等待一会&#xff0c;出现 点同意后&#xff0…

【解决方案】pycharm出现 为项目选择的Python解释器无效

文章目录 1.问题重述2.解决方案END 1.问题重述 第二次启动项目的时候出现 2.解决方案 右下角点 先选无解释器&#xff0c;然后在用项目配置好的解释器&#xff0c;然后就好了&#xff0c;估计是第二次启动的时候没有识别到&#xff0c;UI的信号设置的问题 END

浏览器的数据六种存储方法比较 :LocalStorage vs. IndexedDB vs. Cookies vs. OPFS vs. WASM-SQLite

在构建该 Web 应用程序&#xff0c;并且希望将数据存储在用户浏览器中。也许您只需要存储一些小标志&#xff0c;或者甚至需要一个成熟的数据库。 我们构建的 Web 应用程序类型发生了显着变化。在网络发展的早期&#xff0c;我们提供静态 html 文件。然后我们提供动态渲染的 h…

linux一键部署apache脚本

分享一下自己制作的一键部署apache脚本&#xff1a; 脚本已和当前文章绑定&#xff0c;请移步下载&#xff08;免费&#xff01;免费&#xff01;免费&#xff01;&#xff09; &#xff08;单纯的分享&#xff01;&#xff09; 步骤&#xff1a; 将文件/内容上传到终端中 …

Java ConcurrentHashMap

Java Map本质不是线程安全的&#xff0c;HashTable和Collections同步包装器&#xff08;Synchronized Wrapper&#xff09;在并发场景下性能低。Java还为实现 Map 的线程安全提供了并发包&#xff0c;保证线程安全的方式从synchronize简单方式到精细化&#xff0c;比如Concurre…

redis下载、基础数据类型、操作讲解说明,持久化、springboot整合等

1 Redis是什么 官网&#xff1a;https://redis.io 开发者&#xff1a;Antirez Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器&#xff0c;是一个基于内存的键值型NoSQL数据库。 Redis是一个开源的、高性能的键值对存储系统&#xff0c;它支持多种数据结构&…

C# 解决【托管调试助手 “ContextSwitchDeadlock“:……】问题

文章目录 一、遇到问题二、解决办法 一、遇到问题 托管调试助手 “ContextSwitchDeadlock”:“CLR 无法从 COM 上下文 0x56e81e70 转换为 COM 上下文 0x56e81d48&#xff0c;这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows …

系统学习算法: 专题二 滑动窗口

题目一&#xff1a; 算法原理&#xff1a; 依然第一反应是暴力枚举&#xff0c;将所有的子数组都枚举出来&#xff0c;找到满足条件的长度最小的子数组&#xff0c;但是需要两层循环&#xff0c;时间复杂度来到O&#xff08;N^2&#xff09; 接下来就该思考如何进行优化 如果…

QGIS制作xyz切片(mbtiles)

MBTiles是由MapBox制定的一种将瓦片地图数据存储到SQLite数据库中并可快速使用&#xff0c;管理和分享的规范。它使得数以百万的瓦片数据存储在一个文件中&#xff0c;而且SQLite数据库支持多种平台&#xff0c;所以使用MBTiles在移动设备上浏览瓦片数据是比较理想的方式。 QGI…

软件测试——性能测试工具JMeter

1.JMeter介绍 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。JMeter小巧轻便且免费&#xff0c;逐渐成为了主流的性能测试工具&#xff0c;是每个测试人员都必须要掌握的工具之一。 环境要求&#xff1a; ​ 需要Java8或者更高的版本。 1.1 JMeter的下…

【C++算法】20.二分查找算法_x 的平方根

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; 69. x 的平方根 题目描述&#xff1a; 解法 暴力解法&#xff1a; 如果x17 从1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5......这些数里面找他们的平方…

拥抱 OpenTelemetry:阿里云 Java Agent 演进实践

作者&#xff1a;陈承 背景 在 2018 年的 2 月&#xff0c;ARMS Java Agent 的第一个版本正式发布&#xff0c;为用户提供无侵入的的可观测数据采集服务。6 年后的今天&#xff0c;随着软件技术的迅猛发展、业务场景的逐渐丰富、用户规模的快速增长&#xff0c;我们逐渐发现过…

【项目日记】仿mudou的高并发服务器 --- 实现HTTP服务器

对于生命&#xff0c;你不妨大胆一点&#xff0c; 因为我们始终要失去它。 --- 尼采 --- ✨✨✨项目地址在这里 ✨✨✨ ✨✨✨https://gitee.com/penggli_2_0/TcpServer✨✨✨ 仿mudou的高并发服务器 1 前言2 Util工具类3 HTTP协议3.1 HTTP请求3.2 HTTP应答 4 上下文解析模块…

从0在自己机器上部署AlphaFold 3

本文介绍如何在自己本地机器上安装AlphaFold 3。 在10月份&#xff0c;Google DeepMind的首席执行官Demis Hassabis和高级研究科学家John M. Jumper所领导的团队&#xff0c;利用AI技术成功预测了几乎所有已知蛋白质的结构&#xff0c;开发出备受赞誉的AlphaFold&#xff0c;并…

faiss库中ivf-sq(ScalarQuantizer,标量量化)代码解读-6

调试 经过gdb调试获取的调用栈内容如下&#xff0c;链接&#xff1a; 步骤函数名称文件位置说明1faiss::IndexFlatCodes::add/faiss/IndexFlatCodes.cpp:24在 add 方法中&#xff0c;检查是否已经训练完成&#xff0c;准备添加向量到索引中。2std::vector<unsigned char&g…

SQL进阶——子查询与视图

在SQL中&#xff0c;子查询和视图是两种强大的技术&#xff0c;用于处理复杂的查询、提高代码的重用性以及优化查询性能。子查询允许开发者在查询中嵌套其他查询&#xff0c;而视图则是对复杂查询的封装&#xff0c;可以简化开发工作并提高代码的可维护性。 本章将深入探讨如何…

【论文阅读】 Learning to Upsample by Learning to Sample

论文结构目录 一、之前的上采样器二、DySample概述三、不同上采样器比较四、整体架构五、设计过程&#xff08;1&#xff09;初步设计&#xff08;2&#xff09;第一次修改&#xff08;3&#xff09;第二次修改&#xff08;4&#xff09;第三次修改 六、DySample四种变体七、复…