数据库的DDL操作

目录

一、创建数据库

(1)字符集和校验集

二、操作数据库

(1)查看数据库

(2)显示创建语句

(3)修改数据库

(4)删除数据库

三、数据库的备份与恢复

四、查看数据库连接用户


一、创建数据库

cpp 复制代码
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]

下面简单创建一个数据库

(1)字符集和校验集

这里除了创建数据库之外,还对该数据库的字符集和校验规则进行了设置。我们先来看看什么叫做字符集和校验集。

说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci。这个是可以在配置文件中进行修改的。

字符集决定了数据是按照什么样的格式存储进去的,而校验集是决定读出来/比较/查询是按照什么规则读取。

比如我们创建两个个数据库都是使用utf8进行存储,但是一个的校验集是utf8_general_ci另一个是utf8_bin,虽然存储的信息都是一样的,但是一旦出现有大小写的数据,查询的结果就不一样了。所以我们一定要注意让字符集和校验集互相匹配。

下面是查看mysql支持的字符集的语句:

cpp 复制代码
show charset;
show collation;

他们一个是查看字符集,一个是查看校验集,由于一个一个字符集通常匹配了多个校验集,所以这里的校验集会明显多于字符集。如果想使用普遍的对应关系,只需要使用第一个语句即可,想要区分大小写等,再使用第二条语句查看。

总结

字符集决定了数据怎么写入数据库,而校验规则决定了如何从数据库中读取数据。正确的设置互相匹配的字符集和校验规则可以使我们保证数据一致性,大多数的乱码问题都是因为字符集与校验规则的不匹配问题导致的。

二、操作数据库

(1)查看数据库

cpp 复制代码
show databases;

(2)显示创建语句

cpp 复制代码
show create database 数据库名;

我们可以使用显示创建语句,来查看创建时候的详情,比如在创建的时候使用到了comment来注释也是能够查询到的。

(3)修改数据库

直接使用alter修改数据库的字符集/校验集/搜索引擎

cpp 复制代码
ALTER DATABASE db_name;

后面我们还会使用到alter对表的列/表的属性或名字进行修改。

(4)删除数据库

cpp 复制代码
DROP DATABASE [IF EXISTS] db_ name;

三、数据库的备份与恢复

备份

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

如果想同时备份多个数据库,只需要在上述数据库名后跟空格再写上数据库的名字即可。

注意备份一个数据库要在命令行中完成,而不是在mysql客户端中输入。

备份会得到一个文件

恢复

cpp 复制代码
source 数据库备份存储的文件路径;

在使用source之前一定要用use指明现在在使用哪一个数据库

这个-B是干什么的呢?

它是将创建数据库的语句给备份记录下来,后面恢复的时候不需要自己创建数据库即create database 语句。如果没有-B选项,则需要自己先创建一个数据库,再使用该数据库,最后使用source恢复数据库(可以利用这个操作对恢复出来的数据库改名)。

所谓的还原(恢复)数据库其实就是把.sql文件(备份生成的文件)中的sql语句全部执行一遍。

四、查看数据库连接用户

如果你在使用某个数据库的时候发现突然变卡了,可能是使用的人太多了。由于我们数据库是一个服务器客户端的应用程序,我们一定能查看到当前有谁在使用他。

cpp 复制代码
show processlist;
相关推荐
咖啡啡不加糖20 分钟前
深入理解MySQL死锁:从原理、案例到解决方案
java·数据库·mysql
文牧之21 分钟前
PostgreSQL 的扩展pageinspect
运维·数据库·postgresql
要努力啊啊啊30 分钟前
使用 Python + SQLAlchemy 创建知识库数据库(SQLite)—— 构建本地知识库系统的基础《一》
数据库·人工智能·python·深度学习·自然语言处理·sqlite
KENYCHEN奉孝31 分钟前
Django CMS 的 Demo
数据库·sqlite
为中华崛起而奋斗1 小时前
Oracle 19c RAC集群ADG搭建
数据库·oracle
betazhou2 小时前
mariadb5.5.56在centos7.6环境安装
android·数据库·adb·mariadb·msyql
开挖掘机上班2 小时前
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
数据库·mysql
花月C2 小时前
Mysql-定时删除数据库中的验证码
数据库·后端·mysql·spring
success_a4 小时前
大故障:阿里云核心域名爆炸了
数据库·阿里云·云计算