【MySQL】库和表的基本操作

server/2024/12/2 14:27:41/

目录

库的增删查改

字符集与校验集

库的备份与恢复

表的创建和删除

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

查看表

修改表

添加删除属性

修改改变属性


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

库的增删查改

增加库可用下面的语句

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.ppmy.cn/server/146740.html

相关文章

使用开源GCC编译微软WMI相关函数的示例代码

如下代码是使用国产RedPanda-Cpp的编译工具编译的,该工具使用简单; 该方式是调用微软的WMI接口相关函数 但是使用GCC编译会出现编译不过的问题,很多代码库的函数都不存在; 在编译时,需要添加这些库文件:…

【大数据学习 | Spark调优篇】Spark之JVM调优

1. Java虚拟机垃圾回收调优的背景 如果在持久化RDD的时候,持久化了大量的数据,那么Java虚拟机的垃圾回收就可能成为一个性能瓶颈。因为Java虚拟机会定期进行垃圾回收,此时就会追踪所有的java对象,并且在垃圾回收时,找…

Linux服务器安装Linux宝塔面板部署wordpress网站以及雷池WAF

一、Linux服务器安装Linux宝塔面板 这个步骤参考网上其他教程。 二、Linux宝塔面板部署wordpress网站 这个步骤参考网上其他教程,保证网站能够正常访问,并且使用Linux宝塔面板申请并部署了SSL证书,使用https协议正常访问。 三、Linux宝塔…

MYSQL-查看系统变量信息语法(四十)

13.7.5.40 SHOW WARNINGS 语句 SHOW WARNINGS [LIMIT [offset,] row_count] SHOW COUNT(*) WARNINGSSHOW WARNINGS是一个诊断语句,显示有关在当前会话中执行语句所导致的情况(错误、警告和注释)的信息。DML语句(如INSERT、UPDATE…

Y20030018基于Java+Springboot+mysql+jsp+layui的家政服务系统的设计与实现 源代码 文档

家政服务系统的设计与实现 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 随着人们生活水平的提高,老龄化、少子化等多重因素影响,我国对家政服务人群的需求与日俱增。家政服务行业对我国的就业和社会效益贡献也与日俱增&#…

linux环境下,导出conda和pip的安装包和对应版本

linux环境下,导出conda和pip的安装包和对应版本 导出conda环境中的安装包文件:导出环境重新创建环境注意事项 导出pip的安装包导出当前安装包列表根据导出的列表重新安装包 注意事项 导出conda环境中的安装包文件: 导出环境 导出环境到 YAML…

uniapp图片上传预览uni.chooseImage、uni.previewImage

文章目录 1.上传图片2.预览图片 1.上传图片 uni.chooseImage(OBJECT) 从本地相册选择图片或使用相机拍照。 App端如需要更丰富的相机拍照API(如直接调用前置摄像头),参考plus.camera 微信小程序从基础库 2.21.0 开始, wx.choos…

编程语言中什么是框架?什么是Cocoa?Foundation.framework的底层实现?Swift如何引入ObjC框架?

编程语言中什么是框架? 在编程语言中,框架(Framework)是一种特定的软件库,它提供了一套预先定义的代码和组件,用于加速和简化特定类型的应用程序的开发。框架通常提供了一套标准化的开发工具集和约定&#…