0
点赞
收藏
分享

微信扫一扫

【No.15】蓝桥杯动态规划上|最少硬币问题|0/1背包问题|小明的背包1|空间优化滚动数组(C++)

猎书客er 03-24 11:30 阅读 1

文章目录


一、 创建数据库

语法:

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_的数据库,该数据库采用的就是默认的编码格式和校验规则。

create database db1_;

可以看到在创建之前是没有db_这个数据库的,在执行完create database db1_; 命令后就新创建了一个db1_的数据库
在这里插入图片描述
指定编码格式
在创建数据库的时候利用charset指明编码格式即可,例如:

create database db2_ charset=utf8;

在这里插入图片描述
注意: SQL中的charset=utf8,也可以写成character set=utf8或character set utf8。
指定编码格式和校验规则
在创建数据库的时候利用charset指明编码格式同时利用collate指明校验规则即可。

create database db3_ charset=utf8 collate=utf8_general_ci;

在这里插入图片描述
注意: SQL中的collate=utf8_general_ci,也可以写成collate utf8_general_ci。

三、 字符集校验规则

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

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

show variables like 'character_set_database';

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

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

show variables like 'collation_database';

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

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

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

show charset;

在这里插入图片描述

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

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

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

show collation;

在这里插入图片描述

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

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

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

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

创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]
依次执行下面几条指令,注意一条一条执行,不要复制粘贴一起执行。

create database db1_ collate utf8_general_ci;
use db1_;
create table person(name varchar(20));
insert into person values('a');//一个;执行一次,别一起粘贴
insert into person values('A');
insert into person values('b');
insert into person values('B');

在这里插入图片描述

  • 再创建一个区分大小写的

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

create database db2_ collate utf8_bin;
use db2_;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

在这里插入图片描述

  • 进行查询

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

use db1_;
select * from person where name='a';
select * from person where name='B';

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

在这里插入图片描述

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

use db2_;
select * from person where name='a';
select * from person where name='B';

我们可以看到,我们搜索小写的’a’,就只搜出来小写的,
我们搜索大写的’B’,就只搜出来大写的
在这里插入图片描述

  • 结果排序

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

use db1_;
select * from person order by name;

可以看到aA挨在一起,bB挨在一起
在这里插入图片描述

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

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. 修改数据库

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

比如将数据库的字符集改为gbk,并将数据库的校验规则改为gbk_bin。
在这里插入图片描述

4. 数据库删除

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,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

举报

相关推荐

0 条评论