MySQL数据库的基本使用

news2025/1/10 11:17:20

目录

1.MySQL数据库中的用户管理与登录

1.1用户管理

root用户

其他用户

1.2MySQL数据库的登录

2.使用MySQL的前置知识

2.1SQL语言

SQL语言简介

SQL语句的分类

2.2编码集的认识

字符集

校验集

字符集和校验集的关系

如何查看和修改字符集与校验集

3.MySQL数据库的操作

3.1库的操作

创建数据库

查看数据库

修改数据库

删除数据库

数据库的备份与恢复

备份

恢复 

恢复数据库的原理

查看数据库连接情况

3.2表的操作

创建表

查看表

修改表

添加记录

添加一列

修改某一列的属性

删除某一列

修改表名 

修改列名

删除表

1.MySQL数据库中的用户管理与登录

MySQL数据库需要保证用户数据的安全性,所以MySQL数据库具有用户管理功能;正是因为有了数据库管理功能,所以我们在数据数据库的时候 就需要进行登录验证,只有登录成功才能使用MySQL数据库的服务。

1.1用户管理

MySQL数据库中的用户分为root用户和其他用户。

root用户

当我们在安装好MySQL数据库之后,MySQL通常会为我们创建一个默认用户 —— root 。root用户是MySQL数据库中的超级管理员用户,这一点和Linux操作系统是一样的;root用户具有数据库的所有操作权限,是MySQL数据库中最重要且权限最高的用户;root用户在初始状态下没有密码,所以我们需要给 root 用户设置密码,如果你想将root用户的密码设置为new_password,可以使用如下命令

为没有密码的root用户设置密码:

mysqladmin -u root password 'new_password'

其他用户

在MySQL中,其他的用户需要我们来创建,如果你想创建一个名为newuser的用户,可以使用如下命令

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

其中,newuser是用户名,password是密码,localhost指的是MySQL服务器所在的地址。

我们还可以使用如下命令查看MySQL中有哪些用户

 SELECT User, Host FROM mysql.user;

好了,设置好用户和密码之后,就可以登录MySQL数据库了。

1.2MySQL数据库的登录

我们可以使用以下命令来登录MySQL数据库

mysql -h 'host' -P 3306  -u 'username' -p

其中,-h用来指明要登录的部署了MySQL服务的主机,-P 表明我们要访问的端口号,-u指明登录用户,-p指明需要输入密码。

注意:我们输入密码的时候,是不会回显的。

说明

主机名:如果不使用-h选项指明需要需要登录的主机名,默认情况下,登录MySQL时连接到的是本地的MySQL服务器,即 127.0.0.1;

端口号:MySQL服务器的默认端口号是3306。在大多数情况下,不需要在登录命令中显式指定端口号,因为MySQL客户端会尝试连接到默认端口。如果需要连接到非默认端口的MySQL服务器,可以使用-p选项后跟端口号。

2.使用MySQL的前置知识

2.1SQL语言

SQL语言简介

MySQL数据库中维护的是一个个的数据库,数据库中维护的是一张张的表,所以我们对MySQL数据库进行操作无非就是 操作库 和 操作表。

操作数据库,需要我们能够和数据库进行对话。就好比人与人之间的对话依靠自然语言,人和计算机之间进行对话的时候需要依靠编程语言,同理,人和数据库进行对话的时候,就需要数据库语言;于是SQL语言就诞生了,SQL是一种结构化查询语言,用于对数据库进行操作。几乎所有的数据库系统都支持SQL语言。

SQL语句的分类

我们使用SQL语言时,使用的其实是一条条的SQL语句,SQL语句可以被大致分为三类:

1、DDL【data definition language】 数据定义语言,用来维护存储数据的结构,代表指令: create, drop, alter
2、DML【data manipulation language】 数据操纵语言,用来对数据进行操作,代表指令: insert,delete,update
3、DCL【Data Control Language】 数据控制语言,主要负责权限管理事务,代表指令: grant,revoke,commit

注意:DML中又单独分了一个DQL,数据查询语言,代表指令: select

