【MySQL】数据库——库利用

守听  论坛元老 | 2024-9-23 20:19:35 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1036|帖子 1036|积分 3108

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; 查察当前用户所能看到的数据库列表

创建终端2,并输入 cd /var/lib/mysql 指令,以此查察数据库的对应内容是否厘革创建终端2,并输入 cd /var/lib/mysql 指令,以此查察数据库的对应内容是否厘革

在终端1中 再次输入 create database databases1; 指令, 创建 databases1数据库
在终端2中 查察发现此时多了一个databases1目次

[IF NOT EXISTS] 的利用

create database if not exists database1;
体现 当前数据库若不存在 database1,则创建该数据库


体现 当前数据库 若存在database1,则举行告警,即数据库已经存在,没有再次创建

2. 删除库

在终端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;


查察系统默认支持的字符集

输入 show variables like ‘character_set_database’;
字符集数据库 默以为 utf8

查察系统默认支持的校验集

输入 show variables like ‘collation_database’;
校验集数据库 默以为 utf8mb3_general_ci

只查察 database的校验集

输入 show variables like ‘collation_%’;
只查察 database的校验集

连接 、数据库举行通例利用、服务器 的 自己的校验规则 都是 utf8
指定编码创建数据库

当在终端1中创建 d1数据库时,在终端2中的var/lib/mysql路径中就会产生对应的目次d1

打开d1目次下的db.opt文件,此中包罗默认系统支持的编码集合和校验集合

修改字符集

在终端1中,创建数据库d2,并指明数据库的字符集按照 uft8格式

在终端2中,此时打开d2目次下的db.opt文件,发现 字符集按照uft8格式

利用 character set utf8 cahrset=uft8 体现雷同,都可以修改 数据库的字符集 为uft8格式

修改校验集

在终端1中,创建数据库d4,并 利用 collate 将校验集 置为 utf8_general_ci
在终端2中,打开目次d4中的db.opt文件,发现 校验集按照 utf8_general_ci 格式


验证规则对数据库的影响

utf8_general_ci ——不区分巨细写

利用 utf8_general_ci ,校验规则是不区分巨细写的
在终端1中,创建数据库 test1, 并指明 对应的校验集 为 utf8_general_ci 格式
在终端2中,打开目次test1中的db.opt文件,发现 校验集按照 utf8_general_ci 格式


输入 use test1; 即 进入test1数据库

在test1数据库中,创建 一张表 person ,内部成员为 name,类型为 20个字节

输入 insert into person (name) values ( 字符); 即向person表中插入字符

输入 select * from person; 即查察person表中1全部数据
select 体现从表中去查
* 体现 将表中数据全部体现出来


输入 select * from person where name =‘a’; 即从person表 拿出来 name名称为 a的信息
由于test1数据库 的校验集按照utf8_general_ci 格式,不区分巨细写
所以当查找a信息时,会取到peson表中的A和a


utf8_bin ——区分巨细写

在终端1中,创建数据库 test2, 并指明 对应的校验集 为 utf8_bin 格式
在终端2中,打开目次test2中的db.opt文件,发现 校验集按照 utf8_bin 格式


输入 use test2; 即利用test2数据库
在test2数据库中,创建 一张表 person ,内部成员为 name,类型为 20个字节


输入 insert into person (name) values ( 字符); 即向person表中插入字符 a A b B

输入 select * from person where name =‘a’; 即从person表 拿出来 name名称为 a的信息
由于test2数据库 的校验集按照utf8_bin 格式,不区分巨细写
所以当查找a信息时,只会取到peson表中的a

4. 修改数据库

输入 alter database test2 charset=gbk collate gbk_chinese_ci;
修改test2数据库的字符集为gbk
修改test2数据库的校验集为gbk_chinese_ci


在创建数据库时,所设置的创建选项
输入 show create database test2; 查察创建test2数据库时,相关的命令
5. 查察数据库

输入 show databases; 查察数据库

select database(); 判断当前在那个数据库内里
如:当前处于 数据库d1中

6. 数据库的备份和恢复

备份

在终端1中,输入 show databases; 发现 存在test1数据库

备份关键字为 mysqldump
-B 体现指明哪一个数据库
在终端2中, 将 test2数据库的历史上所有做过的有效利用备份起来了
备份到 test1.tql中


在终端1中,删除test1数据库

在终端2中,打开 var/lib/mysql 路径后,发现不存在 test1目次
但是存在 test1.tql 即test1目次的备份


恢复

此时就可以通过test1.tql ,恢复一个test1目次

在终端2中,输入 pwd 指令,查询当前路径 /var/lib/mysql

在终端1中,输入 source +test1.tql地点路径 即 source /var/lib/mysql/test1.tql
就可以使 test1.sql 中的历史命令 全部在新的mysql中执行一次

在终端1中,输入 show databases; 即又查询到test1数据库的存在

注意事项
假如备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后利用数据
库,再利用source来还原

7. 查察连接情况

输入 show processlist; 查察连接情况
User 体现 用户 ,即当前用户为root
db 体现数据库, 即当前连接的是test1数据库
command 体现 命令


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表