MySQL:库表操作
MySQL:库表操作
- 库操作
- 查看
- 创建
- 字符编码集
- 删除
- 修改
- 备份
- 表操作
- 创建
- 查看
- 删除
- 修改
库操作
查看
- 查看存在哪些数据库:
show databases;
示例:

- 查看自己当前处于哪一个数据库:
select database();
示例:

此处由于我不处于任何一个数据库中,此处值为NULL
- 查看当前有哪些用户连接到了
MySQL:
show processlist;
示例:

创建
- 创建一个数据库
语法:
create database [if not exists] 数据库名;
[if not exists]:如果数据库存在,就不创建该数据库。
示例:

此时就创建了blog_db数据库,可以通过show databases查看。
一个数据库,对操作系统而言,本质就是一个目录,在我的ubuntu主机下,数据库存储在了/var/lib/mysql目录下,这个路径会因为MySQL版本以及操作系统而不同。
此时我的/var/lib/mysql目录下,也同步出现了blog_db目录:

字符编码集
在MySQL中,数据库有两种字符编码集合:
字符集:字符存储时,采用的编码方式
校验集:字符读取时,采用的编码方式
查看系统支持的
字符集:
show charset;
示例:

- 查看系统支持的
校验集:
show collation;
示例:

此时系统就列出了支持的各种集合,比如utf8。
可以在创建数据库时,指定使用的字符集与校验集
- 指定
字符集:
create database [if not exists] 数据库名 charset=xxx;
create database [if not exists] 数据库名 character set xxx;
以上两种方式,都可以指定字符集为xxx
- 指定
校验集:
create database [if not exists] 数据库名 collate xxx;
示例:
执行create database db_1 charset=utf8 collate utf8_general_ci:

该指令创建了数据库db_1,并指定字符集为utf8,校验集为utf8_general_ci。
在数据库对应的目录中,会存在一个文件dp.opt,其内部存储了数据库对应的校验集与字符集:

当然,如果你不指定字符集和校验集,此时会使用系统默认的。
查看系统默认的
字符集:
show variables like 'character_set_database';
示例:

即默认的字符集为utf8。
- 查看系统默认的
校验集:
show variables like 'collation_database';
示例:

即默认的校验集为utf8_general_ci。
删除
- 删除数据库:
drop database [if exists] 数据库名;
示例:

修改
修改数据,主要是指修改数据库使用的字符集和校验集。
- 修改
字符集:
alter database 数据库名 charset=xxx;
示例:

- 修改
校验集:
alter database 数据库名 collate xxx;
示例:

备份
- 拷贝数据库指令
mysqldump -P 端口号-u 用户名 -p 密码 -B 数据库名 > 数据库备份存储的文件路径
注意:该指令要在bash中执行,而不是数据库中。
比如备份bit_index数据库:
mysqldump -B bit_index > ~/test/bit_index.sql
上述指令指定了一个名为bit_index 数据库,将其保存在路径~/test/bit_index.sql。
此时在对应路径下,就产生了对应.sql文件:

通过vim查看一下sql内部的数据:

可以发现:.sql文件并不是简单的拷贝一份数据库,而是保留了整个数据库的SQL语句。
- 还原数据库
source 路径.sql;
该指令要在MySQL内部执行,而不是命令行。
表操作
接下来学习如何操作一个数据库内部的表。
- 进入/切换 数据库:
use 数据库名;
示例:

如图,我创建了一个名为box_he的数据库,随后执行use box_he进入了该数据库,通过select database()查看当前所处的数据库,可以看到当前确实处于box_he中。
创建
- 创建一个表:
create table [if not exists] 表名 (field1 datatype,field2 datatype,field3 datatype
) character set 字符集 collate 校验集 engine 存储引擎;
[if not exists]:可省略,如果不存在这个表,才创建field:列名datatype:该列的数据类型character set:指定字符集,若没有指定,与数据库使用的字符集一致- 也可写为:
charset=字符集
- 也可写为:
collate:指定校验集,若没有指定,与数据库使用的校验集一致engine:指定存储引擎- 也可写为:
engine=存储引擎
- 也可写为:
注意事项:
- 每一个列后面都有一个逗号,但是最后一个没有
- 整个语句末尾有分号
示例:

我创建了一个表t1,内部有id列,类型是int;name列,类型是varchar(20);字符集为utf8;校验集为utf8_general_ci;存储引擎是MyIsam。
此时在/var/lib/mysql下的boe_he目录下,出现了三个文件:t1.frm,t1.MYD,t1.MYI这三个文件共同维护了t1这张表。

