本文介绍: 一、CRUD二、新增三、查询四、修改五、删除注释:在SQL中可以使用“–空格+描述”来表示注释说明CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词首字母缩写 注意:select查询操作的全都是临时表,不会改变原本的数据查询英语成绩大于70分的同学:查询英语成绩大于语文成绩同学:查询总成绩小于200的同学:查询语文成绩大于80分,且英语成绩大于80分的同学查询语文成绩大于80分,或英语成绩大于80分的同学 % 匹配任意多个(包

目录

一、CRUD

二、新增(Create)        

(1)语法

(2)单行数据+全列插入

(3)多行数据+指定列插入

三、查询(Retrieve)

(1)语法

(2)全列查询

(3)指定列查询

(4)查询字段为表达式

        1、表达式不包含字段:

        2、表达式包含一个字段

       表结构如下:

        3、表达式包含多个字段

(5)别名

(6)去重:DISTINCT        

(7)排序:ORDER BY

1、语法:

2、升序

3、降序

4、使用表达式及别名排序

5、可以对多个优先级进行排序,排序优先级随书写顺序

(8)条件查询:WHERE

 1、比较运算符

2、逻辑运算符

3、基本查询:

4、AND和OR:

5、范围查询

        (1) BETWEEN … AND

        (2)IN

6、模糊查询:LIKE

7、NULL的查询:IS [NOT] NULL        

8、分页查询:LIMIT

四、修改(Update)

案例:

— 将孙悟空同学的数学成绩变更为 80 分

— 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分

— 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

— 将所有同学的语文成绩更新为原来的 2 倍

五、删除(Delete)

案例:

— 删除孙悟空同学的考试成绩

— 删除整张表数据

六、内容重点总结

新增​编辑

查询​编辑

修改​编辑

删除​编辑

都看到这了,点个赞再走吧,谢谢谢谢谢!!!


一、CRUD

注释:在SQL中可以使用“–空格+描述”来表示注释说明
CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词首字母缩写
 


二、新增(Create)        

已有的表结构和表数据

(1)语法

INSERT [INTO] table_name
[(column [, column] …)]
VALUES (value_list) [, (value_list)] …
value_list: value, [, value] …

 

(2)单行数据+全列插入

语法insert into 表名 values(要插入数据, …)

注意:插入的数据顺序要和表结构相同,不然插入会失败

代码展示

insert into books values('数学', '张三', 6.66, '数学类');
insert into books values('英语', '李四', 8.88, NULL);

结果如下

(3)多行数据+指定列插入

语法insert into 表名 (指定列名, …) values(指定列名数据)

代码展示

insert into books (name, price, sort) values('语文', 5.55, '语文类'), ('物理', 7.77, '物理类');

结果如下


三、查询(Retrieve)

(1)语法

SELECT
[DISTINCT] {* | {column [, column] …}
[FROM table_name]
[WHERE …]
[ORDER BY column [ASC | DESC], …]
LIMIT …

 

(2)全列查询

注意:select查询操作的全都是临时表,不会改变原本的数据

语法select * from 表名

代码展示

select * from books;

结果如下

注意:通常情况下建议使用 * 进行全列查询
— 1. 查询的列越多,意味着需要传输数据量越大;(要处理信息太多,服务器可能会堵塞,大量的硬盘IO和网络IO就可能把硬盘或者网卡的宽带给吃满,一旦宽带吃满了,此时服务器就无法正常响应其他的客户端请求了,在其他的客户端视野中,就会认为服务器挂了)
— 2. 可能会影响索引使用

(3)指定列查询

语法select 指定列名,… from 表名

代码展示

select name, author, price from books;

结果如下

注意:指定列查询可以不按这个表的列顺序查询,如图

(4)查询字段表达式

        1、表达式包含字段

语法select 表达式, … from books

代码演示:

 select name, price, 10 from books;

结果如下

因为没有10,所以会创建一个字段10,下面都放10

        2、表达式包含一个字段

语法select 含有一个字段的表达式, … froms 表名

代码演示:

select name, author, price + 10 from books;

结果如下

       表结构如下

        3、表达式包含多个字段

语法select 含有多个字段的表达式,… from 表名

整型数据代码演示:

 select name, chinese + math + english from report;

结果如下:

不是整型数据代码演示:

select price, name + author + sort from books;

结果如下:

可以看到,表达式包含多行字段,有只要有NULL都为NULL,字符串相加等于0的现象

(5)别名

语法select 列名,… as 别名 from report

注意(as可以不加,但是加上更好,容易区分)

代码演示:

 select id, chinese + math + english as 总分 from report;

结果如下:

(6)去重:DISTINCT        

现有的表:

语法:select distinct 列名,… from 表名

代码展示

 select distinct math from exam_result;

结果如下:

(7)排序:ORDER BY

1、语法:

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

 

2、升序

语法:select * (或者其他列名可以) from 表名 order by 列名

代码展示

 select * from exam_result order by math;

结果如下:

3、降序

语法:select * (或者其他列名可以) from 表名 order by 列名 desc

代码展示

select * from exam_result order by math desc;

结果如下:

4、使用表达式及别名排序

语法:select 列名, 表达式 from 表名 order by 表达式;

代码展示

 select name, math + chinese + english as total from exam_result order by math + chinese + english;

结果如下:

注意:

这里order by后面可以使用别名

5、可以对多个优先级进行排序排序优先级书写顺序

语法:select 要查询的列 exam_result order by 列名,列名…;

代码演示:

 select * from exam_result order by math, english;

结果如下:

(8)条件查询:WHERE

注意:where条件可以用表达式,但不可以用别名

 1、比较运算符

2、逻辑运算

注意:1. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

           2. WHERE条件可以使用表达式,但不能使用别名

如图示例

                sql语句执行顺序

                一步取出一条记录遍历表)

                第二步:把记录带入条件带入条件,判断是否满足

                第三步:如果条件满足,再把select指定的列取出来,并进行一些表达式运算

所以条件查询的where后面不能用别名

3、基本查询:

查询英语成绩大于70分的同学

代码如下:

 select name, english from exam_result where english > 70;

结果如下:

查询英语成绩大于语文成绩的同学

代码如下:

 select name, english, chinese from exam_result where english > chinese;

结果如下:

查询总成绩小于200的同学

代码如下:

 select name, chinese + math + english from exam_result where (chinese + math + english) < 200;

结果如下:

4、AND和OR:

查询语文成绩大于80分,且英语成绩大于80分的同学

代码如下:

select name, chinese, english from exam_result where (chinese > 80) and (english > 80);

结果如下:

查询语文成绩大于80分,或英语成绩大于80分的同学

代码如下:

 select name, chinese, english from exam_result where (chinese > 80) or (english > 80);

结果如下:

注意:and优先级高于or,在使用的时候,有需要可以用括号括起来

5、范围查询

        (1) BETWEEN … AND

        代码展示

select * from exam_result where chinese between 80 and 90;

        结果展示


     这里用and也可以实现

代码:

 select * from exam_result where chinese >= 80 and chinese <= 90;

        (2)IN

代码如下:

 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;

6、模糊查询:LIKE

        % 匹配任意多个(包括 0 个)字符
        _ 匹配严格一个任意字符

代码展示:

 select name from exam_result where name like '孙%';

结果如下:

代码展示:

 select name from exam_result where name like '孙_';

结果如下:

注意:%也可以这样使用:%孙,就是以“孙”结尾的字段;%孙%,只要包含“孙”的字段

        _也可以这样使用:_孙,就是前面只有一个字符,结尾带“孙”的字段,下划线_也可以使用多个。

7、NULL的查询:IS [NOT] NULL        

判断里面某个列是否为NULL,或者不是NULL

代码如下:

select name from exam_result where name is not null;

结果如下:

代码如下:

select name from exam_result where name is NULL;

结果如下:

8、分页查询: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;
 

从 0 开始,筛选 3 条结果

代码展示:

select * from exam_result limit 3;

结果如下:

从0开始,筛选3条记录,按 id 进行分页顺序

代码展示:

select * from exam_result limit 3;

结果如下:

从3开始,筛选3条记录,按id进行分页顺序

代码展示:

 select * from exam_result order by id limit 3 offset 3;

结果如下:


四、修改(Update
 

语法:

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

 

案例
 

— 将孙悟空同学的数学成绩变更为 80 分

语法:

update 表名 set修改的列名 = 要修改的值 where 列名 = 要指定修改的列里的值

代码如下:

mysql> update exam_result set math = 80 where name = '孙悟空';

结果如下:

— 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分

代码如下:

 update exam_result set math = 60, chinese = 70 where name = '曹孟德';

结果如下:

— 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

代码如下:

结果如下:

— 将所有同学的语文成绩更新为原来的 2 倍

代码如下:

 update exam_result set chinese = chinese * 2;

结果如下:


五、删除(Delete)

语法:

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

案例
 

— 删除孙悟空同学的考试成绩

代码如下:

delete from exam_result where name = '孙悟空';

结果如下:

— 删除整张表数据

准备一张表,如下:

代码如下:

 delete from for_delete;

结果如下:


六、内容重点总结

新增

查询

修改

删除


看到这了,点个赞再走吧,谢谢谢谢谢!!!

原文地址:https://blog.csdn.net/cool_tao6/article/details/134148942

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_18527.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注