【MySql】数据库的增删改查

本篇的主要目的:对于数据库如何去增加删除查询修改

创建数据库create

主要细节在于选项问题,编码选项

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: 指定数据库字符集的校验规则

  • 查看当前用户数据库的列表show databases;

image-20230606163930320

  • 创建数据库create database db_name;

image-20230606164020469

当我们创建数据没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则:utf_general_ci;

简单验证一下:创建一个数据库create database d1,然后去/var/lib/mysql/d1/db.opt查看:、

image-20230606170835046

  • 删除数据库drop database db_name;

image-20230606164118583

创建数据库:create database db_name(本质就是Linux在/var/lib/mysql创建一个目录),删除数据库:drop database db_name;(删除目录)

比如我们在/var/lib/mysql下创建一个目录youcanseeme,而用mysql命令show databases;自然也可以看到。(但是在/var/lib/mysql手动mkdir创建目录这是非常不合理的)

  • 创建不存在(if not exists)的数据库create database if not exists database1;

image-20230606164534363

  • 数据库编码问题

创建数据库的时候,有两个编码集:1.数据库编码集 2.数据库校验集

数据库编码集——数据库未来存储数据

数据库校验集——支持数据库进行字段比较使用的编码,本质也是一种读取数据库中数据采用的编码格式

数据库无论对数据做任何操作,**都必须保证操作和编码必须是编码一致的!**防止乱码

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

编码集:show variables like ‘character_set_database’;

image-20230606165232619

校验集:show variables like ‘collation_database’;

image-20230606165436555

除了database之外,其他的呢:show variables like ‘collation_%’;

image-20230606165535828

如果想查看数据库支持的字符集:show charset;

如果想查看数据库支持的字符集校验规则:show collation;

  • 创建指定编码集的数据库

如果没有指定,默认以配置文件为主

两种方式创建字符集为utf8的表:

create database d2 charset=utf8;
create database d3 character set utf8;

image-20230606171035300

image-20230606171058791

同时设置字符集与校验集:

image-20230606171552333

image-20230606171633156

image-20230606171914824

  • 校验规则对数据库的影响

为了说明这个情况,现在我们创建两个数据库:

test1数据库校验集设置为utf8_general_ci;字符集默认为utf8;校验规则使用utf8_ general_ ci[不区分大小写]

test2数据库校验集设置为utf8_bin;字符集默认为utf8;校验规则使用utf8_ bin[区分大小写]

image-20230606174058107

image-20230606174309208

  • test1数据库

现在先来看数据库test1,往数据库test1插入数据,先使用数据库use test1;创建表person

 create table if not exists person (name varchar(20));

插入数据:

mysql> insert into person (name) values ('a');
Query OK, 1 row affected (0.01 sec)

mysql> insert into person (name) values ('b');
Query OK, 1 row affected (0.00 sec)

mysql> insert into person (name) values ('A');
Query OK, 1 row affected (0.01 sec)

mysql> insert into person (name) values ('B');
Query OK, 1 row affected (0.00 sec)

mysql> insert into person (name) values ('c');
Query OK, 1 row affected (0.01 sec)

mysql> insert into person (name) values ('D');
Query OK, 1 row affected (0.00 sec)

此时的表person,查询表person:

image-20230606184457001

查询person表中的a:结果是大写小写都能够查出来,则是utf8_general_ci不区分大小写:

image-20230606184745103

看一下排序结果:

image-20230606185739270

test1中的校验规则是utf8_general_ci进行比较的时候,进行校验的时候大小写不做区分,校验集是会影响结果的,一般我们按照默认的

  • test2数据库

现在再来看数据库test2,使用数据库use test2;,创建表person:

create table if not exists person (name varchar(20));

插入数据,查看表person:

image-20230606185157251

查询person表中的a:结果是只查出来小写:这是utf8_bin区分大小写:

image-20230606185257603

对于排序,数据库test2中的person默认是升序的,按照ascii值小到大:

image-20230606185545237

查看数据库show

show databases;

image-20230606190034481

  • 使用数据库use db_name;

查看到之后并不能直接使用数据库,想使用数据库使用use+数据库名称;如使用数据库helloworld;

use helloworld;
  • 确认当前使用的数据库select database();
select database();

当前正在使用test1数据库

image-20230606190917925

删除数据库drop

DROP DATABASE [IF EXISTS] db_ name;

执行删除之后的结果:

数据库内部看不到对应的数据库
对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

注意:不要随意删除数据库

//删除数据d5\d4\d3;
mysql> drop database d5;
Query OK, 0 rows affected (0.00 sec)

mysql> drop database d4;
Query OK, 0 rows affected (0.00 sec)

mysql> drop database d3;
Query OK, 0 rows affected (0.00 sec)

修改数据库alter

ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

采用alter的方式对数据库进行修改

对数据库的修改主要指的是修改数据库的字符集,校验规则

alter database test2 charset=gbk collate gbk_chinese_ci;

修改完查看数据库test2的信息:

image-20230606192003148

/*!40100 DEFAULT CHARACTER SET gbk */:这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话

猜你喜欢

转载自blog.csdn.net/weixin_60478154/article/details/131074488