可见:数据库中的表的本质,就是多个文件!
而不同存储引擎,对一张表的存储形式不同,比如创建一个同样结构的表,使用InnoDB存储引擎:

路径/var/lib/mysql/box_he下:

可以看到,同样的表结构InnoDB,存储t2只使用了两个文件t2.frm和t2.ibd。关于存储引擎的具体内容会在索引部分讲解。现在只需要了解:不同存储引擎,对表的存储存在差别即可。
查看
- 查看当前数据库下有哪些表:
show tables;
示例:

此处的t1,t2也就是刚刚创建的两个表。
- 查看表的结构:
desc 表名;
示例:

各个字段含义如下:
Field:列名Type:列的数据类型Null:该列是否允许为空Key:索引类型Default:默认值Extra:扩充
- 查看建表时的语句:
show create table 表名;
示例:

执行语句后,展示了创建表t1时的语句,直接执行该语句,格式比较混乱,一般来说建议将末尾的分号;改为\G:
show create table 表名 \G
这个\G可以将数据以更加直观的方式展示出来:

建表的语句与我们输入的语句略有出入,这是因为MySQL会对输入的语句进行优化,比如说MySQL建议将关键字全部大写,我们就算是以小写的语句创建表格,底层还是会被转化为大写。
不过我个人认为小写的语句更加直观,可以很快分辨出是哪一个单词,而且因为有语句优化,最后存储时还是大写,所以我使用小写。
再比如每一列后面都有一个DEFAULT NULL,表示默认值为NULL,这个也是MySQL的优化,如果我们不指定默认值,就会自动设置默认值为NULL。具体如何指定默认值,会在《MySQL:表的约束》博客中讲解。
删除
- 删除一个表:
drop table [if exists] 表名 [, 表名, ...];
[if exists]:如果表存在,才删除它[, 表名, ...]:可以一次性删除多个表,表名之间用逗号,分隔
示例:

当我把t1和t2删除后,此时执行show tables,就显示Empty set即一个空的数据库。
修改
由于刚刚把t1和t2都删掉了,此处我重新创建这两个表,方便展示后续操作:

- 修改表名:
alter table 旧表名 rename [to] 新表名;
rename [to]:此处的to可省略,效果一样
示例:

此处我将t1和t2分别改名为table_1和table_2。
- 插入新的列
alter table 表名 add 列名 类型 comment 描述 after xxx;
comment:相当于备注,用于表示这一列数据的含义after:指定新增的列插入到哪一列后面,如果不指定,默认插入到最后一列
示例:

语句alter table table_1 add age int comment '年龄' after id的作用,就是在id列后面,插入age列,类型是int。
对比前后的desc table_1,确实多出了age列。
- 删除列
alter table 表名 drop 列名;
示例:

以上指令,删除了age列
- 修改列
alter table 表名 change 旧列名 新列名 类型;
示例:

