文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【数据库】MySQL表的增删改查(基础命令详解)

2023-09-29 15:00

关注

目录

1.CRUD

2.新增(CREATE) 

2.1 单行数据 + 全列插入

2.2 多行数据 + 指定列插入 

3.查询(SELECT)

3.1全列查询

3.2指定列查询

3.3 查询字段为表达式

3.4别名

3.5去重

3.6 排序:ORDER BY

3.7条件查询

3.7.1基本查询

3.7.2 AND和OR

3.7.3范围查询 

3.8分页查询 

4.修改(UPDATAE)

5.删除(DELETE)


写在前面 :

  1. 语法中大写字母是关键字,用[]括这的是可以省略的内容。
  2. 文中截图是相对应命令执行完得到的结果截图。

1.CRUD

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

2.新增(CREATE) 

语法格式:

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

 使用这个这个命令之前,我们需要先创建好一个数据库,选中数据库后再在这个数据库中创建一个表,之后我们才可以用上述命令将数据填入到表中了。

--创建的的表结构+---------+-------------+------+-----+---------+-------+| Field   | Type        | Null | Key | Default | Extra |+---------+-------------+------+-----+---------+-------+| id      | int(11)     | YES  |     | NULL    |       || name    | varchar(20) | YES  |     | NULL    |       || math    | int(11)     | YES  |     | NULL    |       || english | int(11)     | YES  |     | NULL    |       |+---------+-------------+------+-----+---------+-------+

2.1 单行数据 + 全列插入

insert into student values(1,'张三',90,87);insert into student values(1,'李四',89,87);

单行输入时,关键字values可以不加s,这里大家应该都可以理解。在实际应用中,很少使用到添加单行数据,就像我们网购,在一家网店买的东西,都是通过一个快递邮递到站,不然太费资源,单行输入也是如此。因此下方开始展示多行输入。

2.2 多行数据 + 指定列插入 

-- 插入两条记录,value_list 数量必须和指定列数量及顺序一致insert into student (id,name,math,english) values     (3,'钟馗',12,45),     (4,'卢布',null,null);

通过上方代码我们可以看出在数据中,我们可以将数据赋值为空,什么时候置为空能,就拿现在这个例子,卢布同学因为出去约会了,没参加考试,那么我们就把他所有的成绩全都置为null,相当于卢布同学缺考了。

3.查询(SELECT)

语法格式:

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

 查询语法才是有趣中的有趣,因为他可以套用很多不同的查询方式,让我给你一一道来。

3.1全列查询

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

3.2指定列查询

-- 指定列的顺序不需要按定义表的顺序来SELECT id, name, english FROM exam_result;

3.3 查询字段为表达式

-- 表达式不包含字段SELECT id, name, 10 FROM exam_result;-- 表达式包含一个字段SELECT id, name, english + 10 FROM exam_result;-- 表达式包含多个字段SELECT id, name, math + english FROM exam_result;

注:在我们执行english+10,english+math 这些语句时,对于我们的存入数据是不会有影响的,我们在客户端看到的所有表都是一个“临时表”

3.4别名

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称

语法格式:

-- 结果集中,表头的列名=别名SELECT column [AS] alias_name [...] FROM table_name;

3.5去重

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

去重前: 

 去重后:

 通过上方对比可以看出,去重是将出现大于等于两次的数据仅仅保留一项的操作。

3.6 排序:ORDER BY

语法格式:

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

示例:

--查询姓名和数学成绩,根据数学成绩降序排序select name,math from student order by math desc;

我们还可以将两行相加再进行排序:

 select name,math+english  from student order by math+english  desc;

上方有刚学完as用于改别名,我们还可以将math+english改一个别名,这时上方的截图标题math+english就会被改为score中代码如下:

 select name,math+english as score from student order by math+english  desc;

除了上述的方式,我们还可以进行更复杂的排序方式,例如可以对多个字段进行排序,排序优先级随书写顺序。

-- 查询同学各门成绩,依次按 数学降序,英语升序方式显示select name,math,english from student order by math desc, english ;

 注意:

  1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序。
  2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面。

3.7条件查询

比较运算符: 

运算符说明
>, >=, <, <=大于,大于等于,小于,小于等于
=等于,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是 NULL
IS NOT NULL不是 NULL
LIKE模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字

逻辑运算符:

运算符说明
AND多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT条件为 TRUE(1),结果为 FALSE(0)

注意:

  1. WHERE条件可以使用表达式,但不能使用别名。
  2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

3.7.1基本查询

--查找姓名和英语成绩,查询出英语成绩不足60的同学select name,english from student where english<60;

--查找姓名、英语和数学成绩成绩,查询出数学成绩高于英语成绩的同学select name,english,math from student where english

3.7.2 AND和OR

--英语、数学成绩都在60分以上的学生select name,english,math from student where english>60 and math>60;

--英语或者数学大于60分的同学select name,english,math from student where english>60 or math>60;

3.7.3范围查询 

  •  BETWEEN ... AND ...
--查询英语成绩在60-100分的同学 select name,english,math from student where english between 60 and 100;

  •  IN
--查询英语等于87、45分的同学select name,english,math from student where english in (87,45);

  •  模糊查询
-- % 匹配任意多个(包括 0 个)字符SELECT name FROM student WHERE name LIKE '张%';-- _ 匹配严格的一个任意字符SELECT name FROM student WHERE name LIKE '张_';

  •  NULL查询:IS [NOT] NULL
-- 查询 id 已知的同学姓名SELECT name, id FROM student WHERE id IS NOT NULL;-- 查询 id 未知的同学姓名SELECT name, id FROM student WHERE id IS NULL;

3.8分页查询 

语法格式:

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

分页查询就是将数据按照页的形式进行显示,就像我们购物时,商品会有页码数,这就是分页查询的实际应用。 

 示例:

 第 1 页SELECT id, name, math, english FROM student ORDER BY id LIMIT 3OFFSET 0;-- 第 2 页SELECT id, name, math, english FROM student ORDER BY id LIMIT 3OFFSET 3;-- 第 3 页,如果结果不足 3 个,不会有影响SELECT id, name, math, english FROM student ORDER BY id LIMIT 3OFFSET 6;

4.修改(UPDATAE)

语法格式:

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

示例:

-- 将大鹏同学的数学成绩变更为 80 分UPDATE student SET math = 80 WHERE name = '大鹏';-- 将张三同学的数学成绩变更为 60 分,语文成绩变更为 70 分UPDATE student SET math = 60, english = 70 WHERE name = '张三';-- 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分UPDATE student SET math = math + 30 ORDER BY  math + english LIMIT 3;-- 将所有同学的语文成绩更新为原来的 2 倍UPDATE studentt SET math = math * 2;

注意:

修改可以联合上方提到的语句(ORDER BY;WHERE等)进行修改,这样在使用方面对数据的操作就全面了许多。

5.删除(DELETE)

语法格式: 

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

 示例:

--删除张三的成绩DELETE FROM student WHERE name = '张三';

--创建一个测试表create table test_table(    id int,    name varchar(20));--删除测试表delete from test_table;

注意:在开发当中,删除操作是非常危险的,我们一定要再三再三考虑,如果操作失误,很有可能把自己的“饭碗”给弄丢,严重的话可能老板的饭碗也给弄没了。 

来源地址:https://blog.csdn.net/qq_65228171/article/details/129370313

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