MySQL—关于数据库的CRUD—(增删改查)

发布于:2024-10-18 ⋅ 阅读:(29) ⋅ 点赞:(0)


关于数据库的使用:

1. 数据库的背景知识:

(1)数据库是用来存储,管理数据的,数据库的存在建立在硬盘之上,底层用的是硬盘的存储空间,管理数据库需要对数据库进行操作。
(2)对数据库进行操作需要使用数据库语言,SQL是一种标准化定义的关系型数据库语言,用于处理,管理关系型数据库,SQL是一组预定义的指令集,可以通过它来操作,管理关系型数据库。
(3)仅仅有操作数据库的语言是不够的,我们需要有专门的数据库管理系统来根据sql语言来进行接收用户的请求并进行相应地操作执行(管理数据),以及“响应“等等功能,MYSQL即是内在支持sql语言的关系型数据库软件。

2. MYSQL数据库软件的使用(MYSQL安装的问题在另一篇博客中讲解)。

(1)启动MYSQL数据库软件

启动MYSQL数据库软件的方式有几种:

  1. 可以直接打开提供的数据库程序客户端。
    可以在搜索栏中搜索MYSQL
    在这里插入图片描述
    点击即可。
  2. 通过cmd执行命令打开,需要先配置环境变量:
    找到MYSQL的MYSQL Server中的bin目录下:

在这里插入图片描述

复制文件路径:
在系统的设置相应的环境变量:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
输入安装时设置的密码即可使用。

(2)开始使用数据库程序:

1)相关的知识:

在使用数据库之前,我们先介绍一下整个MYSQL数据库程序的架构:
数据库程序分为客户端与服务器端两部分,客户端用于接收用户的操作信息并向服务端发送“请求”,服务器端接收客户端发来的请求,并执行相应的操作并对其进行“响应”。
在这里插入图片描述
在数据库服务器端中可以对多个数据库提供服务。

如图:
在这里插入图片描述
数据库中的逻辑结构:

这里的“多个数据库”中的数据库并不是指数据库的统称,也不是指数据库管理系统软件,而是指具体的数据库逻辑结构:
这涉及数据库与数据结构的关系,数据库底层是用数据结构来进行组织数据的,而在关系型数据库中,数据之间的关系抽象是用二维表来表示的。如上图中的学生信息的部分。在一个单个数据库中可能会有多个表,也可能只有一个表,也可能没有表。
关于表的具体描述:
在这里插入图片描述

表与表之间的关系
在单个数据库中表与表之间有可能有联系,有可能没有。
表与表之间的联系是通过具有相同的属性来链接的。

2)具体使用。

注:这里只演示一些常用的,初阶的MYSQL的使用,如果大家需要更深的知识,请去查看文档或者其他博主的博客。
注:MYSQL对字母大小写不敏感,均可以使用

登录:(我是通过命令行客户端的方式登录的,后续会讲到可视化工具)。

在这里插入图片描述
如果显示出这个页面说明登录成功。

查看当前数据库服务中存在的数据库:

执行的语句:

 show databases;

在这里插入图片描述
关于此图的讲解:
在这里插入图片描述

图片中显示的即是我的电脑上当前MYSQL服务器上的数据库,(这里有一个问题,我电脑上的数据使用的数据库与MYSQL服务器中的数据库有什么关联?)

新增:

创建数据库,创建表等

创建数据库:

最简单的创建数据库的方式

 create database 数据库名;

在这里插入图片描述
出现这条语句即说明语句执行成功。

对于要创建的数据库先检验它是否存在:

create database if not exist 数据库名;

在这里插入图片描述

指定使用字符集与排序规则的创建数据库的方式:

 create database  if not exists 数据库名 character set 字符集名 collate 排序规则

我们是用utf8mb4作为字符集名,utf8mb4_0900_ai_ci作为排序规则。
在这里插入图片描述
注:在这三种创建数据库的方式中,强烈建议大家使用第三种方式。

使用数据库

    use   数据库名 ;

在这里插入图片描述
查看当前数据库使用的默认编码集:
show variables like “%character%”;
在这里插入图片描述

删除数据库
: 对于删除的关键字用的是drop。

     drop  database 数据库名;

在这里插入图片描述
: 删除数据库是一项非常危险的操作,将来如果在工作中要涉及删除的数据库的操作,一定要慎之又慎。

显示指定数据库中现存的表:

   show tables;

在进入到指定的库中去后,执行此语句即可。
: 一般所有的查询显示操作一般均使用show这个关键字。
在这里插入图片描述
结果显示,java113库中并没有表。

创建表:
 表的格式:
 create table  if  not exists  表名(属性名    数据类型);
 其中表的属性部分的设定,至少需要设置一个属性名及其数据类型。

在这里插入图片描述
SQL语言也将数据划分成了各种数据类型,用于定义属性。
下面介绍一下常用的数据类型:
数值类型:

