MySQL--增删改查(基础)

本文详细介绍了数据库的基础知识,包括关系型数据库和非关系型数据库的定义,以及MySQL数据库的增删改查操作。重点讲解了如何创建数据库、表,设置数据类型,以及进行数据的插入、查询、更新和删除。还涉及了条件查询、排序、分页查询等高级操作,是学习数据库操作的入门教程。
摘要由CSDN通过智能技术生成

这一部分主要是针对于基础的操作,也是对学习知识的一个熟练应用。

一丶数据库的概念

首先,什么是一个数据库呢?数据库有什么作用呢?如果单单就是为了存储数据,那么我们用文件存储就可以了。为什么还要弄一个数据库出来呢?为了回答这个问题,首先我们要知道用文件存储数据的不安全性。

1.文件的不安全性
2.文件不利于数据存储和管理
3.文件不太能存储海量数据。
4.文件才程序控制中不方便。

所以为了解决以上问题,我们开发了数据库并引出了相关概念。那么数据库存储文件在哪里存储的呢?数据库存储介质有两种:
1. 磁 盘 2. 内 存 \color{red}{1.磁盘 2.内存} 1.2.

数据库大致可以分为两种,关系型数据库和非关系型数据库。

关系型数据库

所谓关系型数据库,指的是:

是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。基于标准的SQL,只是内部一些实现有区别。常用的关系型数据库如:

  1. Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系统收费。
  2. MySQL:属于甲骨文,不适合做复杂的业务。开源免费。
  3. SQL Server:微软的产品,安装部署在windows server上,适用于中大型项目。收费。

非关系型数据库

所谓非关系型数据库指的是:

不规定基于SQL实现。现在更多是指NoSQL数据库,如:

  1. 基于键值对(Key-Value):如 memcached、redis
  2. 基于文档型:如 mongodb
  3. 基于列族:如 hbase
  4. 基于图型:如 neo4j

二丶数据库相关操作

进入数据库

首先我们进入数据库的方式有两种,第一种就是直接通过开始菜单栏进入:
在这里插入图片描述
但是如果你配置了相关路径,你就可以直接通过DOS窗口来打开。输入命令:mysql -u root -p,输入完成后再输入密码也可以进入你的数据库

在这里插入图片描述

新增数据库

这里的增不仅仅是增加数据库,还有增加对应的表等等,一步步来。

首先进入数据库之后输入命令:show databases;

在这里插入图片描述
然后我们通过命令create database test; ,新建一个名为test的数据库。
这里注意了,我们尽量给后面加一个character set utf8mb4,这样的话数据库里面就可以接收中文了。完整命令:

create database test character set utf8mb4;

建立完成之后我们再次输入命令show databases来查看数据库

在这里插入图片描述
可以发现,已经建好了。

新增表

然后我们输入命令use test,进入当前数据库。
然后我们就要准备创建一个表了,但是我们在创建表之前,我们要想一想表当中有那些属性是我们需要的。
比如这里:

我们创建一个学生表,首先学生需要一个id,来对学生进行排序,再接着学生有姓名,有学号,还有自己的qq邮箱

关于数据类型

java当中有着数据类型,mysql当中肯定也有,毕竟保存的数据类型多种多样。其中,大致类型有:
数 值 类 型 \color{red}{数值类型}
在这里插入图片描述

日 期 和 时 间 类 型 \color{red}{日期和时间类型}

在这里插入图片描述
字 符 串 类 型 \color{red}{字符串类型}

在这里插入图片描述

增加新表

了解了大致的数据类型之后,我们就可以开始创建一张表了,创建表的大致格式如下:

CREATE TABLE table_name (
 field1 datatype,
 field2 datatype,
 field3 datatype
);

但是在这之前我们可以新增加一条语句,就是防止以后我们在真正使用数据库的时候没有更新对应的数据。

drop table if exists student

具体实践如下:

在这里插入图片描述

加入数据

那么在这里我们可以使用指令:

insert into student(id,sn,name,qq_mail) values(插入数据);

这里的id,sn,name,qq_mail指的是当前表中的成员属性,然后通过上述语句我们可以直接插入数据,展示如下:
在这里插入图片描述

也可以使用简略版本,因为这个是指定属性进行插入,我们也可以不指定属性,然后默认属性插入,也就是:
在这里插入图片描述

插入之后是这个样子:
在这里插入图片描述

对于查询,我们还是一个一个操作来往下走。

在这里,我们为了方便接下来内容的讲解,新建一张表。
在这里插入图片描述

全列查询

全列查询就是查询整个表:

SELECT * FROM exam_result;

表现如下:
在这里插入图片描述

指定列查询

指定列查询就是把上面的查询语句稍微改一下:

select id,name from exam_result;

数据库里表现如下:
在这里插入图片描述

查询字段为关键字

具体可以分为以下几种:

表 达 式 不 包 含 字 段 \color{red}{表达式不包含字段}

SELECT id, name, 10 FROM exam_result;

在这里插入图片描述

表 达 式 包 含 一 个 字 段 \color{red}{表达式包含一个字段}

