MySQL表sql语句增删查改_学会这些操作你就不会栓Q(狗头)

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL表sql语句增删查改_学会这些操作你就不会栓Q(狗头)

CRUD

我们对CRUD不陌生! 而CRUD究竟指的是什么呢?


crud是指在做计算处理时的增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。


可以看到,CRUD就是增加(Create),检索(Retrieve),更新(Update),删除(Delete)操作的简称!!!


而我们上节,数据库基础中介绍了数据库的CRUD

而一个个数据库中是由一张张表结构保存了数据在数据库中! 所以我们来学习表的CRUD!


我们来回顾一下上节针对表的一些sql语句!

1.查看该数据库下的所有表!

show tables;

image.png

我们不能忘记当要对某个数据库中进行操作时,需要先使用该数据库(use 数据库名;)!

使用show tables; 可以查看到ebook数据库下的所有表!!!

我们上章也学习了如何创建一张表!

我就不在一一演示啦!


新增(Create)

我们知道了如何创建表,那如何给表新增内容呢?


单行数据,全列插入

SQL语句

insert into 表名 values(数据...);

举例:

image.png

在book表中我们插入了一条数据!!!

我们查看一下:

image.png

注意:

在mysql中我们如果要插入字符.我们需要用' '/" "引号就像java中的字符串一样! 但是这里也可以用' '单引号!!!


多行插入,指定列插入

当我们需要新增的数据较多时,如果我们再采用单行插入的方式,显然不科学! 而且有时候,并不是我们全部的列都要插入数据!!!如果我们要插入多行指定列呢?

SQL语句

insert into 表名(列名1,2,...) values(数据1),(数据2),...;

这里的列名和每行数据之间需要用,逗号隔开!列名要写在()里,并且每条数据中的数据项要对应指定列!

举例:

image.png

查询(Retrieve)

我们插入表中的数据如何查看呢?


查看表中全部数据

SQL语句

select * from 表名;

-- 通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大;
-- 2. 可能会影响到索引的使用。(索引待后面的博客讲解)

image.png

用*通配符,代表全部列!!!


查看指定列

SQL语句

select 列名1,列名2... from 表名;

当我们只对该表中的某些列查询时!

image.png

查询字段为表达式

如果我们今天对书籍进行大促销,想对书籍进行一天的价格下调,我们如何查看表呢?

SQL语句

select 表达式 from 表名;

image.png

可以看到,我们通过表达式 price-60就查看到降价60的数据了!

此操作并不会影响服务器中数据库中的内容!!数据并没有改变!!!


我们还可以有多个表达式!!!

image.png


别名

我们可以看到当我们使用表达式时,该列的列名也就是该表达式,如果我们想起一个别名呢?又该如何操作呢?

SQL语句

select (表达式/列名) as 别名 from 表名;

image.png


去重distinct

当我们一个表中含有重复的数据时,但我们只想查看一个,如何去重呢?

使用distinct关键字对某列数据进行去重:

SQL语句

select distinct 列名 from 表名;

image.png

注意:这里的distinct在查询列的列名前!!!


排序 order by

SQL语句

select 列1,列2....from 表名 order by 列名 排序方方式(asc/desc);

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC (没有说明,默认升序!)

没有 order by 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面

image.png

可以对多个字段排序,排序优先级随书写顺序!

-- 查询同学各门成绩,依次按数学降序,英语升序,语文升序的方式显示
SELECT name, math, english, chinese FROM exam_result
ORDER BY math DESC, english, chinese;

image.png


条件查询 where

比较运算符

image.png

SQL语句

select * from 表名 where 条件;


where条件可以使用表达式,但不能使用别名。

and的优先级高于or,在同时使用时,需要使用小括号( )包裹优先执行

举例:

当我们要根据某些特殊的条件进行查询时!!!

比如我们要查询数学优秀的人数!!!

基本查询:

-- 查询英语不及格的同学及英语成绩 ( < 60 )
SELECT name, english FROM exam_result WHERE english < 60;
-- 查询语文成绩好于英语成绩的同学
SELECT name, chinese, english FROM exam_result WHERE chinese > english;
-- 查询总分在 200 分以下的同学
SELECT name, chinese + math + english 总分 FROM exam_result
WHERE 总分<200;

image.png

注意:

在条件查询中,条件不能为别名,否者查询错误!!!


and 与 or:

- 查询语文成绩大于80分,且英语成绩大于80分的同学
SELECT * FROM exam_result WHERE chinese > 80 and english > 80;
-- 查询语文成绩大于80分,或英语成绩大于80分的同学
SELECT * FROM exam_result WHERE chinese > 80 or english > 80;
-- 观察AND 和 OR 的优先级:
SELECT * FROM exam_result WHERE chinese > 80 or math>70 and english > 70;
SELECT * FROM exam_result WHERE (chinese > 80 or math>70) and eng

语文成绩大于80且数学成绩大于80

image.png

语文成绩大于80或英语成绩大于80

image.png

and和or的优先级!

image.png


范围查询:

between and

-- 查询语文成绩在 [80, 90] 分的同学及语文成绩
SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;
-- 使用 AND 也可以实现
SELECT name, chinese FROM exam_result WHERE chinese >= 80 AND chinese
<= 90;