我把id列改为stu_id列,并把类型从int改为了smallint。由于我把数据类型变小了,此时有可能会发生数据精度丢失,一般不建议这样操作。
相关文章:
MySQL:库表操作
MySQL:库表操作 库操作查看创建字符编码集 删除修改备份 表操作创建查看删除修改 库操作 查看 查看存在哪些数据库: show databases;示例: 查看自己当前处于哪一个数据库: select database();示例: 此处由于我不处于任…...
8.3 End-to-end Data Protection (Optional)
8.3 End-to-end Data Protection (Optional) 为了提供从应用程序到NVM介质并返回到应用程序本身的稳健数据保护,可以使用端到端数据保护。如果启用了此可选机制,则将额外的保护信息(例如CRC)添加到逻辑块中,控制器和/或主机软件可以对其进行评估,以确定逻辑块的完整性。…...
python实现图像对比度增强算法
python实现直方图均衡化、自适应直方图均衡化、连接组件标记算法 1.直方图均衡化算法详解算法步骤公式Python 实现详细解释优缺点 2.自适应直方图均衡化算法详解算法步骤公式Python 实现详细解释优缺点 3.连接组件标记算法详解算法步骤8连通与4连通公式Python 实现详细解释优缺…...
【D3.js in Action 3 精译_020】2.6 用 D3 设置与修改元素样式 + 名人专访(Nadieh Bremer)+ 2.7 本章小结
当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可视化最佳实践(下)1.4 本章小结 第二章…...
GIT命令学习 二
📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 ☁️运维工程师的职责:监…...
LeetCode 150, 112, 130
文章目录 150. 逆波兰表达式求值题目链接标签思路代码 112. 路径总和题目链接标签思路代码 130. 被围绕的区域题目链接标签思路代码 150. 逆波兰表达式求值 题目链接 150. 逆波兰表达式求值 标签 栈 数组 数学 思路 本题很像 JVM 中的 操作数栈,当写出以下三行…...
c++应用网络编程之五Windows常用的网络IO模型
一、Windows的网络编程 其实对开发者而言,只有Windows和其它平台。做为一种普遍流行的图形OS,其一定会与类Linux的编程有着明显的区别,这点当然也会体现在网络编程上。Windows有着自己一套相对独立的上层Socket编程模型或者说框架࿰…...
PostgreSQL 中如何解决因大量并发删除和插入操作导致的索引抖动?
🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何解决因大量并发删除和插入操作导致的索引抖动一、理解索引抖动二、索引抖动的影响三…...
鑫创SSS1700USB音频桥芯片USB转IIS芯片
鑫创SSS1700支持IIC初始外部编(EEPROM选项),两线串行总线(I2C总线)用于外部MCU控制整个EEPROM空间可以通过MCU访问用于主机控制同步的USB HID外部串行EEPROM(24C02~24C16)接口,用于客户特定的USB视频、PID、…...
计算机视觉发展历程
文章目录 前言一、发展历程1)、萌芽期(1960s-1970s)2)、基础发展期(1980s)3)、系统开发期(1990s-2000s)4)、深度学习兴起期(2010s)5&a…...
从安装Node到TypeScript到VsCode的配置教程
从安装Node到TypeScript到VsCode的配置教程 1.下载Node安装包, 链接 2.双击安装包,选择安装路径,如下: 3.一直点击下一步,直至安装结束即可: 这个时候,node会默认配置好环境变量,并且…...
Jackson详解
文章目录 一、Jackson介绍二、基础序列化和反序列化1、快速入门2、序列化API3、反序列化API4、常用配置 三、常用注解1、JsonProperty2、JsonAlias3、JsonIgnore4、JsonIgnoreProperties5、JsonFormat6、JsonPropertyOrder 四、高级特性1、处理泛型1.1、反序列化List泛型1.2、反…...
【算法】字符串
快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、最长公共前缀二、最长回文子串三、二进制求和四、字符串相乘 引言 字符串题,大多数是模…...
Python酷库之旅-第三方库Pandas(037)
目录 一、用法精讲 116、pandas.Series.div方法 116-1、语法 116-2、参数 116-3、功能 116-4、返回值 116-5、说明 116-6、用法 116-6-1、数据准备 116-6-2、代码示例 116-6-3、结果输出 117、pandas.Series.truediv方法 117-1、语法 117-2、参数 117-3、功能 …...
iOS 左滑返回事件的控制
0x00 视图结构 1-根视图 1.1-控制器A 1.1.1-控制器B 1.1.1.1-控制器C 0x01 控制 通过设置 self.navigationController.interactivePopGestureRecognizer.enabled 为 YES 或 NO 来控制当面界面,是否能左滑返回 在 控制器B 的生命周期方法内,设置属性 s…...
= null 和 is null;SQL中关于NULL处理的4个陷阱;三值逻辑
一、概述 1、NULL参与的所有的比较和算术运算符(>,,<,<>,<,>,,-,*,/) 结果为unknown; 2、unknown的逻辑运算(AND、OR、NOT)遵循三值运算的真值表; 3、如果运算结果直接返回用户,使用NULL来标识unknown 4、如…...
拖拽上传(预览图片)
需求 点击上传图片,或直接拖拽图片到红色方框里面也可上传图片,上传后预览图片 效果 实现 <!DOCTYPE html> <html lang"zh-cn"><head><meta charset"UTF-8"><meta name"viewport" content&…...
Oracle 12c新特性 In-Memory Column Store
Oracle 12c引入了一项重要的特性——In-Memory Column Store(简称IM或In-Memory),这一特性极大地提升了数据库在处理分析型查询时的性能。以下是关于Oracle 12c In-Memory特性的详细介绍: 一、基本概念 In-Memory Column Store&…...
【数据结构】二叉树———Lesson2
Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…...
mongodb数据导出与导入
一、先去检查mongodump mongodump --version 如果报 mongodump version: built-without-version-string 或者其他的较老的版本,直接去下载最新的【传送门】 【以Ubuntu18.04为例】 安装工具 假设你下载的是 .tgz 文件(适用于 Linux 系统)&am…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
