MySQL库的操作

文章目录

  • [一、 创建数据库](#一、 创建数据库)
  • [二、 数据库创建案例](#二、 数据库创建案例)
  • [三、 字符集校验规则](#三、 字符集校验规则)
    • [1. 查看系统默认字符集以及校验规则](#1. 查看系统默认字符集以及校验规则)
    • [2. 查看数据库支持的字符集](#2. 查看数据库支持的字符集)
    • [3. 查看数据库支持的字符集校验规则](#3. 查看数据库支持的字符集校验规则)
    • [4. 校验规则对数据库的影响](#4. 校验规则对数据库的影响)
  • [四、 操纵数据库](#四、 操纵数据库)
    • [1. 查看数据库](#1. 查看数据库)
    • [2. 显示创建语句](#2. 显示创建语句)
    • [3. 修改数据库](#3. 修改数据库)
    • [4. 数据库删除](#4. 数据库删除)
    • [5. 查看连接情况](#5. 查看连接情况)

一、 创建数据库

语法:

sql 复制代码
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,create_specification] ...]
create_specification:
	[DEFAULT] CHARACTER SET charset_name
	[DEFAULT] COLLATE collation_name

说明:

  • 大写的表示关键字
  • \] 是可选项

  • COLLATE: 指定数据库字符集的校验规则

如果你在创建的时候没有手动指明数据库的编码格式和校验规则,那MySQL会默认采用配置文件中设置好的编码格式和校验规则

二、 数据库创建案例

默认的编码格式和校验规则

如果我们采用默认的编码格式和校验规则的话,我们可以直接使用以下指令创建一个名字叫db1_的数据库,该数据库采用的就是默认的编码格式和校验规则。

sql 复制代码
create database db1_;

可以看到在创建之前是没有db_这个数据库的,在执行完create database db1_; 命令后就新创建了一个db1_的数据库

指定编码格式

在创建数据库的时候利用charset指明编码格式即可,例如:

sql 复制代码
create database db2_ charset=utf8;


注意: SQL中的charset=utf8,也可以写成character set=utf8或character set utf8。
指定编码格式和校验规则

在创建数据库的时候利用charset指明编码格式同时利用collate指明校验规则即可。

sql 复制代码
create database db3_ charset=utf8 collate=utf8_general_ci;


注意: SQL中的collate=utf8_general_ci,也可以写成collate utf8_general_ci。

三、 字符集校验规则

1. 查看系统默认字符集以及校验规则

利用下面的指令可以得到数据库默认的编码格式:

sql 复制代码
show variables like 'character_set_database';


注意: 如果在某一个确定的数据库中使用这条指令,看到的是该数据库采用的编码格式

利用下面的指令可以得到数据库默认的校验规则:

sql 复制代码
show variables like 'collation_database';


注意: 如果在某个确定的数据库中使用这条指令,得到的是该数据库的校验规则。

2. 查看数据库支持的字符集

利用以下指令可以查看数据库支持的字符集

sql 复制代码
show charset;

字符集主要是控制用什么语言。比如utf8就可以使用中文。

3. 查看数据库支持的字符集校验规则

通过以下指令可以查看数据库支持的字符集校验规则:

sql 复制代码
show collation;

4. 校验规则对数据库的影响

编码格式决定的是数据在内存中是如何存的,校验规则决定的是数据库内部按什么规则进行操作。

举几个例子比如说:我们这里建立两个数据库,采用不同的校验规则,看看具体的效果。

  • 先创建一个不区分大小写的

创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]

依次执行下面几条指令,注意一条一条执行,不要复制粘贴一起执行。

sql 复制代码
create database db1_ collate utf8_general_ci;
sql 复制代码
use db1_;
sql 复制代码
create table person(name varchar(20));
sql 复制代码
insert into person values('a');//一个;执行一次,别一起粘贴
insert into person values('A');
insert into person values('b');
insert into person values('B');
  • 再创建一个区分大小写的

创建一个数据库,校验规则使用utf8_ bin[区分大小写]

sql 复制代码
create database db2_ collate utf8_bin;
sql 复制代码
use db2_;
sql 复制代码
create table person(name varchar(20));
sql 复制代码
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
  • 进行查询

不区分大小写的查询以及结果

sql 复制代码
use db1_;
select * from person where name='a';
select * from person where name='B';

我们可以看到,我们搜索小写的'a',但是它却把大写的和小写的都搜出来了,

我们搜索大写的'B',但是它却把大写的和小写也的都搜出来了。

区分大小写的查询以及结果

sql 复制代码
use db2_;
select * from person where name='a';
select * from person where name='B';

我们可以看到,我们搜索小写的'a',就只搜出来小写的,

我们搜索大写的'B',就只搜出来大写的

  • 结果排序

不区分大小写排序以及结果:

sql 复制代码
use db1_;
select * from person order by name;

可以看到aA挨在一起,bB挨在一起

区分大小写排序以及结果:

sql 复制代码
use db2_;
select * from person order by name;

可以看到区分大小写的话就分开了,比较的方式是按ascll码比的。

四、 操纵数据库

1. 查看数据库

使用show databases可以查看系统中所有的数据库:

如:

2. 显示创建语句

使用show create database 数据库名可以查看对应数据库的创建语句。

如:

  • MySQL建议SQL中的关键字使用大写,但不是必须的。
  • 数据库的名字加上反引号,是为了防止使用的数据库名与关键字冲突。
  • /*!40100 DEFAULT CHARACTER SET utf8 */不是注释,它表示当前MySQL版本如果大于4.10,则执行后面的SQL语句。

3. 修改数据库

sql 复制代码
ALTER DATABASE db_name [[DEFAULT] CHARSET=character_name] [[DEFAULT] COLLATE=collation_name];
  • 对数据库的修改主要指的是修改数据库的字符集或校验规则。

比如将数据库的字符集改为gbk,并将数据库的校验规则改为gbk_bin。

4. 数据库删除

sql 复制代码
DROP DATABASE [IF EXISTS] db_name;

例如删除数据库db1_

删除数据库后,该数据库下的所有表也都会被删除,因此不要随意删除数据库。

5. 查看连接情况

使用show processlist即可查看当前连接MySQL的用户。

如:

  • Id列:一个标识,可以在MySQL中通过kill id杀死指定id的线程。
  • User列:显示当前用户,如果不是root,这个命令就只显示你权限范围内的SQL语句。
  • Host列:显示这个语句是从哪个IP的哪个端口上发出的,可用来追踪出问题语句的用户。
  • db列:当前执行的命令是在哪一个数据库上,如果没有指定数据库,则该值为NULL。
  • Command列:显示当前连接执行的命令,一般就是休眠(Sleep)、查询(Query)和连接(Connect)。
  • Time列:表示该线程处于当前状态的时间,单位是秒。
  • State列:显示使用当前连接的SQL语句的状态。
  • Info列:一般记录的是线程执行的语句,默认只显示前100个字符,如果要看全部信息,需要使用show full processlist。

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

相关推荐
广州智造4 小时前
OptiStruct实例:3D实体转子分析
数据库·人工智能·算法·机器学习·数学建模·3d·性能优化
技术宝哥7 小时前
Redis(2):Redis + Lua为什么可以实现原子性
数据库·redis·lua
学地理的小胖砸8 小时前
【Python 操作 MySQL 数据库】
数据库·python·mysql
dddaidai1239 小时前
Redis解析
数据库·redis·缓存
数据库幼崽9 小时前
MySQL 8.0 OCP 1Z0-908 121-130题
数据库·mysql·ocp
Amctwd9 小时前
【SQL】如何在 SQL 中统计结构化字符串的特征频率
数据库·sql
betazhou10 小时前
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL
linux·数据库·mysql·oracle·ogg
lyrhhhhhhhh10 小时前
Spring 框架 JDBC 模板技术详解
java·数据库·spring
喝醉的小喵11 小时前
【mysql】并发 Insert 的死锁问题 第二弹
数据库·后端·mysql·死锁
付出不多12 小时前
Linux——mysql主从复制与读写分离
数据库·mysql