查询语文成绩在 [80, 90] 分的同学及语文成绩

image.png


in(option)

-- 查询数学成绩是 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;

查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

image.png

模糊查询 like

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

image.png

NULL的查询 is (not) NULL

--查询书籍分类为空的书籍
select * from book where class is NULL;
--插叙书籍分类不为空的书籍
select * from book where class is not NULL;

image.png


分页查询 limit

语法:

-- 起始下标为 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;

查询前3条:

image.png

从第3条开始查询4条结果!

image.png

从offset偏移量为3的位置,查询4条结果!

image.png


修改(Update)

语法:


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

SQL语句

update 表名 set 列名= 修改后的值 where 条件;


案例:

-- 将孙悟空同学的数学成绩变更为 80 分
UPDATE exam_result SET math = 80 WHERE name = '孙悟空';
-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
UPDATE exam_result SET math = 60, chinese = 70 WHERE name = '曹孟德';
-- 将总成绩倒数前三的 3 位同学的英语成绩加上 30 分
UPDATE exam_result SET math = math + 30 ORDER BY chinese + math + english LIMIT
3;
-- 将所有同学的语文成绩更新为原来的 2分之一
UPDATE exam_result SET chinese = chinese /2;

image.pngimage.png



删除(Delete)

SQL语句

delete from 表名 where 条件;


-- 删除孙悟空同学的考试成绩
DELETE FROM exam_result WHERE name = '孙悟空';
-- 删除整张表数据
-- 准备测试表
DROP TABLE IF EXISTS for_delete;
CREATE TABLE for_delete (
id INT,
name VARCHAR(20)
);
-- 插入测试数据
INSERT INTO for_delete (name) VALUES ('A'), ('B'), ('C');
-- 删除整表数据
DELETE FROM for_delete;

image.png


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
18天前
|
存储 关系型数据库 MySQL
(十五)MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~
相信大家在编写SQL时一定有一个困扰,就是明明记得数据库中有个命令/函数,可以实现自己需要的功能,但偏偏不记得哪个命令该怎么写了,这时只能靠盲目的去百度,以此来寻找自己需要的命令。
93 28
|
5天前
|
SQL 关系型数据库 MySQL
SQL语句编写的练习(MySQL)
这篇文章提供了MySQL数据库中关于学生表、课程表、成绩表和教师表的建表语句、数据插入示例以及一系列SQL查询练习,包括查询、排序、聚合和连接查询等操作。
|
11天前
|
SQL 关系型数据库 MySQL
INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
【8月更文挑战第7天】INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
16 5
|
10天前
|
SQL 关系型数据库 MySQL
MySQL中一定要遵守的12个SQL规范
本文档提供了12条SQL编写和数据库管理的最佳实践建议,旨在帮助开发者提高SQL查询效率、增强数据库安全性及可维护性。
|
12天前
|
SQL 关系型数据库 MySQL
“震撼揭秘!Flink CDC如何轻松实现SQL Server到MySQL的实时数据同步?一招在手,数据无忧!”
【8月更文挑战第7天】随着大数据技术的发展,实时数据同步变得至关重要。Apache Flink作为高性能流处理框架,在实时数据处理领域扮演着核心角色。Flink CDC(Change Data Capture)组件的加入,使得数据同步更为高效。本文介绍如何使用Flink CDC实现从SQL Server到MySQL的实时数据同步,并提供示例代码。首先确保SQL Server启用了CDC功能,接着在Flink环境中引入相关连接器。通过定义源表与目标表,并执行简单的`INSERT INTO SELECT`语句,即可完成数据同步。
34 1
|
19天前
|
SQL 缓存 关系型数据库
(二)全解MySQL:一条SQL语句从诞生至结束的多姿多彩历程!
在上篇文章中,我们以《MySQL架构篇》拉开了MySQL数据库的的序幕,上篇文章中将MySQL分层架构中的每一层都进行了详细阐述。而在本篇中,则会进一步站在一条SQL的角度,从SQL的诞生开始,到SQL执行、数据返回等全链路进行分析。
|
6天前
|
SQL 关系型数据库 MySQL
Go语言中进行MySQL预处理和SQL注入防护
在现代Web应用开发中,安全性至关重要。SQL注入是一种常见的攻击方式,攻击者可通过构造特殊SQL查询来非法访问或修改数据库数据。本文介绍如何利用Go语言中的预处理SQL语句来防范此类攻击。预处理不仅能提升安全性,还能提高性能并简化代码。通过使用`?`作为占位符,Go自动处理参数转义,有效避免SQL注入。此外,文章还提供了连接MySQL数据库、执行预处理查询以及最佳实践的示例代码。务必遵循这些指导原则,确保应用程序的安全性。
16 0
|
7天前
|
SQL 存储 Oracle
MySQL 项目中 SQL 脚本更新、升级方式,防止多次重复执行
MySQL 项目中 SQL 脚本更新、升级方式,防止多次重复执行
16 0
|
11天前
|
SQL 缓存 关系型数据库
[mysql]状态检查常用SQL
[mysql]状态检查常用SQL
|
20天前
|
SQL 关系型数据库 MySQL
MySQL获取分组里的最新数据如何写sql
MySQL获取分组里的最新数据如何写sql
21 0