当前位置: 首页 > news >正文

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=存储引擎

注意事项:

  1. 每一个列后面都有一个逗号,但是最后一个没有
  2. 整个语句末尾有分号

示例:

在这里插入图片描述

我创建了一个表t1,内部有id列,类型是intname列,类型是varchar(20);字符集为utf8;校验集为utf8_general_ci;存储引擎是MyIsam

此时在/var/lib/mysql下的boe_he目录下,出现了三个文件:t1.frmt1.MYDt1.MYI这三个文件共同维护了t1这张表。

在这里插入图片描述

可见:数据库中的表的本质,就是多个文件

而不同存储引擎,对一张表的存储形式不同,比如创建一个同样结构的表,使用InnoDB存储引擎:

在这里插入图片描述

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

在这里插入图片描述

可以看到,同样的表结构InnoDB,存储t2只使用了两个文件t2.frmt2.ibd。关于存储引擎的具体内容会在索引部分讲解。现在只需要了解:不同存储引擎,对表的存储存在差别即可。


查看

  • 查看当前数据库下有哪些表:
show tables;

示例:

在这里插入图片描述

此处的t1t2也就是刚刚创建的两个表。

  • 查看表的结构:
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]:如果表存在,才删除它
  • [, 表名, ...]:可以一次性删除多个表,表名之间用逗号,分隔

示例:

在这里插入图片描述

当我把t1t2删除后,此时执行show tables,就显示Empty set即一个空的数据库。


修改

由于刚刚把t1t2都删掉了,此处我重新创建这两个表,方便展示后续操作:

在这里插入图片描述

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

示例:

在这里插入图片描述

此处我将t1t2分别改名为table_1table_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编程模型或者说框架&#xff0…...

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&#xff1b; 2、unknown的逻辑运算(AND、OR、NOT&#xff09;遵循三值运算的真值表&#xff1b; 3、如果运算结果直接返回用户&#xff0c;使用NULL来标识unknown 4、如…...

拖拽上传(预览图片)

需求 点击上传图片&#xff0c;或直接拖拽图片到红色方框里面也可上传图片&#xff0c;上传后预览图片 效果 实现 <!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&#xff08;简称IM或In-Memory&#xff09;&#xff0c;这一特性极大地提升了数据库在处理分析型查询时的性能。以下是关于Oracle 12c In-Memory特性的详细介绍&#xff1a; 一、基本概念 In-Memory Column Store&…...

【数据结构】二叉树———Lesson2

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…...

mongodb数据导出与导入

一、先去检查mongodump mongodump --version 如果报 mongodump version: built-without-version-string 或者其他的较老的版本&#xff0c;直接去下载最新的【传送门】 【以Ubuntu18.04为例】 安装工具 假设你下载的是 .tgz 文件&#xff08;适用于 Linux 系统&#xff09;&am…...

电路学习——经典运放电路之滞回比较器(施密特触发器)(2024.07.18)

参考链接1: 电子设计教程29&#xff1a;滞回比较器&#xff08;施密特触发器&#xff09; 参考链接2: 滞回比较器电路详细分析 参考链接3: 比较器精髓&#xff1a;施密特触发器&#xff0c;正反馈的妙用 参考链接4: 比较器反馈电阻选多大&#xff1f;理解滞后效应&#xff0c;轻…...

NVIDIA Container Toolkit 安装与配置帮助文档(Ubuntu,Docker)

NVIDIA Container Toolkit 安装与配置帮助文档(Ubuntu,Docker) 本文档详细介绍了在 Ubuntu Server 22.04 上使用 Docker 安装和配置 NVIDIA Container Toolkit 的过程。 概述 NVIDIA 容器工具包使用户能够构建和运行 GPU 加速容器。即可以在容器中使用NVIDIA显卡。 架构图如…...

JavaWeb day01-HTML入门

Web前端 课程安排 HTML、CSS简介 HTML快速入门 实现标题排版 新闻标题样式...

驱动框架——CMSIS第一部分 RTE驱动框架介绍

一、介绍CMISIS 什么是CMSIS&#xff08;cortex microcontrol software interface standard一种软件标准接口&#xff09;&#xff0c;官网地址&#xff1a;https://arm-software.github.io/CMSIS_6/latest/General/index.html 包含的core、driver、RTOS、dsp、nn等部分&…...

Debezium日常分享系列之:Debezium2.7版本PostgreSQL数据库连接器