2.2编码集的认识

创建数据库的时候,有两个编码集,一个是字符集,一个是校验集。我们可以指定字符集和校验集来创建数据库,当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci

字符集

编码集是指用于表示文本字符的编码方案。在MySQL中,每个数据库和数据表都可以指定自己的编码集,这决定了数据库中字符数据的存储方式。常见的MySQL编码集包括:

  • UTF-8:一种广泛使用的Unicode编码,可以表示世界上几乎所有的字符,非常适合在多语言环境中使用。
  • GBK:一种中文字符集编码,用于表示中文字符和一些特殊字符,广泛用于中文环境。
  • Latin1:一种较旧的西欧语言字符集编码,不支持多语言和特殊字符。

校验集

校验集是指字符集中的字符如何进行比较和排序的规则。在MySQL中,每个字符集都可以有多个校验集,这些校验集定义了字符的比较和排序方式。例如,对于UTF-8编码集,就有多种校验集,如utf8_general_ci(不区分大小写)和utf8_bin(区分大小写和二进制比较)。常见的MySQL校验集如下:

  • utf8_general_ci:这是UTF-8字符集的一个常用校验集,其中“ci”表示不区分大小写(case-insensitive)。它适用于大多数需要处理多语言文本的场景,并且不区分字符的大小写。
  • utf8_bin:与utf8_general_ci相对应,utf8_bin是区分大小写和二进制比较的校验集。它在进行字符比较时会考虑字符的二进制表示,因此更加精确但可能不适用于所有场景。
  • latin1_swedish_ci:这是Latin1字符集的一个常用校验集,使用瑞典语规则进行字符比较,同样不区分大小写。Latin1字符集主要用于西欧语言
  • gbk_chinese_ci:这是GBK字符集的一个校验集,适用于中文环境不区分大小写。GBK字符集是对GB2312的扩展,支持更多的中文字符。

字符集和校验集的关系

  • 字符集决定了字符的存储方式:它定义了如何将字符映射到字节序列。
  • 校验集决定了字符的比较和排序方式:它定义了字符集内字符之间的比较规则,影响数据库的查询、排序等操作。

如何查看和修改字符集与校验集

  • 查看当前数据库的字符集和校验集

SHOW VARIABLES LIKE 'character_set_database'; -- 查看数据库字符集

SHOW VARIABLES LIKE 'collation_database'; -- 查看数据库校验集

  • 修改数据库的字符集和校验集

ALTER DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_general_ci;

3.MySQL数据库的操作

3.1库的操作

创建数据库

创建数据库语法格式如下:

CREATE DATABASE IF NOT EXISTS database_name [CHARACTER SET charset_name] [COLLATE collation_name];

说明:
大写的表示关键字
[] 是可选项
CHARACTER SET: 指定数据库采用的字符集
COLLATE: 指定数据库字符集的校验规则

使用示例:

查询数据库:

可以看到数据库创建成功。当然,你也可以指定编码集和校验集来创建数据库。

创建数据库的到底是在干什么呢?

我们可以使用 ls -l 命令查看 /var/bin/mysql 目录

可以以看到我们前面创建的test_database居然在这个目录里面,并且最开始的d表明这是一个目录,所以创建数据库的本质就是在 /var/bin/mysql 目录下创建一个目录。

查看数据库

我们可以使用 show database;语句来查看MySQL中有哪些数据库

如果我们忘记了当时是怎么创建数据库的,我们还可以使用 show create database '数据库名称' 的方式显示创建语句

说明:

  • MySQL 建议我们关键字使用大写,但是不是必须的。
  • 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字。
  • /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话 

修改数据库

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

语法如下:

ALTER DATABASE db_name [alter_spacification] [alter_spacification]


alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

使用示例:

我们可以使用 show create database test_database 命令查看是否修改test_database数据库的字符集成功

可以看出修改字符集成功。

删除数据库

删除数据库语法如下:

DROP DATABASE [IF EXISTS] db_ name;

使用示例:

