MySQL - 第2节 - MySQL库的操作

news2024/12/19 23:36:26

1.创建数据库

创建数据库的SQL如下:

CREATE DATABASE [IF NOT EXISTS] db_name [[DEFAULT] CHARSET=charset_name] [[DEFAULT] COLLATE=collation_name];

说明:

• SQL中大写的表示关键字,[ ]中代表的是可选项。

• CHARSET用于指定数据库所采用的编码格式。

• COLLATE用于指定数据库所采用的校验规则。

• 加上IF NOT EXISTS表示不存在对应的db_name再创建,如果存在对应的db_name就不创建了。

注:

1.如果创建数据库时未指明数据库的编码格式或校验规则,则默认使用MySQL配置文件中对应的编码格式或校验规则。

2.mysql是大小写不敏感的。

3.如果创建的数据库名称db_name与mysql的关键字同名,则会创建失败,如果一定要创建,则需要给db_name用反引号引用(反引号是键盘在Esc下面那个键),如下图所示。

4.mysql采用的是就近原则,例如如果在/etc/my.cnf配置文件中设置了数据库默认编码规则,但是我们在创建数据库时又指定了编码规则,数据库会采用创建数据库时指定的编码规则。


2.创建数据库案例

采用默认的编码格式和校验规则创建数据库:

使用 create database db1; 命令,创建数据库时不指明数据库的编码格式和校验规则即可。如下:

注:如果没有对MySQL的配置文件进行过修改,则默认的编码格式是utf8,默认的校验规则是utf8_general_ci。

指定utf8编码格式创建数据库:

使用 create database db1; 命令,创建数据库时通过charset指明数据库的编码格式即可。如下:

注: SQL中的charset=utf8,也可以写成character set=utf8或character set utf8。

指定utf8编码格式和utf8_general_ci校验规则创建数据库:

使用 create database db3 charset=utf8 collate=utf8_general_ci; 命令,创建数据库时通过charset和collate分别指明数据库的编码格式和校验规则即可。如下:

注:SQL中的collate=utf8_general_ci,也可以写成collate utf8_general_ci。


3.字符集和校验规则

• mysql数据库要存储据和获取数据。

• 存储数据时要按照特定编码来进行存储,这由数据库的字符集(编码规则)来保证。

• 获取数据时要按照特定规则来进行获取,这由数据库的校验规则(校验码规则)来保证。

注:特定的字符集(编码规则)和特定的校验集(校验规则、校验码规则)是相互匹配的。例如字符集utf8和校验集utf8_general_ci是匹配的。

3.1.查看系统默认字符集以及校验规则

查看系统默认的字符集:

使用 show variables like 'character_set_database'; 命令,通过查看MySQL系统变量variables中的character_set_database,可以得知系统默认的字符集。如下:

注:

1.如果是在指定数据库下使用该SQL,则查看的是该数据库对应的字符集。

2.系统默认的字符集是utf8的原因是我们之前在/etc/my.cnf配置文件中设置了字符编码为utf8,如下图所示。

3.使用 show variables like 'character_set_%'; 命令可以看到其他模块的字符集。命令中百分号的意思是百分号所在位置模糊匹配,这里会将以 character_set_ 开头的内容全部显示出来。

查看系统默认的字符集校验规则:

使用 show variables like 'collation_database'; 命令,通过查看MySQL系统变量variables中的collation_database,可以得知系统默认的字符集校验规则。如下:

注:

1.如果是在指定数据库下使用该SQL,则查看的是该数据库对应的字符集校验规则。

2.使用 show variables like 'collation_%'; 命令可以看到其他模块的校验集。

3.2.查看数据库支持的字符集

查看数据库支持的字符集:

使用 show charset; 命令可以查看数据库支持的字符集。如下:

注:

1.字符集主要是控制用什么语言,比如utf8就可以使用中文。

2.上图中Charset罗列的是字符集,Default collation罗列的是所有与之对应的校验集。

