MySQL:库表操作

news2024/11/15 13:43:51

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。由于我把数据类型变小了,此时有可能会发生数据精度丢失,一般不建议这样操作。


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

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

相关文章

Unity UGUI 之 Input Field

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 1.Input Field是什么? 给玩家提供输入的输入框 2.重要参数 中英文对照着看…

JSONNode树形解析或流式解析

哈喽,大家好,我是木头左! 什么是JSONNode? JSONNode是一个用于处理JSON数据的数据结构,它提供了一种简单、灵活、高效的方式来操作JSON数据。JSONNode可以看作是一个树形结构,其中每个节点都可以包含一个值…

MongoDB自学笔记(四)

一、前文回顾 上一篇文章中我们学习了MongoDB中的更新方法&#xff0c;也学了一部分操作符。今天我们将学习最后一个操作“删除”。 二、删除 原始数据如下&#xff1a; 1、deleteOne 语法&#xff1a;db.collection.deleteOne(< query >,< options >) 具体参…

OpenCV 像素操作—证件照换底色详细原理 C++纯手写实现

文章目录 总体步骤1.RGB转HSV2.找出要换的底色3.取反&#xff0c;黑白颠倒4.将原图像的非背景部分复制到新背景上 完整代码1.C纯手写版2.官方API版本 总体步骤 1.RGB转HSV 为什么一定要转为HSV 颜色空间&#xff1f; 将图像从BGR颜色空间转换为HSV颜色空间是因为HSV颜色空间更…

vscode 文件颜色变绿色

解决&#xff1a;关闭git功能 在设置中搜索Git:Enabled&#xff0c;取消Decorations: Enabled的勾选

内网渗透隧道构建,使用github项目联动msf绕uac,使用简单的spp来进行操作icmp隧道

在我们需要木马上线的时候&#xff0c;发现上线不了&#xff0c;我们一般就想到建立隧道&#xff0c;来解决问题&#xff0c;或者是说我们直接还一种连接的操作来进行上线。比如说我们正向连接上不了&#xff0c;我们可以还成反向连接的操作。或者我们使用隧道直接硬刚waf来进行…

计算机毕业设计-程序论文文档-基于SSM的驾校管理系统

本系统开发采用技术为JSP、Bootstrap、Ajax、SSM、Java、Tomcat、Maven 此文章为本人亲自指导加编写&#xff0c;禁止任何人抄袭以及各类盈利性传播&#xff0c; 相关的代码部署论文ppt代码讲解答辩指导文件都有可私要 项目源码&#xff0c;请关注❥点赞收藏并私信博主&#x…

代码随想录 day 18 二叉树

第六章 二叉树part06 详细布置 530.二叉搜索树的最小绝对差 需要领悟一下二叉树遍历上双指针操作&#xff0c;优先掌握递归 题目链接/文章讲解&#xff1a;https://programmercarl.com/0530.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E7%B…

鸿蒙OpenHarmony Native API【HiLog】

HiLog Overview Description: HiLog模块实现日志打印功能。 开发者可以通过使用这些接口实现日志相关功能&#xff0c;输出日志时可以指定日志类型、所属业务领域、日志TAG标识、日志级别等。 syscap SystemCapability.HiviewDFX.HiLog Since: 8 Summary Files File …

甄选范文“论企业集成平台的理解与应用”,软考高级论文,系统架构设计师论文

论文真题 企业集成平台(Enterprise Imtcgation Plaform,EIP)是支特企业信息集成的像环境,其主要功能是为企业中的数据、系统和应用等多种对象的协同行提供各种公共服务及运行时的支撑环境。企业集成平台能够根据业务模型的变化快速地进行信息系统的配置和调整,保证不同系统…

HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号3

基础认证题库请移步&#xff1a;HarmonyOS应用开发者基础认证题库 注&#xff1a;有读者反馈&#xff0c;题库的代码块比较多&#xff0c;打开文章时会卡死。所以笔者将题库拆分&#xff0c;单选题20个为一组&#xff0c;多选题10个为一组&#xff0c;题库目录如下&#xff0c;…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 堆内存申请(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

爬虫自己做的

1.urllib 1.1基本使用 1.2 下载&#xff08;图片&#xff0c;页面&#xff0c;视频&#xff09; 1.3 get 1.3.1 quote 中文变成对应uncode编码 当url 的wd中文时 quote是将中文变成对应uncode编码 然后拼接成完整的url 1.3.2urlencode方法 wd有多个参数 1.3.3ajas get实例 …

科普文:银行信贷系统概叙

信贷业务流程 资金需求者提交申请&#xff1a;资金需求者通过不同渠道&#xff08;如APP、网站、门店等&#xff09;提交贷款申请。 系统交互完成审批&#xff1a;系统通过自动化和人工相结合的方式&#xff0c;对贷款申请进行初步筛选和审批。 系统交互完成策略判断&#xf…

java学习---小项目---租房系统

package com.project.House_rental.HouseApp;import com.project.House_rental.HouseView.HouseView; //主界面 public class HouseApp {public static void main(String[] args) {new HouseView().List_();System.out.println("------已退出----------");} }package…

5G网络近海覆盖和融合应用5G网关5G路由器CPE

5G移动超远高速率CPE 5G移动超远距离高速率海上CPE是根据海上特殊场景需求&#xff0c;研发的5G天通电话&#xff0c;短信&#xff0c;北斗短报文&#xff0c;远航道宽带接入系统&#xff0c;专门为海洋急救&#xff0c;海洋作业、海洋施工定制的船用5G高速上网终端&#xff0c…

合并区间 1

合并区间 思路&#xff1a; 感觉就是一个个vector遍历&#xff1f; 两两对比。若第一个的第二个元素大于下一个的第一个元素&#xff0c;则合并&#xff0c;存入答案数组即可。 nonono 新思路 思路打开&#xff01; 对于每一个区间&#xff0c;判断他能覆盖的最大区间在哪里…

哈希 -- 简单实现

在STL库中&#xff0c;有map和set两个关联式容器&#xff0c;这两个容器的底层都是以红黑树为底层。但是在后续的发展过程中&#xff0c;我们发现有些场景的数据不适合用红黑树进行存储&#xff0c;所以有人就发明了底层为哈希表的map和set,称为unordered_map 和 unordered_set…

SAP Fiori 实战课程(二):新建页面

课程回顾 上一课中,利用Visual studio Code 新建、并运行了一个Demo工程。可以实现对项目的启动,启动后进入一个List清单。 那么本次课程的目前就是在上一节Demo的基础上,从零开始新建一个完整的页面。实现从首页清单,选择行后,鼠标点击,进入下一个页面。 准备工作 在开…

pcie数据传输

一 数据传输通道总体设计 在上传数据时首先将 FPGA 中数据缓存到 DDR3 存储器&#xff0c;然后上位机请求后把数据从DDR3 存储器中取出并通过 PCIE 总线将数据传输到上位机&#xff1b;在下传数据时上位机中的数据首先通过 PCIE 总线下传至 FPGA&#xff0c;FPGA 读取这些数据并…