MySQL:库表的基本操作
库操作
查看
- 查看存在哪些数据库:
show databases;
- 查看自己当前处于哪一个数据库:
select database();
由于我不处于任何一个数据库中,此处值为
NULL
- 查看当前有哪些用户连接到了
MySQL
:
show processlist;
创建
- 创建一个数据库
语法:
create database [if not exists] 数据库名;
[if not exists]
:如果数据库存在,就不创建该数据库。 一个数据库,对操作系统而言,本质就是一个目录,在我的
ubuntu
主机下,数据库存储在了/var/lib/mysql
目录下,这个路径会因为MySQL
版本以及操作系统而不同。
字符编码集
在MySQL
中,数据库有两种字符编码集合:
字符集
:字符存储时,采用的编码方式校验集
:字符读取时,采用的编码方式
查看系统支持的
字符集
:
show charset;
- 查看系统支持的
校验集
:
show collation;
可以在创建数据库时,指定使用的字符集与校验集
- 指定
字符集
:
create database [if not exists] 数据库名 charset=xxx;
create database [if not exists] 数据库名 character set xxx;
- 指定
校验集
:
create database [if not exists] 数据库名 collate xxx;
执行create database db_1 charset=utf8 collate utf8_general_ci
: 在数据库对应的目录中,会存在一个文件
dp.opt
,其内部存储了数据库对应的校验集
与字符集
:
查看系统默认的
字符集
:
show variables like 'character_set_database';
- 查看系统默认的
校验集
:
show variables like 'collation_database';
删除
- 删除数据库:
drop database [if exists] 数据库名;
修改
修改数据,主要是指修改数据库使用的字符集
和校验集
。
- 修改
字符集
:
alter database 数据库名 charset=xxx;
- 修改
校验集
:
alter database 数据库名 collate xxx;
mysqldump -B bit_index > ~/test/bit_index.sql
备份
- 拷贝数据库指令
mysqldump -P 端口号-u 用户名 -p 密码 -B 数据库名 > 数据库备份存储的文件路径
注意:该指令要在bash
中执行,而不是数据库中。
比如备份bit_index
数据库:
mysqldump -B bit_index > ~/test/bit_index.sql
上述指令指定了一个名为bit_index
数据库,将其保存在路径~/test/bit_index.sql
。
查看一下sql
内部的数据:
可以发现:.sql
文件并不是简单的拷贝一份数据库,而是保留了整个数据库的SQL
语句。
- 还原数据库
source 路径.sql;
该指令要在MySQL
内部执行,而不是命令行。
表操作
- 进入/切换 数据库:
use 数据库名;
创建
- 创建一个表:
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=存储引擎
- 也可写为:
注意事项:
- 每一个列后面都有一个逗号,但是最后一个没有
- 整个语句末尾有分号
此时在/var/lib/mysql
下的boe_he
目录下,出现了三个文件:t1.frm
,t1.MYD
,t1.MYI
这三个文件共同维护了t1
这张表。 可见:数据库中的表的本质,就是多个文件!
查看
- 查看当前数据库下有哪些表:
show tables;
- 查看表的结构:
desc 表名;
Field
:列名Type
:列的数据类型Null
:该列是否允许为空Key
:索引类型Default
:默认值Extra
:扩充
- 查看建表时的语句:
show create table 表名;
执行语句后,展示了创建表t1
时的语句,直接执行该语句,格式比较混乱,一般来说建议将末尾的分号;
改为\G
:
show create table 表名 \G
这个\G
可以将数据以更加直观的方式展示出来:
每一列后面都有一个DEFAULT NULL
,表示默认值为NULL
,这个也是MySQL
的优化,如果我们不指定默认值,就会自动设置默认值为NULL
。
删除
- 删除一个表:
drop table [if exists] 表名 [, 表名, ...];
修改
- 修改表名:
alter table 旧表名 rename [to] 新表名;
- 插入新的列
alter table 表名 add 列名 类型 comment 描述 after xxx;
comment
:相当于备注,用于表示这一列数据的含义after
:指定新增的列插入到哪一列后面,如果不指定,默认插入到最后一列
对比前后的desc table_1
,确实多出了age
列。
- 删除列
alter table 表名 drop 列名;
- 修改列
alter table 表名 change 旧列名 新列名 类型;
id
列改为stu_id
列,并把类型从int
改为了smallint
。由于我把数据类型变小了,此时有可能会发生数据精度丢失,一般不建议这样操作。
相关文章:

MySQL:库表的基本操作
库操作 查看 查看存在哪些数据库: show databases;查看自己当前处于哪一个数据库: select database(); 由于我不处于任何一个数据库中,此处值为NULL 查看当前有哪些用户连接到了MySQL: show processlist; 创建 创建一个数据库 语…...
JS领域的AI工程利器分享
JavaScript,这个在网页开发中广为人知的脚本语言,正逐渐在AI工程领域展现出其独特的魅力。对于那些希望将大语言模型(LLM)融入项目的开发者来说,以下五个JavaScript工具将是关键资源。 1. TensorFlow.js TensorFlow.…...

2024/9/20 使用QT实现扫雷游戏
有三种难度初级6x6 中级10x10 高级16x16 完成游戏 游戏失败后,无法再次完成游戏,只能重新开始一局 对Qpushbutton进行重写 mybutton.h #ifndef MYBUTTON_H #define MYBUTTON_H #include <QObject> #include <QWidget> #include <QPus…...