当我们再次使用show database命令查看MySQL中的数据库时,就查不到test_database数据库了

删除数据库,数据库中的文件全部被删除,轻易不要删除数据库。 

数据库的备份与恢复

备份

当我们要删除数据库的时候,最好是将数据库进行备份。如何备份数据?我们可以使用mysqldump这个工具,在Linux命令行输入下面的命令

mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

通过这条命令就可以将指定的数据库备份到指定的目录下了;

备份示例:新建了一个BackMysql目录,第一次使用ls查看时,该目录中啥也没有,然后使用mysqldump工具,将数据库中的test_db2数据库备份到BackMysql目录中,并指定名称为test_db2.sql,当我们再次查看时,我们发现该目录中多了一个test_db2.sql文件,说明备份成功。

恢复 

备份好了之后,我们删除数据库中的test_db2。

 删除完之后,我们进行恢复,恢复数据库 的语法格式如下

source 要恢复的文件路径

恢复示例:我们输入 source /home/ubuntu/BackMysql/test_db2.sql 命令

 当我们再次查看MySQL中的数据库时,test_db2又存在了。

恢复数据库的原理

我们可以查看一下test_db2.sql中的内容,我们发现,它不仅备份了数据,而且还备份了该数据库的操作。

当我们恢复数据库时,可以看到许多的 Query OK!这说明当我们恢复数据库的时候,MySQL会将备份文件中的所有sql语句执行一遍。这样我们就将删除的数据库恢复出来了。

注意事项:

如果备份的不是整个数据库,而是其中的一张表,可以使用以下语句:

mysqldump -u root -p 数据库名 表名1 表名2 > 指定的路径

同时备份多个数据库,可以使用以下语句:

mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

查看数据库连接情况

如果我们在使用数据库的时候,发现数据库比较慢时,我们可以使用以下命令来查看当前有哪些用户连接到我们的MySQL

show processlist

3.2表的操作

创建表

语法:

