mysql 库的操作

news/2024/10/30 23:14:24/

请添加图片描述

文章目录

  • mysql 库的操作
      • 1. 创建数据库
        • 创建数据库案例
      • 2. 字符集和校验规则
        • 查看系统默认的字符集合校验规则
        • 查看数据库支持的字符集
        • 查看数据库支持的字符集较验规则
        • 校验规则对数据库的影响
      • 3. 操作数据库
        • 查看数据库
        • 显示创建语句
        • 修改数据库
        • 删除数据库
        • 查看数据库连接情况

mysql 库的操作

1. 创建数据库

创建数据库的指令:

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]

说明

  • 大写的表示关键字

  • [] 是可选项

  • CHARACTER SET: 指定数据库采用的字符集

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

创建数据库案例

创建一个名为hellomysql的数据库

create database hellomysql; 

注: sql语句后面都需要带

可以看到我们数据hellomysql已经创建成功了,而实际上在mysql中创建一个数据库,实际上是在创建一个目录,而这些数据库文件都是放在我们自己所配置的路径下的;配置文件通常就是 ./etc/my.cnf下

下面是我的配置文件,可以看到我是将数据库文件默认存放在

/www/server/data

下的,我们切换到该路径下查看一下

可以看到在data目录下确实创建了我们的hellomysql目录,而实际上我们在数据库中创建一个表结构就是在当前数据库目录下创建一个文件

2. 字符集和校验规则

查看系统默认的字符集合校验规则

show variables like 'character_set_database';
show variables like 'collation_database';

说明:

  • **character_set_database : ** 字符集合
  • collation_database: 校验规则

从上面可以看出来:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_general_ ci

查看数据库支持的字符集

指令

show charset;

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

查看数据库支持的字符集较验规则

sql语句:

show collation;

可以看到数据库支持的字符集校验规则还是十分多的

校验规则对数据库的影响

字符集编码格式和字符集校验规则的区别

  • 字符集编码格式指的是在存储数据时各个字符的底层编码,用于指定数据的存储格式。
  • 字符集校验规则是在字符集内用于比较字符的一套规则,作用就是对数据进行比对。

例如:我们存储数据时使用的格式是utf8,那么在对数据进行做对比时就也得按照utf8的格式进行对比,因为“存数据”和“取数据”的方式必须要保持一致

mysql中字符集和校验规则的对应关系

  • 每个校验规则唯一对应一种字符集,但一个字符集可以对应多种校验规则,其中有一个是默认(Default Collation);

  • 确定比较规则后,才能在一个字符集上定义什么是等价的字符,以及字符之间的大小关系;

校验规则对数据库的影响

命名惯例:以对应的字符集名称开头;以 _ci(表示大小写不敏感)_cs(表示大小写敏感)_bin(表示按编码值比较)结尾

例子:

我们创建一个数据库,校验规则适用utf8_general_ci

而后适用use切换到当前数据库下(可以理解为cd 到test1 目录下),创建一个表结构,而后插入数据,如下:

查看表里面的数据

筛选名字为curry的数据

select * from person where name = 'curry' ;

我们发现查询结果是不区分大小的

而我们再创建一个数据库test2 校验规则为collate utf8_bin

create database test2 collate utf8_bin;

如下:

我们再像上面一样,先切换到数据库test2(要想在对应的数据库下创建表结构,都得先切换到该数据库下),再插入同样的数据;如下:

我们查看插入的数据和筛选出名字为“curry"的人,查看是否区分大小写;如下:

我们会发现在校验规则为utf8_bin下,是区分大小写的

3. 操作数据库

查看数据库

show databases;

如下:

显示创建语句

show create database 数据库名;

例:

说明:

  • MySQL 建议我们关键字使用大写,但是不是必须的。

  • 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字

  • /*!40100 default… */ 这个不是注释,而是表示当前mysql版本大于4.01版本,就执行这句话

修改数据库

语法:

ALTER DATABASE db_name [alter_spacification [,alter_spacification]...]

说明:

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

例子:

将数据库test1 的数据库字符集改成gdk ;如下:

删除数据库

就是我们平时俗称的”删库跑路“

语法:

DROP DATABASE [IF EXISTS] db_ name;

