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

说明:

  • 大写的表示关键字
  • [] 是可选项
  • CHARACTER SET: 指定数据库采用的字符集
  • 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,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

相关推荐
Hello.Reader1 小时前
Redis大Key问题全解析
数据库·redis·bootstrap
靖顺3 小时前
【OceanBase 诊断调优】—— packet fly cost too much time 的根因分析
数据库·oceanbase
liuxin334455663 小时前
学籍管理系统:实现教育管理现代化
java·开发语言·前端·数据库·安全
yuanbenshidiaos6 小时前
C++--------------树
java·数据库·c++
dengjiayue7 小时前
MySQL 查询大偏移量(LIMIT)问题分析
数据库·mysql
言之。7 小时前
【MySQL】在MySQL中如何定位慢查询?
数据库·mysql
DashVector7 小时前
如何通过HTTP API插入Doc
数据库·人工智能·http·阿里云·向量检索
DashVector7 小时前
如何通过HTTP API分组检索Doc
服务器·数据库·http·数据库开发·数据库架构
Suwg2097 小时前
【MySQL】踩坑笔记——保存带有换行符等特殊字符的数据,需要进行转义保存
数据库·笔记·mysql
PittDing7 小时前
【更新】Docker新手入门教程2:在Windows系统通过compose创建多个mysql镜像并配置应用
windows·mysql·docker