【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 表示 命令

相关推荐
青衫码上行6 小时前
【MySQL数据库 | 第五篇】DDL操作2
数据库·mysql
远方16096 小时前
43-Oracle 系统视图一览
数据库·sql·oracle·database
叶子椰汁7 小时前
ORMPP链接MySQL 8.0错误
服务器·数据库·c++·mysql
电商数据girl7 小时前
【经验分享】浅谈京东商品SKU接口的技术实现原理
java·开发语言·前端·数据库·经验分享·eclipse·json
老兵发新帖7 小时前
AWS RDS :多引擎托管数据库服务
数据库·云计算·aws
舒一笑7 小时前
MySQL层级查询实战:无函数实现部门父路径
mysql
liyongjie8 小时前
openEuler安装BenchmarkSQL
数据库
咚咚咚小柒8 小时前
SQL基础知识,MySQL学习(长期更新)
数据库·sql·mysql·database
四四夕夕9 小时前
【保姆级图文】1panel 面板部署雷池社区版:从环境搭建到安全验证全流程实录
数据库·安全
仍然探索未知中10 小时前
MySQL数据库介绍以及安装(本地windows、Ubuntu 20.04)
数据库·mysql