执行删除之后的结果:

  • 数据库内部看不到对应的数据库

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

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

下面演示将刚才创建出来的test1 删除;

查看数据库连接情况

语法:

show processlist

例:

  • 说明:

  • Id列:一个标识,可以在MySQL中通过kill id杀死指定id的线程。

  • User列:显示当前用户,如果不是root,这个命令就只显示你权限范围内

    SQL语句。

  • Host列:显示这个语句是从哪个IP的哪个端口上发出的,可用来追踪出问题语句的用户。

  • db列:当前执行的命令是在哪一个数据库上,如果没有指定数据库,则该值为NULL。

  • Command列:显示当前连接执行的命令,一般就是休眠(Sleep)、查询(Query)和连接(Connect)。

  • Time列:表示该线程处于当前状态的时间,单位是秒。

  • State列:显示使用当前连接的SQL语句的状态。

  • Info列:一般记录的是线程执行的语句,默认只显示前100个字符,如果要看全部信息,需要使用show full processlist。

当前执行的命令是在哪一个数据库上,如果没有指定数据库,则该值为NULL。

  • Command列:显示当前连接执行的命令,一般就是休眠(Sleep)、查询(Query)和连接(Connect)。

  • Time列:表示该线程处于当前状态的时间,单位是秒。

  • State列:显示使用当前连接的SQL语句的状态。

  • Info列:一般记录的是线程执行的语句,默认只显示前100个字符,如果要看全部信息,需要使用show full processlist。

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


http://www.ppmy.cn/news/88908.html

相关文章

后端和前端有什么区别

后端和前端的区别是:1、定义不同;2、展示方式不同;3、所需的技能不同;4、思考角度不同;5、入门难度不同。其中,前端统称为客户端开发,在应用程序或网站的屏幕上看到的所有内容都属于前端的工作范…

Charles 抓包工具下载安装及基础使用

在Charles抓包工具之前讲过了Fiddler抓包工具,在讲之前先来解决读者的该怎么读这两个单词( Charles 读:雀奥斯 和 Fiddler 读:非的了 ),下面进入正题,有使用过抓包工具的或者看过之前关于Fiddle…

Educational Codeforces Round 149 (Rated for Div. 2)

D. Bracket Coloring 链接 题目大意就是给一个括号序列染色以成为漂亮的括号序列 题目大意就是给一个括号序列染色以成为漂亮的括号序列 题目大意就是给一个括号序列染色以成为漂亮的括号序列 题目要求最少染色颜色种类 题目要求最少染色颜色种类 题目要求最少染色颜色种类 …

如何真正开启docker远程访问2375

注意看官方文档 Configure remote access for Docker daemon | Docker Documentation 1. windows上Docker Desktop开启远程访问端口2375 系统版本: win10专业版 Docker Desktop版本:4.18.0 很简单勾上, 应用并重启即可 2. linux上开启 尝…

Java和其他编程语言有什么区别?

Java是一种通用、面向对象、高级编程语言,具有以下与其他编程语言的区别: 平台无关性:Java是一种平台无关的编程语言。Java源代码被编译为字节码,然后在Java虚拟机(JVM)上运行。这种设计使得Java可以在不同…

Tuxera for Mac2023中文版读写硬盘U盘工具

在日常生活中,我们使用Mac时经常会遇到外部设备不能正常使用的情况,如:U盘、硬盘、软盘等等一系列存储设备,而这些设备的格式大多为NTFS,Mac系统对NTFS格式分区存在一定的兼容性问题,不能正常读写。 那么什…

Java程序设计入门教程--物体的抽象过程

类的概念 面向对象的思想来源于对客观世界的认知。 现实的世界是缤纷复杂、种类繁多,难于认识和理解的,但聪明的人们学会了把这些错综复杂的事物进行分类,从而使世界变得井井有条。比如我们由各式各样的汽车抽象出汽车的概念&#xf…

【2】Jmeter获取token,模拟多用户并发及token存储文本文件

按以下步骤来,以下各种处理程序的放置位置很重要!!不然会出现各种问题: 1、setup线程组 前置获取token的接口(login,以下都用login表示获取token接口)请求,获取类似token等后续需要…