在这里插入图片描述
字符串类型:
在这里插入图片描述

日期类型
在这里插入图片描述
删除表
对于删除的关键字用的是drop。

      drop  table student;

在这里插入图片描述

向表中插入数据

1. 向表中插入一条数据:

语句:

             insert into 表名 (属性) values(与属性对应类型的值);

其中在此语句中属性可以是指定表的全部属性,也可以是部分属性。

全部属性
在这里插入图片描述
:当我们插入字符串属性数据时,可以用英文格式的单引号来引用,也可以用英文格式的双引号来引用。

部分属性:
在这里插入图片描述
: 当对部分属性插入数据时,要注意values中数据与前面属性的适配。

在这里插入图片描述

:当我们要插入全部属性时,可以省略属性列表部分,而直接从values()中放入数据。

      insert into 表名   values(全部属性值);

在这里插入图片描述
2. 向表中插入多条数据时:

 insert into students(属性表) values (属性对应的值),(属性对应的值)...........;

在这里插入图片描述
这说明成功插入了两条数据。

:要一次性插入多条数据时,如果要插入全部属性,也可以省略表名后面的属性列表。
在这里插入图片描述

查询:
获取表中的全部记录:
  select * from 表名;
  * 意为全部的意思。

在这里插入图片描述

:这条语句操作与删除数据操作一样的危险,因为在实际项目开发过程中,一个表中的记录可能极多,如果执行此语句,可能会将服务器直接挤爆,导致无法运行。

获取表中指定属性的记录:
        select 属性  from  表名;

在这里插入图片描述

查询的字段为表达式时:
    select  指定属性的表达式 from student;

在这里插入图片描述
:这个表在数据库中实际上是并不存在的,只是根据我们的操作,然后将从数据库中获取的信息进行处理,形成一个临时的表呈现在我们面前。

在这里插入图片描述

查询的字段为表达式且设置别名:
    select 属性表达式  as(可有可不有)  别名  from  表名

在这里插入图片描述

去重查询操作

获取表中去重操作后的结果:

      select  distinct  属性名 from  表名

在这里插入图片描述

排序查询操作:

按照某一属性进行排序:

 select *(属性名) from 表名  order by  属性名  [ASC|DESC] ;

其中ASC是按升序规则进行排序,DESC是按降序规则进行排序。也可以不填写此项,但是不能保证默认的排序规则是什么?不建议。
在这里插入图片描述

对NULL数值,系统将其看做是最小的数值,在升序时,放在首位,在降序时,放在末尾。

在这里插入图片描述

对表达式及其排名进行排序:

      select   属性(可有可无),表达式 (别名【可有可无】)  from 表名 order by 表达式(别名)arc/desc;

在这里插入图片描述
对每一个属性分别进行排序:
排序规则优先级是按照属性书写顺序优先级

在这里插入图片描述

条件查询WHERE:
比较运算符:

在这里插入图片描述
在这里插入图片描述

逻辑运算符
  1. 在使用逻辑运算符时,他们之间是有优先级的,不建议被优先级,使用括号即可。
    在这里插入图片描述
  2. WHERE条件可以使用表达式,但不能使用别名。

在这里插入图片描述
出现这种情况的原因是因为sql的一条语句中,这几个指令的执行是有先后顺序的。

所以,在执行where语句时,并没有num属性,所以报错。

分页查询LIMIT

在之前我们讲过通过select * from 表名获取表中全部数据是一项非常不安全的操作,因此我们可以通过分页查询来将获取的结果

分页查询的语句规则:

  1.  select  属性名  from 表名  [where]  [order by]  limit n ;
    

limit是记录限制的关键字,n是记录的条数

  1. select  属性名  from 表名  [where]  [order by]  limit  s, n;
    

s是偏移量,从第几条记录开始来往后获取n条记录。

  1. select 属性名 from 表名 [where] [order by] limit n offset s;
    这条语句比第二条语句更明确规则,offset表示偏移量。

在这里插入图片描述

修改
update  表名  set  column = 值 [column = 值.....] [where....] [order by......][limit ....];

在这里插入图片描述

在这里插入图片描述

删除:
 delete from 表名  [where...]  [order by]   [limit] ;

在这里插入图片描述
删除指定的几条记录:
在这里插入图片描述
删除整个表中全部记录:
我们可以通过delete来删除表中全部的记录,在不加任何限制条件的情况下,
在这里插入图片描述
我们只是会删除表中全部的记录,而不是会销毁表,销毁表需要drop关键字。

在这里插入图片描述
在这里插入图片描述

我们在工作中一般不会使用delete操作,而是设置一个deleteState字段,如果要表示删除这条记录,则通过update语句来将deleteState的值置为1(表示已删除),恢复的话则置为0(表示未删除).
即使在工作中真的不小心删除掉了一个表中全部的记录,我们也可以通过日志(全部sql语句的执行记录)再执行一遍来恢复。