【MySQL】数据库操作

文章目录

1. 创建数据库

格式为:CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]

create database 表示为 固定用法
db_name 表示为 数据库名称

IF NOT EXISTS\] 表示可选项 *** ** * ** *** 在终端1中,通过 mysql -uroot -p 指令,登陆数据库 再输入 show databases; 查看当前用户所能看到的数据库列表 ![](https://file.jishuzhan.net/article/1714493209373052929/c3cd39473fa24383a4a29fe9adbb731a.webp) *** ** * ** *** 创建终端2,并输入 cd /var/lib/mysql 指令,以此查看数据库的对应内容是否变化创建终端2,并输入 cd /var/lib/mysql 指令,以此查看数据库的对应内容是否变化 ![](https://file.jishuzhan.net/article/1714493209373052929/64da16f29085a717b26d2855b3e652ec.webp) *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/0b57f446f3c2ebf0f44eaf2c186fa4e6.webp) 在终端1中 再次输入 create database databases1; 指令, 创建 databases1数据库 在终端2中 查看发现此时多了一个databases1目录 ### \[IF NOT EXISTS\] 的使用 ![](https://file.jishuzhan.net/article/1714493209373052929/1555186d07e7cd5c34e43d706a897103.webp) create database if not exists database1; 表示 当前数据库若不存在 database1,则创建该数据库 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/b0b505f8709f92082950805b0f4f0a5b.webp) 表示 当前数据库 若存在database1,则进行告警,即数据库已经存在,没有再次创建 *** ** * ** *** ## 2. 删除库 ![](https://file.jishuzhan.net/article/1714493209373052929/3b02dde1b5def34bb276cd7a281b2461.webp) 在终端1中,输入 drop database database1; 表示 要删除 database1 数据库 在终端2中, 再次查看则没有database1数据库存在 *** ** * ** *** 可若删除数据库,则对应的目录也被删除了,若该目录下有表存在,则也会被直接删除 所以不建议随意删除数据库 *** ** * ** *** 总结: 创建数据库 ------ create database db_name(数据库名称); 本质 就是在 /var/lib/mysql 创建一个目录 删除数据库 ------ drop database db_name (数据库名称); 本质就是在 /var/lib/mysql 删除一个目录 *** ** * ** *** ## 3. 数据库的编码问题 创建数据库时,有两个编码集:数据库的字符集 和数据库的校验集 数据库的字符集 ------ 数据库未来存储数据 (数据库存数据时,采用什么编码) create database db2 charset=utf8; *** ** * ** *** 数据库的校验集 ------ 支持数据库,进行字段比较使用的编码,本质是读取数据库中数据的采用的编码格式 ( 查找或匹配数据库,就需要进行比较字段,想要被比较,两者就需要先被读出来,此时两者的校验规则应该相同) create database db3 charset=uf8 collate utf8_fgenral_ci; *** ** * ** *** ### 查看系统默认支持的字符集 ![](https://file.jishuzhan.net/article/1714493209373052929/ffbfb4b10b6e5bcc1bf79a6192c9c239.webp) 输入 show variables like 'character_set_database'; 字符集数据库 默认为 utf8 ### 查看系统默认支持的校验集 输入 show variables like 'collation_database'; 校验集数据库 默认为 utf8mb3_general_ci ### 只查看 database的校验集 ![](https://file.jishuzhan.net/article/1714493209373052929/1cb6bb45d237f696635239dbf1a11ef4.webp) 输入 show variables like 'collation_%'; 只查看 database的校验集 连接 、数据库进行常规操作、服务器 的 本身的校验规则 都是 utf8 ### 指定编码创建数据库 ![](https://file.jishuzhan.net/article/1714493209373052929/dbc8b178e6138c2cf7d6fda7ec38d037.webp) 当在终端1中创建 d1数据库时,在终端2中的var/lib/mysql路径中就会产生对应的目录d1 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/ff5fd5f294b007c6bf075b699715dca5.webp) 打开d1目录下的db.opt文件,其中包含默认系统支持的编码集合和校验集合 *** ** * ** *** ### 修改字符集 ![](https://file.jishuzhan.net/article/1714493209373052929/2b8f91ba425e1fef21d1821103ec92b0.webp) 在终端1中,创建数据库d2,并指明数据库的字符集按照 uft8格式 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/e3488c92742296c810522ef059bf121b.webp) 在终端2中,此时打开d2目录下的db.opt文件,发现 字符集按照uft8格式 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/0574be75e6e67effb176d22864af062a.webp) 使用 character set utf8 与 cahrset=uft8 表示相同,都可以修改 数据库的字符集 为uft8格式 *** ** * ** *** ### 修改校验集 ![](https://file.jishuzhan.net/article/1714493209373052929/dd3071e61e113ac79747205ca592dddb.webp) 在终端1中,创建数据库d4,并 使用 collate 将校验集 置为 utf8_general_ci 在终端2中,打开目录d4中的db.opt文件,发现 校验集按照 utf8_general_ci 格式 *** ** * ** *** ### 验证规则对数据库的影响 #### utf8_general_ci ------不区分大小写 使用 utf8_general_ci ,校验规则是不区分大小写的 ![](https://file.jishuzhan.net/article/1714493209373052929/a8acd6cefc80a86c4fa4511f37bae46c.webp) 在终端1中,创建数据库 test1, 并指明 对应的校验集 为 utf8_general_ci 格式 在终端2中,打开目录test1中的db.opt文件,发现 校验集按照 utf8_general_ci 格式 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/81a10b86f6e35e6ac8618ea374539a10.webp) 输入 use test1; 即 进入test1数据库 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/7973c89e991951f6fe4e4e98a8a6e69b.webp) 在test1数据库中,创建 一张表 person ,内部成员为 name,类型为 20个字节 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/ce2ae0baad8afc08326af0bfc8a6c518.webp) 输入 insert into person (name) values ( 字符); 即向person表中插入字符 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/51beb89122f72212667adc10de63182e.webp) 输入 select \* from person; 即查看person表中1全部数据 select 表示从表中去查 \* 表示 将表中数据全部显示出来 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/42f0559ef12135c721af1ec860b7f44b.webp) 输入 select \* from person where name ='a'; 即从person表 拿出来 name名称为 a的信息 由于test1数据库 的校验集按照utf8_general_ci 格式,不区分大小写 所以当查找a信息时,会取到peson表中的A和a *** ** * ** *** #### utf8_bin ------区分大小写 ![](https://file.jishuzhan.net/article/1714493209373052929/0c53607349408893c8478e3cee58e171.webp) 在终端1中,创建数据库 test2, 并指明 对应的校验集 为 utf8_bin 格式 在终端2中,打开目录test2中的db.opt文件,发现 校验集按照 utf8_bin 格式 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/2611be0e3bcd9f82a6afe50e6af103d7.webp) 输入 use test2; 即使用test2数据库 在test2数据库中,创建 一张表 person ,内部成员为 name,类型为 20个字节 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/e9eb9201443efe5947b1f0150ea5c4cb.webp) 输入 insert into person (name) values ( 字符); 即向person表中插入字符 a A b B *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/875c295379dea7e97bceef9fe61e0eb0.webp) 输入 select \* from person where name ='a'; 即从person表 拿出来 name名称为 a的信息 由于test2数据库 的校验集按照utf8_bin 格式,不区分大小写 所以当查找a信息时,只会取到peson表中的a ## 4. 修改数据库 ![](https://file.jishuzhan.net/article/1714493209373052929/13b92f15e480b101789971850c4415a8.webp) 输入 alter database test2 charset=gbk collate gbk_chinese_ci; 修改test2数据库的字符集为gbk 修改test2数据库的校验集为gbk_chinese_ci *** ** * ** *** 在创建数据库时,所设置的创建选项 ![](https://file.jishuzhan.net/article/1714493209373052929/9eb31112c02157b0c437d45b2d1bba8c.webp) 输入 show create database test2; 查看创建test2数据库时,相关的命令 ## 5. 查看数据库 ![](https://file.jishuzhan.net/article/1714493209373052929/56c686894b4dbf1272fd2a95da9882a5.webp) 输入 show databases; 查看数据库 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/e11720030dc08429c656c47681f99403.webp) select database(); 判断当前在那个数据库里面 如:当前处于 数据库d1中 ## 6. 数据库的备份和恢复 ### 备份 ![](https://file.jishuzhan.net/article/1714493209373052929/885062c48145335be36cd26f53250995.webp) 在终端1中,输入 show databases; 发现 存在test1数据库 *** ** * ** *** 备份关键字为 mysqldump -B 表示指明哪一个数据库 在终端2中, 将 test2数据库的历史上所有做过的有效操作备份起来了 备份到 test1.tql中 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/30559e8c77386da0be5c2201d69a4566.webp) 在终端1中,删除test1数据库 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/f70de458ca322ed91c23c43a943781e4.webp) 在终端2中,打开 var/lib/mysql 路径后,发现不存在 test1目录 但是存在 test1.tql 即test1目录的备份 *** ** * ** *** ### 恢复 此时就可以通过test1.tql ,恢复一个test1目录 ![](https://file.jishuzhan.net/article/1714493209373052929/2877612b46b801bf8ac218add7a86424.webp) 在终端2中,输入 pwd 指令,查询当前路径 /var/lib/mysql *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/19f852557f47b82e687b45ec118e7588.webp) 在终端1中,输入 source +test1.tql所在路径 即 source /var/lib/mysql/test1.tql 就可以使 test1.sql 中的历史命令 全部在新的mysql中执行一次 *** ** * ** *** ![](https://file.jishuzhan.net/article/1714493209373052929/9df5f4d80ecfcbe375773609fae87fce.webp) 在终端1中,输入 show databases; 即又查询到test1数据库的存在 *** ** * ** *** 注意事项 如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据 库,再使用source来还原 ## 7. 查看连接情况 ![](https://file.jishuzhan.net/article/1714493209373052929/8d97a4637433e18d2634d7b4c65ac9e4.webp) 输入 show processlist; 查看连接情况 User 表示 用户 ,即当前用户为root db 表示数据库, 即当前连接的是test1数据库 command 表示 命令

相关推荐
程序员JerrySUN29 分钟前
基于 RAUC 的 Jetson OTA 升级全攻略
java·数据库·redis
布朗克1682 小时前
MySQL UNION 操作符详细说明
数据库·mysql·union
喵桑..5 小时前
视图是什么?有什么用?什么时候用?MySQL中的视图
数据库·mysql
奋进小子7 小时前
达梦DISQL执行SQL和SQL脚本
数据库·sql
叁沐7 小时前
MySQL 26 备库为什么会延迟好几个小时
mysql
EasyCVR7 小时前
视频汇聚系统EasyCVR调用设备录像保活时视频流不连贯问题解决方案
数据库·ubuntu·音视频·云存储·云端录像
YueiL8 小时前
Linux文件系统基石:透彻理解inode及其核心作用
linux·网络·数据库
陈壮实的搬砖日记9 小时前
一文读懂 Hive、Trino 和 SparkSQL:三大大数据 SQL 引擎的全面对比
mysql
苹果醋310 小时前
React Native jpush-react-native极光推送 iOS生产环境接收不到推送
java·运维·spring boot·mysql·nginx
老华带你飞10 小时前
数码论坛|基于SprinBoot+vue的数码论坛系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·数码论坛系统