0


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

本章目标

  • 学会MySQL表中的sql语句,能够在自己创建数据库表!
  • 实现mysql表的增删查改操作!

CRUD

我们对

CRUD

不陌生! 而

CRUD

究竟指的是什么呢?

crud

是指在做计算处理时的

增加(Create)

检索(Retrieve)

更新(Update)

删除(Delete)

几个单词的首字母简写。

crud

主要被用在描述软件系统中数据库或者持久层的基本操作功能。

可以看到,

CRUD

就是增加(

Create

),检索(

Retrieve

),更新(

Update

),删除(

Delete

)操作的简称!!!

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

CRUD

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

CRUD

!

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

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

show tables;

在这里插入图片描述
我们不能忘记当要对某个数据库中进行操作时,需要先使用该数据库(

use 数据库名;

)!
使用

show tables;

可以查看到

ebook

数据库下的所有表!!!
我们上章也学习了如何创建一张表!
我就不在一一演示啦!

新增(Create)

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

单行数据,全列插入

SQL语句
insert into 表名 values(数据...);

举例:
在这里插入图片描述

book

表中我们插入了一条数据!!!
我们查看一下:
在这里插入图片描述注意:

mysql

中我们如果要插入字符.我们需要用

' '/" "

引号就像

java

中的字符串一样! 但是这里也可以用

' '

单引号!!!

多行插入,指定列插入

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

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

这里的列名和每行数据之间需要用

,

逗号隔开!列名要写在

()

里,并且每条数据中的数据项要对应指定列!
举例:
在这里插入图片描述在这里插入图片描述
这里的

into

也可以省略!!! 在这里插入图片描述

查询(Retrieve)

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

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

在这里插入图片描述

*

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

  • 查看指定列SQL语句``````select 列名1,列名2... from 表名; 当我们只对该表中的某些列查询时!在这里插入图片描述
  • 查询字段为表达式 如果我们今天对书籍进行大促销,想对书籍进行一天的价格下调,我们如何查看表呢?SQL语句``````select 表达式 from 表名;

在这里插入图片描述
可以看到,我们通过表达式

price-60

就查看到降价60的数据了!
此操作并不会影响服务器中数据库中的内容!!数据并没有改变!!!

我们还可以有多个表达式!!!
在这里插入图片描述

  • 别名 我们可以看到当我们使用表达式时,该列的列名也就是该表达式,如果我们想起一个别名呢?又该如何操作呢?SQL语句``````select (表达式/列名) as 别名 from 表名;在这里插入图片描述as也可以省略!!!在这里插入图片描述
  • 去重distinct 当我们一个表中含有重复的数据时,但我们只想查看一个,如何去重呢? 使用distinct关键字对某列数据进行去重:SQL语句``````select distinct 列名 from 表名;在这里插入图片描述 注意:这里的distinct在查询列的列名前!!!
  • 排序 order by``````SQL语句``````select 列1,列2....from 表名 order by 列名 排序方方式(asc/desc);
-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC (没有说明,默认升序!)
  1. 没有 order by 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
  2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面

使用表达式排序!!!
在这里插入图片描述
使用别名排序!
在这里插入图片描述
可以对多个字段排序,排序优先级随书写顺序!

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

在这里插入图片描述

  • 条件查询 where比较运算符
    运算符说明> ,>=,<,<=大于,大于等于,小于,小于等于=等于,判断NULL不安全,列如:NULL=NULL结果是NULL<=>等于,NULL安全,例如:NULL<=>NULL的结果是true(1)!=,<>不等于between a0 and a1范围匹配,[a0,a1],如果a0<=value <= a1,返回true(1)in(option,…)如果是option其中的任何一个返回true(1)is NULL是NULLis not NULL不是NULLlike模糊匹配,
    % 
    
    表示任意多个(包括0)任意字符;
    _
    
    表示任何一个字符**逻辑运算符:**运算符说明:--------:-------------and多个条件为true,结果才为trueor任意一个条件为true,结果就为truenot条件为true ,结果为false
SQL语句
select * from 表名 where 条件;
  1. where条件可以使用表达式,但不能使用别名。
  2. 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;

英语高于60分
在这里插入图片描述语文成绩高于数学成绩
在这里插入图片描述总分低于200分!!
在这里插入图片描述
注意:
在条件查询中,条件不能为别名,否者查询错误!!!

  • 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 english >70;

语文成绩大于80且数学成绩大于80
在这里插入图片描述语文成绩大于80或英语成绩大于80
在这里插入图片描述and和or的优先级!
在这里插入图片描述

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

查询语文成绩在 [80, 90] 分的同学及语文成绩
在这里插入图片描述
在这里插入图片描述

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 =58OR math =59OR math
=98OR math =99;

查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
在这里插入图片描述
在这里插入图片描述

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

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

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

在这里插入图片描述

  • 分页查询 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条:
在这里插入图片描述
从第3条开始查询4条结果!
在这里插入图片描述

offset

偏移量为3的位置,查询4条结果!
在这里插入图片描述

修改(Update)

语法:

UPDATE table_name SET column = expr [, column = expr ...][WHERE ...][ORDER BY ...][LIMIT ...]
SQL语句
update 表名 set 列名= 修改后的值 where 条件;

案例:

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

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

删除(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;

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

标签: 数据库 mysql

本文转载自: https://blog.csdn.net/weixin_52345071/article/details/123739033
版权归原作者 bug 郭 所有, 如有侵权,请联系我们删除。

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

还没有评论