3.3.查看数据库支持的字符集校验规则

查看数据库支持的字符集校验规则:

使用 show collation; 命令可以查看数据库支持的字符集校验规则。如下:

注:上图中Collation罗列的是校验集,Charset罗列的是所有与之对应的字符集。

3.4.校验规则对数据库的影响

字符集编码格式和字符集校验规则的区别:

• 字符集编码格式指的是在存储数据时各个字符的底层编码,用于指定数据的存储格式。
• 字符集校验规则是在字符集内用于比较字符的一套规则,用于对数据进行比对。
比如我们存储数据的时候是按照utf8的格式进行存储的,那么将来在对数据做比对时也必须按照utf8的格式进行比对,因为“存数据”和“取数据”的方式必须保持一致。

注:在对数据库当中的数据进行增删查改时,不可避免的需要进行数据的比对,因为在对数据做增删查改之前,都需要先通过比对的方式找到目标数据。

校验规则对数据库的影响:

现在我们知道了,为了保证读取的数据和存储的数据是一致的,因此字符集编码格式和校验规则必须是对应的。但实际同一中字符集编码格式一般会有多种可选择的校验规则,比如utf8编码格式的校验规则有utf8_general_ci、utf8_bin、utf8_unicode_ci等校验规则。

使用不同的校验规则操作数据库中的数据可能会得到不同的结果,比如utf8_general_ci校验规则在比对数据时是不区分大小写的,而utf8_bin校验规则在对比数据时则是区分大小写的。

操作数据库时采用utf8_general_ci校验规则:

创建数据库时指定数据库的校验规则为utf8_general_ci,数据库的编码格式默认为utf8。如下:

在该数据库中创建一个简单的person表,由于创建未指定表的编码格式和校验规则,因此person表将继承当前数据库的编码格式和校验规则。如下:

这时向表中插入一些数据。如下:

通过select语句可以查看插入表中的数据。如下:

这时指定查看表中 name='alice' 的记录时会将Alice和alice一并筛选出来,根本原因就是utf8_general_ci校验规则在进行数据比对时是不区分大小写的。如下:

操作数据库时采用utf8_bin校验规则:

创建数据库时指定数据库的校验规则为utf8_bin,数据库的编码格式默认为utf8。如下:

在该数据库中同样创建和刚才一样的person表,该person表会将继承当前数据库的编码格式和校验规则。如下:

这时向表中插入刚才相同的数据。如下:

通过select语句可以看到表中的数据与之前相同。如下:

但这时指定查看表中 name='alice' 的记录时只会将alice筛选出来,根本原因就是utf8_bin校验规则在进行数据比对时是区分大小写的。如下:


4.操纵数据库

4.1.查看数据库

使用 show databases; 命令可以查看系统中所有的数据库。如下:

4.2.显示创建语句

使用 show create database  数据库名; 命令可以查看对应数据库的创建语句。如下:

注:

1.MySQL建议SQL中的关键字使用大写,但不是必须的。
2.数据库的名字加上反引号,是为了防止使用的数据库名与关键字冲突。
3./*!40100 DEFAULT CHARACTER SET utf8 */不是注释,它表示当前MySQL版本如果大于4.10,则执行后面的SQL语句。

4.3.修改数据库

修改数据库的SQL如下:

ALTER DATABASE db_name [[DEFAULT] CHARSET=character_name] [[DEFAULT] COLLATE=collation_name];

说明一下:

• 对数据库的修改主要指的是修改数据库的字符集或校验规则。

使用 alter database db1 charset=gbk collate=gbk_bin; 命令,将数据库的字符集改为gbk,并将数据库的校验规则改为gbk_bin。如下:

4.4.删除数据库

删除数据库的SQL如下:

DROP DATABASE [IF EXISTS] db_name;

删除数据库后该数据库对应的文件夹就被删除了。比如:

并且删除数据库后,该数据库下的所有表也都会被级联删除,因此不要随意删除数据库。