Debezium日常分享系列之:Debezium2.7版本PostgreSQL数据库连接器 一、概述二、连接器的工作原理安全快照初始快照的默认工作流程行为临时快照触发临时增量快照触发临时阻塞快照增量快照增量快照流程Debezium 如何解决具有相同主键的记录之间的冲突快照窗口触发增量快照具有附加…...

保障信息系统安全保护等级调整期间的安全性

保障信息系统安全保护等级调整期间的安全性&#xff1a; 策略与实践 在当今数字化时代&#xff0c;信息系统已成为企业和组织运营的核心支撑。为了适应不断变化的业务需求和安全威胁环境&#xff0c;信息系统安全保护等级的调整成为必要之举。然而&#xff0c;这一调整过程可能…...

实战:shell编程之全量命令练习

概叙 槽点~~~~~~~&#xff01; 往期shell相关文章回顾&#xff0c;有兴趣的可以自行阅读和练习。 科普文&#xff1a;一文搞懂Vim-CSDN博客 科普文&#xff1a;jvm笔记-CSDN博客 科普文&#xff1a;一天学会shell编程-CSDN博客 科普文&#xff1a;Linux服务器巡检小结_lin…...

在 CentOS 7 上编译安装 Python 3.11

安装必要的依赖 首先&#xff0c;你需要安装一些开发工具和库&#xff0c;以便编译 Python 和 OpenSSL&#xff1a; yum -y groupinstall "Development tools" yum install -y wget gcc-c pcre pcre-devel zlib zlib-devel libffi-devel zlib1g-dev openssl-devel …...

Qt 4.8.7 + MSVC 中文乱码问题深入分析

此问题很常见&#xff0c;然而网上关于此问题的分析大多不够深刻&#xff0c;甚至有错误&#xff1b;加之Qt5又更改了一些编码策略&#xff0c;而很多文章并未提及版本问题&#xff0c;或是就算提了&#xff0c;读者也不重视。这些因素很容易让读者产生误导。今日我彻底研究透了…...

IDEA的常见代码模板的使用

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试&#xff08;Debug&#xff09; 第七章 …...

做电池网站的引导页/百度浏览器下载安装2023版本

2019独角兽企业重金招聘Python工程师标准>>> Fiddler绝对称得上是"抓包神器"&#xff0c; Fiddler不但能截获各种浏览器发出的HTTP请求, 也可以截获各种智能手机发出的HTTP/HTTPS请求。 Fiddler能捕获ISO设备发出的请求&#xff0c;比如IPhone, IPad, Mac…...

找人做任务网站有哪些/搜索引擎的工作原理是什么

首先需要在群晖的 Docker 中选择 Image&#xff0c;然后选择添加。 输入 Docker HUB 的地址 在弹出的对话框中输入 Docker Hub 的地址。 MongoDB 的地址为&#xff1a; Docker Hub 然后选择添加。 选择版本和运行 在后续的界面中&#xff0c;要求选择版本&#xff0c;我们选…...

网络销售推广平台/seo最新技巧

一个朋友是前阿里人&#xff0c;37岁&#xff0c;离职后就职美团。以前投一个面一个&#xff0c;今年想跳槽&#xff0c;但没想到投十个能有两个面试机会就不错了&#xff0c;最后索性又回了阿里做架构。 他在面试的时候&#xff0c;碰见比自己大的面试官&#xff0c;态度和善&…...

关于国际贸易的网站/站长工具关键词查询

本题要求将输入的任意3个整数从小到大输出。 输入格式: 输入在一行中给出3个整数&#xff0c;其间以空格分隔。 输出格式: 在一行中将3个整数从小到大输出&#xff0c;其间以“->”相连。 输入样例: 4 2 8 输出样例: 2->4->8 #include<stdio.h> #include<…...

旅游网站开发文献综述/友情链接怎么弄

PGL系统管理部相册链接:http://photo.163.com/openalbum.php?usernamepglsystem来自 “ ITPUB博客 ” &#xff0c;链接&#xff1a;http://blog.itpub.net/39335/viewspace-351448/&#xff0c;如需转载&#xff0c;请注明出处&#xff0c;否则将追究法律责任。 转载于:http…...

qq群网站制作/经典软文案例和扶贫农产品软文

上一节跟大家讲了Python的列表&#xff0c;当然不是完整的讲完&#xff0c;后续我们还会提到&#xff0c;这一节我们还是来讲Python的数据类型 首先要讲到的就是元组 元组其实拥有列表的一些特性&#xff0c;可以存储不同类型的值&#xff0c;但在某些方面元组又比不上列表 定义…...