【MySQL库的操作】
目录:
- 前言
- 库的操作
- 创建数据库
- 字符集和校验规则
- 校验规则对数据库的影响
- 选择和查看数据库
- 修改数据库
- 删除数据库
- 备份
- 注意事项
- 查看连接情况
- 总结
前言
| 剑指offer:一年又二天 |
|---|
库的操作
创建、选择、查看、修改、删除与备份。
创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
- 大写的表示关键字
- [] 是可选项
- CHARACTER SET: 指定数据库采用的字符集
- COLLATE: 指定数据库字符集的校验规则
mysql> show databases; --- 查看所有数据库,这些数据库都是默认的,我们不用管也不要动它们
+---------------------+
| Database |
+---------------------+
| information_schema |
| README_TO_RECOVER_A |
| mysql |
| performance_schema |
| sys |
+---------------------+
5 rows in set (0.00 sec)mysql> create database db1 --- 创建数据库db1,字符集和校验规则可以不写使用默认。-> charset=utf8-> collate=utf8_bin;
Query OK, 1 row affected (0.00 sec)mysql> show databases; --- 查看所有数据库
+---------------------+
| Database |
+---------------------+
| information_schema |
| README_TO_RECOVER_A |
| db1 | ---
| mysql |
| performance_schema |
| sys |
+---------------------+
6 rows in set (0.00 sec)
字符集和校验规则
- 查看系统默认字符集以及校验规则
show variables like 'character_set_database';
show variables like 'collation_database';
- 查看数据库支持的字符集
show charset;
字符集主要是控制用什么语言。比如utf8就可以使用中文。
- 查看数据库支持的字符集校验规则
show collation;
校验规则对数据库的影响
不区分大小写
create database test1 collate utf8_general_ci; --- 创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]
区分大小写
create database test2 collate utf8_general_ci; --- 创建一个数据库,校验规则使用utf8_ bin[区分大小写]
建表插入数据
mysql> create table stu(name char); --- 在数据库test1中建表stu,插入数据(test2同操作)
Query OK, 0 rows affected (0.04 sec)mysql> insert into stu values('a'), ('b'), ('A'), ('B');
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0mysql> select * from stu; --- 插入情况
+------+
| name |
+------+
| a |
| b |
| A |
| B |
+------+
4 rows in set (0.00 sec)
- 查询对比
mysql> use test1; --- 选择数据库test1
Database changedmysql> select * from stu where name = 'a'; --- 查询名字为a的学生
+------+
| name |
+------+
| a |
| A |
+------+
2 rows in set (0.00 sec)
mysql> use test1; --- 选择数据库test2
Database changedmysql> select * from stu where name = 'a'; --- 查询名字为a的学生
+------+
| name |
+------+
| a |
+------+
1 rows in set (0.00 sec)
- 排序对比
mysql> use test1; --- 选择数据库test1
Database changedmysql> select * from stu order by name; --- 按照名字排序
+------+
| name |
+------+
| a |
| A |
| b |
| B |
+------+
4 rows in set (0.00 sec)
mysql> use test1; --- 选择数据库test2
Database changedmysql> select * from stu order by name; --- 按照名字排序
+------+
| name |
+------+
| A |
| B |
| a |
| b |
+------+
4 rows in set (0.00 sec)
选择和查看数据库
show databases;
- 查看所有数据库
select database();
- 查看当前正在使用的数据库
show create database 数据库名;
- 查看数据库创建语句
mysql> show create database db1; --- 显示创建语法
+----------+-------------------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------------------+
| db1 | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
+----------+-------------------------------------------------------------------------------+
1 row in set (0.01 sec)mysql> show create database db1 \G --- 更加简洁的格式显示
*************************** 1. row ***************************Database: db1
Create Database: CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */
1 row in set (0.00 sec)
MySQL 建议我们关键字使用大写,但是不是必须的,在显示时服务器(mysqld)会将我们的语法进行规范处理。
数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字。
/*!40100 default… */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。
mysql> select database(); --- 查看现在所操作的数据库
+------------+
| database() |
+------------+
| NULL | --- 还没有选择数据库
+------------+
1 row in set (0.00 sec)mysql> use db1; --- 选择数据库db1
Database changedmysql> select database();
+------------+
| database() |
+------------+
| db1 | --- 现在在操作数据库db1
+------------+
1 row in set (0.00 sec)
修改数据库
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
- 对数据库的修改主要指的是修改数据库的字符集,校验规则
mysql> show create database db1 \G --- 字符集为 utf8 ,校验规则为 utf8_bin
*************************** 1. row ***************************Database: db1
Create Database: CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */
1 row in set (0.00 sec)mysql> alter database db1 charset=gbk; --- 修改字符集为gbk
Query OK, 1 row affected (0.00 sec)mysql> show create database db1 \G --- 修改是全部覆盖式写入,我们只指明字符集,没有指明校验规则,就改为默认
*************************** 1. row ***************************Database: db1
Create Database: CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET gbk */
1 row in set (0.00 sec)
mysql并没有提供自带的修改数据库名的操作,一种常见的做法是创建一个新的数据库,然后将旧数据库中的表结构和数据逐一导入到新数据库中,最后删除旧数据库。这样可以达到“修改”数据库名的效果。
删除数据库
DROP DATABASE [IF EXISTS] db_ name;
执行删除之后的结果:
- 数据库内部看不到对应的数据库 对应的数据库文件夹被删除,
- 级联删除,里面的数据表全部被删
(慎用)
mysql> create database test; --- 创建一个数据库test
Query OK, 1 row affected (0.00 sec)mysql> show databases like 'test'; --- 查看数据库,like:在所有结果中匹配名为test的数据库(用一下,后面会讲)
+-----------------+
| Database (test) |
+-----------------+
| test | --- 找到一个
+-----------------+
1 row in set (0.00 sec)mysql> drop database test; --- 删除数据库 test
Query OK, 0 rows affected (0.00 sec)mysql> show databases like 'test'; --- 再找,没找到
Empty set (0.00 sec)
备份
- 备份
语法:
[root@VM-4-11-centos ~]# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
-P3306:端口号
[root@VM-4-11-centos ~]# mysqldump -P3306 -u root -p -B db1 > ./db1_code.sql
-- 提示输入mysql中root账号的密码
这时,可以打开看看 db1_code.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。
- 还原
mysql> source D:/mysql-5.7.22/mytest.sql;
注意事项
- 如果备份的不是整个数据库,而是其中的一张表,怎么做?
[root@VM-4-11-centos ~]# mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
- 同时备份多个数据库
[root@VM-4-11-centos ~]# mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。
查看连接情况
语法
show processlist;
mysql> show processlist;
+----+--------+-----------+-------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+--------+-----------+-------+---------+------+----------+------------------+
| 3 | root | localhost | db1 | Sleep | 3710 | | NULL |
| 5 | kz1111 | localhost | db1_1 | Query | 0 | starting | show processlist |
+----+--------+-----------+-------+---------+------+----------+------------------+
2 rows in set (0.00 sec)
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。可以用这个指令来查看数据库连接情况。
总结
数据库不支持重命名,如果真的需要改名字,就把数据库进行备份,然后创建新库并导入即可。(一般用不到)
相关文章:
【MySQL库的操作】
目录: 前言库的操作创建数据库字符集和校验规则校验规则对数据库的影响 选择和查看数据库修改数据库删除数据库备份注意事项查看连接情况 总结 前言 剑指offer:一年又二天 库的操作 创建、选择、查看、修改、删除与备份。 创建数据库 CREATE DATABASE…...
rocketmq 集群环境部署及与spring cloud 集成
1 下载zip 安装包 rocketmq-all-5.1.4-bin-release.zip 2 修改启动配置,防止默认内存配置过高 runserver.sh/runbroker.sh/tools.sh 3 启动namesrv nohup sh bin/mqnamesrv >>namesrv.log & 4 启动brokerproxy 单点模式: nohup sh bin…...
SpringBoot——配置及原理
优质博文:IT-BLOG-CN 一、Spring Boot全局配置文件 application.properties与application.yml配置文件的作用:可以覆盖SpringBoot配置的默认值。 ◀ YML(is not a Markup Language:不仅仅是一个标记语言)࿱…...
fiddler抓包安卓
一、打断点 1、安卓手机和电脑在同一局域网下,手机连接的网络开启手动代理,ip填写电脑ip,端口填写fiddler中配置的端口。 ip查看: 端口配置:tools-options-connections 2、安装证书,手机浏览器输入电脑ip…...
Maven 进阶学习指南---setting详解
前言 当我们在开发项目时,有时需要用到外部依赖组件,例如当我们需要 Json 序列化的时候需要用到 FastJson 组件,我们可以通过下载对应 jar 包加载到项目中。但当一个大的项目同时需要依赖各种各样的外部服务,就存在着配置繁琐、依…...
人工智能与我们的生活
人工智能对我们的生活影响有多大 1. 人工智能的领域 人工智能涉及的领域广泛,包括但不限于: a. 医疗保健领域 人工智能在医疗诊断、药物研发、患者管理等方面发挥了重要作用。医疗影像分析、基因组学研究等都受益于人工智能技术,为医学领…...
前端将blob转换为可下载的url及下载
一.转换 //将blob转换为url const changeBlobToUrl blobData > {return new Promise(resolve > {//创建Blob对象const blob new Blob([blobData])// 创建FileReader对象const reader new FileReader()reader.onload function (e) {resolve(e.target.result)}// 使用F…...
LVS-DR实验
实验前准备 DR服务器:192.168.188.11 192.168.188.15 NFS服务器:192.168.188.14 Web服务器1:192.168.188.12 Web服务器2:192.168.188.13 Vip:192.168.188.188 客户端:192.168.188.200 配置负载均衡调度…...
MYSQL索引使用注意事项
索引使用注意事项: 1.索引列运算 不要在索引列上进行运算操作,否则索引将失效; 2.字符串不加引号 字符串类型使用时,不加引号,否则索引将失效; 3.模糊查询 如果仅仅是尾部模糊匹配,索引将不会失…...
深入理解Java中的String、StringBuilder和StringBuffer(每天一个技术点,第一天)
大家好,我是你们的博主每天一个技术点。今天,我们将探讨Java中的一个重要主题:String、StringBuilder和StringBuffer。这些类在Java编程中无处不在,但它们之间的区别和用法可能并不是所有人都清楚。所以,让我们深入了解…...
PHP逻辑运算符学习资料
PHP逻辑运算符 在PHP中,逻辑运算符用于组合和比较不同的逻辑条件。下面是PHP中常用的逻辑运算符示例: 1. 与运算符(&& 或 and) $age 25; $isStudent true;if ($age > 18 && $isStudent) {echo "You …...
深入解析CPU工作原理与细节
计算机是现代社会中不可或缺的工具,而CPU(中央处理器)则是计算机的核心组件。CPU负责执行指令和控制计算机的各种操作,它的性能直接影响着计算机的速度和效率。 1. CPU的基本结构 CPU通常由以下几个主要组成部分构成:…...
计算机网络(超详解!) 第二节 物理层(上)
1.物理层的基本概念 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。 物理层的作用是要尽可能地屏蔽掉不同传输媒体和通信手段的差异。 用于物理层的协议也常称为物理层规程(procedure)。 2.物理层的主要任务 主要…...
c++ 打怪升级
内联函数 调用时,直接会把代码拷贝到调用处; 函数指针 可以类比数组 //内联函数 调用时直接将代码拷贝过来 inline const string& longerStr(const string &s1,const string & s2){return s1.size()>s2.size() ? s1:s2; }int main(i…...
代码随想录第十三天(一刷C语言)|翻转二叉树对称二叉树
创作目的:为了方便自己后续复习重点,以及养成写博客的习惯。 一、翻转二叉树 ledcode题目:https://leetcode.cn/problems/invert-binary-tree/ AC代码: /*** Definition for a binary tree node.* struct TreeNode {* int …...
Temu已成拼多多第二曲线
11月28日,拼多多公布最新一季业绩报告。三季度,该集团实现营收688.4亿元,同比增长93.9%;实现美国通用会计准则口径净利润155.4亿元,净利润率为22.6%。相比市场此前预测的营收537.7亿元、经调整净利润129.74亿元&#x…...
vue+el-tooltip 封装提示框组件,只有溢出才提示
效果 封装思路 通过控制el-tooltip的disabled属性控制是否提示通过在内容上绑定mouseenter事件监听内容宽度和可视宽度,判断内容是否溢出 封装代码 <template><div style"display: flex" class"column-overflow"><el-tooltip…...
GAN:PacGAN-生成对抗网络中两个样本的威力
论文:https://arxiv.org/pdf/1712.04086.pdf 代码:GitHub - fjxmlzn/PacGAN: [NeurIPS 2018] [JSAIT] PacGAN: The power of two samples in generative adversarial networks 发表:2016 一、摘要 1:GAN最重大的缺陷是…...
【面试】typescript
目录 为什么用TypeScript? TS和JS的区别 控制类成员可见性的访问关键字? public protected),该类及其子类都可以访问它们。 但是该类的实例无法访问。 私有(private),只有类的成员可以访问…...
初识向量数据库
背景 现在的数据分为20%的传统结构化数据,80%的非结构化数据 结构化数据:主要单元是数值与符号,数据类型高度抽象且易于组织。基于数值运算与关系代数,可以轻松地对结构化数据进行分析。 非结构化数据:常见的类型包括…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