4.5.备份和恢复

4.5.1.数据库备份和恢复

数据库备份:

使用如下命令即可对指定数据库进行备份:

mysqldump -P 端口号 -u 用户名 -p 密码 -B 数据库名1 数据库名2 ...  > 数据库备份存储的文件路径

为了演示数据库备份,下面我们创建一个数据库,并在该数据库中创建两个表。如下:

在student表中插入两条记录。如下:

在teacher表中也插入两条记录。如下:

这时在命令行中执行如下命令即可将该数据库进行备份,并指定将备份后产生的文件存放在当前目录下。如下:

打开back.sql文件即可看到,文件中的内容实际就是我们在该数据库中执行的各种SQL命令,包括创建数据库、创建表、插入数据等SQL语句。如下:

数据库备份有两种,一种是对数据库中的数据做备份,另一种是对操作语句做备份,这里mysql的mysqldump是将所有的操作语句做备份。

数据库恢复:

使用如下命令即可对指定数据库进行恢复:

source 数据库备份存储的文件路径

为了演示数据库恢复,我们先将刚才创建的数据库删除。如下:

这时使用 source back.sql; 命令让MySQL服务器执行如下命令即可对数据库进行恢复。如下:

实际恢复数据库的时候就是按顺序执行数据库备份文件中的SQL语句,执行完毕后数据库也就恢复出来了。如下:

同时该数据库下的两张表,以及表当中的数据也都恢复出来了。如下:

4.5.2.表的备份和恢复

表备份:

表恢复:

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

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

相关文章

「实在RPA·证券数字员工」革新证券数字化现状

2022年1月《金融科技发展规划(2022——2025年)》提出“十四五”时期金融科技发展愿景,明确了金融科技发展的指导思想和4个基本原则、6个发展目标,确定了8项重点任务和5项保障措施,进一步明确金融科技发展方向。近年来&…

ADB WIFI 链接

ADB WiFi链接手机 必须在同一网络下(本人用的台式机网线手机连路由器WIFI) 1.先确认USB数据线是否成功链接了手机 adb devices不管前面设备是什么名字,但是后面必须为device状态才算链接成功了,offline状态是不行的 有些没开启…

Linux Debian Jenkins快速搭建配置并运行

Jenkins安装 参考Debian Jenkins Packageshttps://pkg.origin.jenkins.io/debian-stable/ 加Key curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \/usr/share/keyrings/jenkins-keyring.asc > /dev/null 加仓库 echo deb [signed-by/u…

什么是远程工具,远程工具推荐

在当今数字化时代,远程工作正在变得越来越普遍。这种趋势不仅使企业管理更加便利,节省了时间和资源,同时也使员工更加自由和灵活。许多远程工作都需要使用到远程工具。本文将对远程工具进行简介和阐述。 什么是远程工具 远程工具是一种数字…

类与对象知识总结+封闭类+const+this指针 C++程序设计与算法笔记总结(三) 北京大学 郭炜

//C程序到C程序的翻译 class CCar { public: int price; void SetPrice(int p); }; void CCar::SetPrice(int p) { price p; } int main() { CCar car; car.SetPrice(20000); return 0; }struct CCar { int price; }; void SetPrice(struct CCar * this, int p) { this-&g…

【ROS】URDF:统一机器人描述格式(XML)

1、简述 统一机器人描述格式(URDF)是描述机器人模型的 XML 文件,支持Xacro(XML宏),使用Xacro来引用已经存在的XML块,创建更短且可读的XML文件。 2、初始URDF描述文件 URDF描述文件为XML格式&…

测试左移-快速玩转Debug

目录 背 景 学习的意义 玩 转 Debug 一、基本介绍 二、断点设置 三、启动调试 四、调试技巧 定 位 问 题 总 结 背 景 一段代码的问题产生阶段可以分为:编译期和运行时 编译期的代码可以由工具(idea、eclipse)在程序编码过程中提示错误…