SELECT id, name, english + 10 FROM exam_result;

表现在数据库如下:
在这里插入图片描述

表 达 式 包 含 多 个 字 段 \color{red}{表达式包含多个字段}

SELECT id, name, chinese + math + english FROM exam_result;

表现在数据库如下:
在这里插入图片描述

取别名

这一操作是为查询当中的列指定别名,表示返回的结果集中,以别名作为改列的名称,语法:

SELECT column [AS] alias_name [...] FROM table_name;

具体表现在数据库当中如下:
在这里插入图片描述
当熟练以后,这个as是可以去掉的,但是目前笔者新手上路,还是稳一点。

去重:DISTINCT

这里使用distinct关键字对某列数据进行去重。

SELECT DISTINCT math FROM exam_result;

排序

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...] 
 ORDER BY column [ASC|DESC], [...];

使用要点如下:

1.首先 order by是一定要写的
2.记住Null数据比如任何数据都要小。
3.可以使用表达式和别名排序
4.可以对多个字段进行排序,具体排序顺序由关键字顺序决定

那么我们在数据库当中演示一下:

首先是升序排序
在这里插入图片描述
再来个降序排序:
在这里插入图片描述

条件查询:Where

关于条件查询,主要是运算符的作用:

首 先 是 比 较 运 算 符 \color{red}{首先是比较运算符}
在这里插入图片描述

接 着 是 逻 辑 运 算 符 \color{red}{接着是逻辑运算符}
在这里插入图片描述

那么接下里通过这些运算符来对我们的表来进行查询操作。

首 先 是 关 于 基 本 查 询 \color{red}{首先是关于基本查询}

基本查询就按照最基本的大于小于来进行查询。

select id,name,math from exam_result where math > 90;

在这里插入图片描述

a n d 与 o r \color{red}{and 与 or} andor

其实也就是对where语句进行一些修改

select id,name,math,english from exam_result where math > 90 and english >= 90;

具体如下:
在这里插入图片描述

范围查询

范围查询其实就是上面条件查询的拓展,具体使用如下语句。

b e t w e e n . . . a n d . . . . \color{red}{between...and....} between...and....

SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;

在这里插入图片描述
记住这里的范围是:

[80,90],80和90都是可以取到的

但是上面的语句我们用and也是可以实现的。

SELECT name, chinese FROM exam_result WHERE chinese >= 80 AND chinese 
<= 90;

在这里插入图片描述

i n \color{red}{in} in
关于in查询就是指定了一个集合,然后查询在这个集合里面的元素。比如:

-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);

实现如下:
在这里插入图片描述
这个语句我们可以用or来实现:

SELECT name, math FROM exam_result WHERE math = 58 OR math = 59 OR math 
= 98 OR math = 99;

模糊查询:LIKE

模糊查询主要就是关于两个字符 % 和 _ 的使用。

1.%表示可以是0 ~ 任意个字符
2._只能是一个字符

它的具体含义是这个样子的:

-- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE '孙%';-- 匹配到孙悟空、孙权

在这里插入图片描述
但是如果说你用_的话,那就只有一个结果:

-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE '孙_';-- 匹配到孙权

在这里插入图片描述

null查询

这里的话没有什么特别需要说的,就是看数据为不为Null。

-- 查询 qq_mail 已知的同学姓名
SELECT name, qq_mail FROM student WHERE qq_mail IS NOT NULL;
-- 查询 qq_mail 未知的同学姓名
SELECT name, qq_mail FROM student WHERE qq_mail IS NULL;

分页查询

-- 起始下标为 0
--0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

这里的话,我们用一个例子来演示,比如说,我们要取英语第二到第三名。
那么是不是要先降序排序?降序排序之后用limit来进行数据的取值。

在这里插入图片描述
降序完成之后,接着取2~3名数据,以下是两种写法,都尝试一下:

在这里插入图片描述

在这里插入图片描述

对于改变的话,一般我们都是更改表中的数值。这里使用update关键字进行修改。
语法如下:

UPDATE table_name SET column = expr [, column = expr ...]
 [WHERE ...] [ORDER BY ...] [LIMIT ...]

比如说,我们把孙权同学的英语成绩改为90,在改之前:

在这里插入图片描述
使用修改语句进行修改:

 update exam_result set english = 90 where name = '孙权';

在这里插入图片描述

删除

删除操作整体语句如下:

DELETE FROM  table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

删除单行数据

然后根据上面的语句,我们删除一行数据,比如:我们删除孙权同学的成绩。

delete from exam_result where name = '孙权';

在这里插入图片描述
可以看到,孙权同学的成绩已经消失了。

清空整个表

如果说我们不加where,那么就是清空表的数据。

delete from exam_result;

在这里插入图片描述

删除表 + 删除数据库

这里的删除操作我们统一用drop关键字。

drop table exam_result;

删除之后可以看到,当前表已经消失。

在这里插入图片描述
然后继续删除数据库:

drop datebase test;

在这里插入图片描述

最后也可以看到,test这个数据库也消失了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值