【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%的非结构化数据 结构化数据:主要单元是数值与符号,数据类型高度抽象且易于组织。基于数值运算与关系代数,可以轻松地对结构化数据进行分析。 非结构化数据:常见的类型包括…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