面对对象。

1.类: 类:是对象共同特征的描述。 对象:是真实存在的具体实例。 先设计类,才能创建对象并使用。 pulic class 类名{1.成员变量(代表属性,一般是名词)2.成员方法(代表行为&#x…

达梦主备守护集群相关概念和基本原理介绍

DM数据守护一主一备或一主多备是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案。通过部署 DM 数据守护,可以在硬件故障(如磁盘损坏)、自然灾害(地震、火灾)等极端情况下&#xff0…

思科交换机与路由器基础命令(一)

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、Cisco交换机的命令行模式: 1、用户模式 2、 特权模式 3、 全局配置模式 4、 接口模式 5、退回命令 二、帮助机制 …

20. 算法之回溯算法

1. 概念 回溯算法实际上一个类似枚举的深度优先搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回(也就是递归返回),尝试别的路径。 回溯的处理思想&#xff0c…

必备:音乐的魅力,一边听歌一边练习英语!

音乐是一种跨越语言和文化的艺术形式,能够带给我们无限的感动和快乐。下面是我推荐的一些好听的英文歌曲,希望大家喜欢。 这首歌是英国歌手Ed Sheeran的代表作之一,曲调轻快,旋律优美,歌词简单易懂,非常容…

搞懂mysql事物隔离级别

事物是为交易而生 事物的英文单词 TRANSACTION,就是交易的意思. 交易和事物是一个东西. mysql的事物的4种隔离级别 mysql的事物隔离级设计的一点也不高级 隔离级别只是一个很烧脑的概念,并不是什么高大上的技术. RU,全称read-uncommitted, 中文翻译:读未提交,能够读到未提交…

static关键字在C语言中的作用

static关键字有三个主要作用: 1.修饰全局变量 2.修饰函数 3.修饰局部变量 (1)首先是修饰全局变量,就是变量只能在本文件中使用,不能在其他文件中使用 代码示例:vi 1.c vi 2.c 编译:gcc 1.c 2.c -o main ./main …

指定数组的维度,返回由随机数构成的数组numpy.random.ranf()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 指定数组的维度, 返回由随机数构成的数组 numpy.random.ranf() 选择题 以下说法错误的是? import numpy as np print("【执行1】np.random.ranf()") print(np.random.ra…

Redis整合jedis 学习

前言 redis简单来讲是内存数据库,因为是将数据存放到内存,因此读写速率高快(传统数据库,不是先从内存转到硬存,慢) 1.jedis连接Redis redis是java操作redis的客户端,通过他我们能通过java语句操控redis。 jedis对于…

Vue使用Echarts折线图,实现点击播放、暂停、选择播放倍数;实现数据直播功能

文章目录 🌟前言🌟先看效果🌟整体代码(详细注释)🌟写在最后 🌟前言 哈喽小伙伴们,最近公司有个小需求,就是基于Echarts的折线图,做一个数据直播的功能&#…

manacher(图文详解)

文章目录 简要介绍实际应用算法详解 简要介绍 马拉车算法,Manacher‘s Algorithm 是用来查找一个字符串的最长回文子串的线性方法,是一个叫Manacher的人在1975年发明的,这个方法的最大贡献是在于将时间复杂度提升到了线性O(N)。 实际应用 刷…

玩转脚本实现自动化

目录 前言: 自动化原理 前置和后置脚本的区别(它们的功能就如同名字一样) 淘宝联盟接入文档 签名算法 调用示例 配置环境参数 设置全局变量 设置相关环境下的服务器地址 开始分析参数指定规则 添加接口 前言: 自动化测…

shell索引数组变量-定义获取拼接删除

目录 介绍数组的定义演示 数组的获取数组的拼接演示: 数组的删除 介绍 Shell 支持数组(Array), 数组是若干数据的集合,其中的每一份数据都称为数组的元素。 ( 注意Bash Shell 只支持一维数组,不支持多维数组…