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…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...
python打卡第47天
昨天代码中注意力热图的部分顺移至今天 知识点回顾: 热力图 作业:对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图,展示模…...
P10909 [蓝桥杯 2024 国 B] 立定跳远
# P10909 [蓝桥杯 2024 国 B] 立定跳远 ## 题目描述 在运动会上,小明从数轴的原点开始向正方向立定跳远。项目设置了 $n$ 个检查点 $a_1, a_2, \cdots , a_n$ 且 $a_i \ge a_{i−1} > 0$。小明必须先后跳跃到每个检查点上且只能跳跃到检查点上。同时࿰…...
CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found
Nginx1.24编译时,报LuaJIT2.x错误, configuring additional modules adding module in /www/server/nginx/src/ngx_devel_kit ngx_devel_kit was configured adding module in /www/server/nginx/src/lua_nginx_module checking for LuaJIT 2.x ... not…...
