MySQL操作库/表

文章目录

很高兴和大家见面,给生活加点impetus!!开启今天的编程之路

作者:٩( 'ω' )و260

我的专栏:LinuxC++进阶C++初阶数据结构初阶c语言mysql

欢迎点赞,关注!!

MySQL操作库/表

该节主要介绍MySQL中的一些指令操作,熟悉基本的操作

MySQL操作库

数据库的编码集和校验集

编码集和校验集是什么?表示数据在数据库中存储的格式是怎样的。

编码集:决定数据以什么文字存,如汉语,英文等等,常见的比如utf8

校验集:决定数据的比较规则,排序规则等等。

指令:

查询服务器所有的编码集和校验集:

show charset 与 show collation:

有点长,这里就不截图了

结论:字符集和校验集是相互对应的,为什么?排序,比较都是依靠具体的编码实现的

查看系统默认的字符集与编码集;

为什么在此处我会使用当前生效的?难道还有默认的?对的。

安装数据库时,我们可能会操作配置文件,会向配置文件中增加默认的编码集和校验集。

这里我配置的就是utf8 + 对应的校验集。

同时还配置了默认端口号3306。

如果我们创建数据库时,不指定编码集和校验集,就使用默认配置的,否则就使用手动传递的。

不同编码集和校验集和差别:

每个编码集和校验集有不同的特点,不同的特点会导致某些操作的结果不同。

例如:collate utf8_general_ci(不区分大小写)和collate utf8_bin(区分大小写):导致排序,查询的结果可能不同。

不区分大小写此时会显示'a' 和 'A'。

区分大小写的话只会显示'a'。

库的增删查改

增:create database if not exists db_name charset=utf8 collate utf8_general_ci;

创建名称为db_name,编码集和校验集为utf8和utf8_general_ci数据库目录文件

if not exists:表示如果这个库已经存在的话就啥也不干了。

当然后面也可以不跟charset 和collate,就使用默认的嘛。

删:drop database if exists db_name;

删除名称为db_name的数据库目录文件

if exists:如果该库存在的话,就删了,不存在就啥也不干。

查:show create database db_name \G;查看创建db_name数据库时更加详细的信息

\G:为格式化输出。

这些字段在mysql字符类型章节时会涉及讲解的。

改:对数据库的修改主要是修改编码集和字符集:

alter database db_name charset=新的编码集 collation=新的字符集

如alter database db_name charset=gbk;

因为编码集和字符集都是对应的,写一个的话也没啥问题。

也能执行成功。

一般来说:数据库不要随便删除,删了里面的数据咋办

数据备份与恢复

备份数据库文件:

mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

P:表示服务器绑定的端口号

u:表示连接数据库的用户

这句代码是在linux终端执行的!!且该文件路径最终能够指向一个普通文件

将数据库目录文件d1删除后,使用备份文件还原d1。

指令:mysql> source 备份文件路径

为什么有这么多的query ok指令呢?

数据库目录文件中不仅仅存储的是数据,还会存储一些操作信息,所以还原的时候执行的是存储在数据库目录文件中的操作信息,每次操作都对应一个query。

上面备份的时候有一个参数没懂 -B参数是为什么?

-B参数会存储创建数据库的操作信息,如果不带,还原数据库时需要手动创建数据库,然后在该数据库中还原数据即可。

这样,我们可以实现对数据库进行修改名称的操作,但是这样属实有点麻烦。

查看库的连接情况

指令:show processlist,可以查看哪些人连接了我的数据库。

当数据库响应变慢时,可以使用该指令查看哪些人连了。

上面显示只有我一个root用户连接了

MySQL操作表

增删查改

增与查:

desc tb_name:查看表结构

show tables:查看数据库中有哪些表

select * from tb_name;查看表中数据

show create table tb_name:查看建表时更加细节的信息

fileld1/2/3表示列名,datatype表示该列类型。

desc能够查看表结构,field就是列名称,type就是类类型,其余的我们后面说。

能够发现虽然创建时没有传字符集,校验集,存储引擎这些,其实默认是有的。因为我们没传有默认的。这些默认的就是我们配置文件时写的。

\G:表示格式化输出的意思,我们发现字符集为utf8,校验集确实default?

字符集和编码集都是对应的,这里写默认的问题也不大。

改:

对于表,我们一般是修改表的结构一些信息。

改表名:alter table tb_name rename to new_tb_name

向表中插入数据:

insert into tb_name values(数据);该指令是全列插入,就是给表中存在的每一列都插入值

insert into tb_name (列名1,列名2,...) values(列名1数据,列名2数据,...):给指定列插入数据

这里不同于c++,数据库中的字符串和字符都使用单引号表示。

添加新的一列:

alter table tb_name add 列名1 列类型 after 列名2

after表示新add的列1插入到列2后面。

删除一列:

alter table tb_name drop 列名;

修改列名类型:

alter table tb_name modify 列名 列名属性:将该列名的列名属性修改成新的列名属性

如果这样modify,以前的comment就消失了。

这里的年龄看成注释即可。

同时修改列名和列名类型:

alter table tb_name change 老列名 新列名 新列名类型:修改列名名称

删除表

drop table tb_name;这个就不再演示了

注意注意:表和数据库都不要删,删了的话数据就没了,追不回来的。

相关推荐
ywf12153 小时前
FlinkCDC实战:将 MySQL 数据同步至 ES
android·mysql·elasticsearch
Wyawsl3 小时前
Mysql数据库备份与恢复
数据库·mysql
NineData3 小时前
MySQL到StarRocks 同步链路中的建表、DDL 跟随与数据校验
运维·数据库·starrocks·mysql·数据迁移·数据库管理工具·ninedata
gechunlian884 小时前
MySQL - Navicat自动备份MySQL数据
android·数据库·mysql
快乐非自愿4 小时前
MySQL优化全攻略:索引、SQL与分库分表的最佳实践
android·sql·mysql
keyborad pianist4 小时前
MySQl
数据库·mysql·oracle
不知名。。。。。。。。4 小时前
5、MySQL表的约束
数据库·mysql
|华|4 小时前
mysql的备份与恢复
数据库·mysql
爱丽_5 小时前
MySQL 锁与死锁:行锁、间隙锁、Next-Key Lock 与排查手册
数据库·mysql