09.20 C++对C的扩充以及C++中的封装、SeqList
SeqList.h #ifndef SEQLIST_H #define SEQLIST_H#include <iostream> #include<memory.h> #include<stdlib.h> #include<string.h>using namespace std;//typedef int datatype; //类型重命名 using datatype int;//封装一个顺序表 class Seq…...

Git提交类型
说明:Git提交类型指的是代码commit时,写在comment前面的标志,表示此次commit的提交类型,如下: Git提交类型 常见的Git提交类型有: feat:新特性、新功能或优化; fix:修复…...

C++速通LeetCode简单第18题-杨辉三角(全网唯一递归法)
全网唯一递归法: vector<vector<int>> generate(int numRows) {vector<int> v;vector<vector<int>>vn;if (numRows 1){v.push_back(1);vn.push_back(v);v.clear();return vn;//递归记得return}if (numRows 2){v.push_back(1);vn.p…...

Redis作为单线程模型,为什么效率高、速度快呢?
前言: 效率高、速度快是相较于数据库来说的(MySQL、Orcale、SQL server) 文章目录 一、单线程模式的工作流程二、为什么快? 一、单线程模式的工作流程 这里我们所说的单线程是指:Redis只使用一个线程,来处…...

人工智能——猴子摘香蕉问题
一、实验目的 求解猴子摘香蕉问题,根据猴子不同的位置,求解猴子的移动范围,求解对应的过程,针对不同的目标状态进行求解。 二、实验内容 根据场景有猴子、箱子、香蕉,香蕉挂天花板上。定义多种谓词描述位置、状态等…...
对ViT 中Patch Embedding理解
借鉴了这个博主的ViT Patch Embedding理解-CSDN博客,再加了一些理解。 就通过代码来理解吧 假设输入图像的维度为HxWxC,分别表示高,宽和通道数。 PatchEmbed 的类,它继承了 nn.Module,实现了将输入的2维图像&#…...

Redis基本命令详解
1. 基本命令 命令不区分大小写,而key是区分大小写的 # select 数据库间的切换 数据库共计16个 127.0.0.1:6379> select 1# dbsize 返回当前数据库的 key 的数量 127.0.0.1:6379[1]> dbsize# keys * 查看数据库所有的key 127.0.0.1:6379[1]> keys *# fl…...

Java之线程篇四
目录 volatile关键字 volatile保证内存可见性 代码示例 代码示例2-(volatile) volatile不保证原子性 synchronized保证内存可见性 wait()和notify() wait()方法 notify() 理解notify()和notifyAll() wait和sleep的对比 volatile关键字 volati…...

计算机毕业设计之:基于微信小程序的校园流浪猫收养系统
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
SpringBoot:关于Redis的配置失效(版本问题)
我们使用redis时发现yaml配置中的redis相关配置不生效,后面发现将配置修改甚至删除所有相关redis的配置,springboot依然能使用redis里面默认的db0并且不报错。上网查阅了一些文章,也都没有解决今天分享下,我的处理方法, SpringBo…...
halcon 快速定义字典
定义一个名为params的字典 Params : dict{} 等价于用 create_dict (Params ) 为字典添加键值对,在halcon中箭只能是字符串,值可以是任何类型的obj或者tuple Params.remove_outer_edges : true Params.max_gap : 150 等价于用 set_dict_object (true,…...

Sublime text3怎么关闭提示更新
问题 sublime text 3有新版本后,会不停地在每次启动后弹窗提示更新版本 第一步 软件安装之前,切记是软件安装之前!!!需要在hosts中添加以下内容(屏蔽官网联网检测):hosts的位置一般在C:\Windows\System32\drivers\etc…...
生成式语言模型技术栈
生成式语言模型的最新技术栈正在快速发展,尤其是随着大规模预训练模型(LLMs)和生成式AI的应用不断扩展。以下是当今最前沿的生成式语言模型技术栈,涵盖从模型开发到优化、推理和部署的各个环节。 1. 基础模型开发 基础模型开发包…...

进程分析工具Process Explorer使用
进程分析工具Process Explorer使用 Process Explorer让使用者能了解看不到的在后台执行的处理程序,能显示目前已经载入哪些模块,分别是正在被哪些程序使用着,还可显示这些程序所调用的DLL进程,以及他们所打开的句柄。Process Expl…...
vue 中如何实现鼠标拖动出发滚动条的跟随移动?
使用场景 在做弹窗、表单或 tab 切换需求的时候,有时候因为内容过长会导致出现滚动条,但是只能拖动滚动条时会导致操作不便,我们会希望实现通过拖动内容区实现滚动条的滑动。这样操作就会简单多了。 实现思路 如果要实现鼠标辅助触发滚动条…...

【Java EE】文件IO
Author:MTingle major:人工智能 --------------------------------------- Build your hopes like a tower! 目录 一、文件是什么? 二、针对文件系统操作的API 1.文件路径,文件名,文件是否存在 2. 创建文件 3.删除文件&#…...
使用 React、Material-UI、Spring、MySQL、MyBatis 以及高德 API 模拟实时位置信息
要使用 React、Material-UI、Spring、MySQL、MyBatis 以及高德 API 模拟实时位置信息,你可以按以下步骤来实现: 目录 1. 前端 (React Material-UI) 2. 后端 (Spring Boot MyBatis MySQL) 3. 模拟实时位置数据 4. 前后端联调 1. 前端 (React Mat…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...

Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...

高抗扰度汽车光耦合器的特性
晶台光电推出的125℃光耦合器系列产品(包括KL357NU、KL3H7U和KL817U),专为高温环境下的汽车应用设计,具备以下核心优势和技术特点: 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计,确保在…...