CREATE TABLE table_name (
        field1 datatype,
        field2 datatype,
        field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

说明:
field 表示列名
datatype 表示列的类型
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

示例:

其中comment 是描述字段。

创建表的本质是什么呢?

我们可以使用 ls -l /var/lib/mysql/test_db2/ 命令查看test_db2中的内容

我们可以看到test_db2目录下多了几个文件,所以,创建表的本质就是创建文件;并且我们可以清晰的观察到存储users表时存储了三个文件,这就是MySAM存储引擎下的存储格式。

不同的存储引擎存储表的格式不同,我们可以再创建一张stu表,使用默认的存储引擎,观察stu表的存储格式

查看表

我们创建表之后,可以查看当前数据库中的表、某张表的结构以及表中的内容

查看数据库中的表:

我们可以使用 show tables 查看当前数据库中有哪些表

查看表的结构:

我们可以使用 desc 表名 的方式查看某张表的结构

查看表中的内容:

我们可以使用select * from 表名 的方式查看某张表中的内容

 可以看出当前表中什么也没有。

如果你忘记当时是怎么创建这张表的了,还可以使用 show create table 表名 \G 的方式查看创建该表的语句。

修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

添加记录

我们可以使用 insert into 表名 values (个属性字段的值);来向指定的表中添加记录

当我们添加完记录之后,就可以查看到表中的这条记录了。

添加一列

我们可以使用 alter table 表名 add 新添加的列名 after 列名;在指定列的后面添加一列

我们可以查看一下表中的数据,我们发现新添加的属性字段不会影响原来的数据,但是默认是空。

并且我们发现创建表的语句也发生了变化。

修改某一列的属性

我们可以使用 alter table 表名 modify 要修改的列名 新的属性 来修改列的属性

我们可以查看一下创建表的语句,我们发现,创建这个属性的描述字段没有了,说明,修改属性字段的时候,是用新的属性字段覆盖旧的属性字段。

删除某一列

我们可以使用 alter table 表名 drop 要删除的列名;来删除某一列

当我们执行完该语句之后,查看表的结构,我们发现,password 这一列没有了

并且这一列的数据也都删除了

修改表名 

我们可以使用 alter table 表名 rename to 新的表名 来修改表名;其中 to 是可以省略的。

我们可以看到表名确实发生了修改。

修改列名

我们可以使用 alter table 表名 change 要修改的属性名 新的属性名 新属性的类型; 来对列名进行修改。

我们可以看到原来的name列被修改成了clients。 

删除表

我们可以通过这条语句来删除表:

drop table 表名;

我们将stu表进行删除。 

注意:数据库是程序中比较底层的东西,我们轻易不要对表和库做删除、修改操作,一旦修改和删除库或表,上层使用该库或表的东西都要改变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2112800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Pyhton报错已解决】`AttributeError: ‘list‘ object has no attribute ‘text‘`

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言:一、问题描述:1.1 报错示例:1.2 报错分析:1.3 解决思路&#xff…

2024 年,数据中台引领企业走向何方?

2024 年,数据中台引领企业走向何方? 前言数据中台引领企业走向何方 前言 在当今数字化时代,数据已成为企业发展的核心资产。随着企业业务的不断扩展和数据量的急剧增长,如何有效地管理和利用数据,成为企业面临的重要挑…

计算机论文七种流程图画法,详细教程来袭!(导师都说我图画的标准)

我 | 在这里 ⭐ 全栈开发攻城狮、全网10W粉丝、2022博客之星后端领域Top1、专家博主。 🎓擅长 指导毕设 | 论文指导 | 系统开发 | 毕业答辩 | 系统讲解等。已指导60位同学顺利毕业 ✈️个人公众号:热爱技术的小郑。回复 Java全套视频教程 或 前端全套视频…

Linux学习~树莓派gpio控制(1)

git clone git://git.drogon.net/wiringPi cd wiringPi ./build build 脚本会帮助你编译和安装 wiringPi。 方案B——直接下载 tar xfz wiringPi-xx.tar.gz cd wiringPi-xx ./build wiringPi 包括一套 gpio 命令,使用 gpio 命令可以控制树莓派上的各种接口&…

【物理密度计工作原理图】密度大小与密度计浸没深度关系图

密度大小与密度计浸没深度关系图 绘制图像的好处: 直观展示数据:图形可以直观地展示数据之间的关系,使得理解和分析数据变得更加容易。 便于比较:通过图形可以快速比较不同液体密度下密度计的浸没深度变化。 科学验证&#xff…

我的私人助理 | 办公小浣熊

我的私人助理 | 办公小浣熊 办公小浣熊上手实操业务场景分析一(数据处理)demo 本地数据库操作业务场景分析二(数据处理)Excel 本地文件操作业务场景分析三(数据可视化)业务场景分析四(趋势判断&…

【B题第二套完整论文已出】2024数模国赛B题第二套完整论文+可运行代码参考(无偿分享)

2024数模国赛B题完整论文 摘要: 随着电子产品制造业的快速发展,质量控制与成本优化问题成为生产过程中亟待解决的核心挑战。为应对生产环节中的质量不确定性及成本控制需求,本文结合抽样检测理论和成本效益分析,通过构建数学模型…

Leetcode面试经典150题-128.最长连续序列-递归版本另解

之前写过一篇这个题的,但是可能代码比较复杂,这回来个简洁版的,这个是递归版本 可以看看之前的版本,两个版本面试用哪个都保过 解法都在代码里,不懂就留言或者私信 class Solution {/**对于之前的解法,我…

【vulhub】thinkphp5 2-rce 5.0.23-rce 5-rce 漏洞复现

2-rec 1.启动环境 cd /.../vulhub/thinkphp/2-rce # cd进入2-rce靶场文件环境下 docker-compose up -d # docker-compose启动靶场 docker ps -a # 查看开启的靶场信息2.访问192.168.146.136:8080网页 3.构造payload http://192.168.146.136:80…

Openharmony 下载到rk3568实现横屏

前言: Openharmony 源码版本4.1 release 板子:rk3568 1.修改“abilities”中的“orientation”实现横竖屏 entyr->src->module.json5文件里面添加 "orientation": "landscape", 2.修改系统源码属性实现横竖屏切换 通过这…

IDEA取消自动选择光标所在行

今天出现了一个怪事: 当我使用IDEA编写代码的时候,单击下一行或者上一行的时候,莫名其妙它会自己选中一行,导致我要么是回车代码直接没了,要么是代码直接给我搞错位了,还得按ctrlz返回,十分的恶…

【C++】:模板初阶—函数模板|类模板

✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山岗! 💫 欢迎来到我的学习笔记! 本文参考博客:一同感受C模版的所带来的魅力 一、泛型编程思想 首先…

代码随想录算法训练营第五十一天 | 99.岛屿数量-深搜 ,99.岛屿数量-广搜 ,100.岛屿的最大面积

目录 99.岛屿数量-深搜 思路 方法一: 深度优先搜索-先判断 方法二:深度优先搜索-终止条件 心得收获 99.岛屿数量-广搜 思路 广度优先搜索 方法一:广度优先搜索 100.岛屿的最大面积 思路 深度优先搜索 广度优先搜索 方法一&am…

c语言——用一维数组输出杨辉三角形

一.代码 #include <stdio.h> int Num[100]; int Hang; int Lie; int a; int Flag; int main() {Lie 1;Hang 1;a 0;while (1) {//列1为1if (Lie 1) {Num[1] 1;Lie;}//数据存到数组里面while (Hang > Lie && Hang ! 2) { if (Hang!Lie) {Flag Num[Lie] …

解锁Web3.0——Scaffold-eth打造以太坊DApp的终极指南

&#x1f680;本系列文章为个人学习笔记&#xff0c;目的是巩固知识并记录我的学习过程及理解。文笔和排版可能拙劣&#xff0c;望见谅。 目录 前言 一、快速部署 1、前期准备&#xff1a; 2、安装项目&#xff1a; ​ 二、配置部署运行环境 1、初始化本地链&#xff1a;…

Qt-QWidget的windowOpacity属性(16)

目录 描述 相关API 使用 设置槽函数 两个问题 第一个问题&#xff1a;浮点数精确度问题 第二个问题&#xff1a;防御性编程 描述 这个属性就是用来设置窗口的不透明度的 相关API 使用 我们创建一个新的项目来进行测试 如下&#xff0c;我们再把这两个按钮设置一下名…

改进YOLOv8系列:加入多尺度卷积注意力MSCA注意力: ,即插即用,助力小目标检测

改进YOLOv8系列:加入非对称卷积块ACNet,加强CNN 的内核骨架 论文研究概括MSCA模块介绍需要修改的代码MSCA代码创建yaml文件测试是否创建成功本文提供了改进 YOLOv8注意力系列包含不同的注意力机制以及多种加入方式,在本文中具有完整的代码和包含多种更有效加入YOLOv8中的ya…

模型 跃迁(泛化)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。跨越式变革与发展。 1 跃迁的应用 1.1 个人成长中的跃迁现象&#xff1a;职业转型与技能升级 背景描述&#xff1a; 在个人职业发展的过程中&#xff0c;跃迁现象指的是个体在技能、知识和职业地位上…

Python教程(二十一) : 从零开始制作计算器应用【PyQt6】

文章目录 专栏列表环境准备代码解析主要组件初始化界面布局设置事件处理计算逻辑 运行应用完整代码示例截图总结注意 专栏列表 Python教程&#xff08;十&#xff09;&#xff1a;面向对象编程&#xff08;OOP&#xff09;Python教程&#xff08;十一&#xff09;&#xff1a;…

国产化软件内容及要求

国产化软件是指在中国自主研发的软件产品&#xff0c;旨在减少对外部技术的依赖&#xff0c;提升国家信息安全和软件产业的自主可控能力。国产化软件涵盖了从操作系统、数据库、办公软件、各类应用软件、中间件等多个层面。 操作系统&#xff1a;国产操作系统如银河麒麟、UOS、…