文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL增删改查(基础)

2023-08-31 05:53

关注

目录

一,增加(Create)

1.1 单行数据+全列插入

1.2 多行数据插入

1.3 指定列插入

二,查询(Retrieve)

2.1 全列查询

2.2 指定列查询

2.3 表达式查询

2.4 去重操作

2.5 排序(order by) 

2.6 使用表达式/别名进行排序

 2.7 条件查询(Where)

2.7.1 基本查询

2.7.2 and和or

2.7.3 范围查询

2.7.4 分页查询(Limit)

三,修改(update)

四,删除(Delete)


一,增加(Create)

1.1 单行数据+全列插入

语法如下:

insert into 表名 values(数据);

其中,表名不区分大小写.

注意:在进行全列插入的时候,数据不能多,也不能少.必须和表中是一一对应的!

例子如下:

假如我有一个学生表,表里的数据有ID和name,我要插入两个数据.一个是1,张三还有一个是2,李四.

   insert into student values(1,'张三');   insert into student values(2,'李四');

这样,我们就将 两条数据插入到我们的student表中去了.

注意:在数据库中," "和' '都可以接收字符串类型,所以不用太过于纠结,看自己的使用习惯.

1.2 多行数据插入

在MySQL中进行插入操作的时候,我们还可以在一次性插入多条数据.

语法如下:

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

其中,我们使用 ","来将数据分隔开,表明这是两个不同的数据.

例子如下: 

我要向student表中插入两个数据,分别是: 3,王五和4,赵六.

insert into student values(3,'王五'),(4,'赵六');

 我们看见,这里就显示了2 rows affected.这就说明两条数据都被插入成功了.warnings就说明没有警告.

1.3 指定列插入

假如我们班里面转来一个新同学叫做小美,但是因为它是新转来的,她还没有自己的id,那么我们该如何插入呢?这时候需要涉及到了指定列插入!

语法:

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

我们看到了,指定列查询和前面查询不一样的是,在表名后面加了一个括号,这个扩号是用来说明你需要插入的列的名称,不需要插入的就不需要写咯.因此,在我们的数据里面,也就不需要按照表的列来写数据了,而是按照括号里的列来写.

例子如下:

我们需要插入一个只知道name为小美的同学的信息到student表中去.

insert into student(name) values('小美');

这样,我们就把小美的数据顺利插入进去了,等到小美有了id的时候,我们再去修改,这个是后面会讲到的update关键字了.

二,查询(Retrieve)

我们上面插入的数据,该如何去查看呢?接下来就是查询的相关操作了!

2.1 全列查询

全列查询就是将表中的所有列所有数据打印出来,

select * from 表名;

例子如下:

我们要查询student表的所有内容.

select * from student;

 

 这就是student表中的内容了.同时也解释了我们的一个疑问:如果我们使用指定列插入,那么未插入的列的数据是什么呢?答案就是 NULL,如果你没有向这个列插入数据,那么默认值就是NULL.

注意:全列查询这个操作是非常危险的一个操作,因为当我们的数据量太大的时候,可能会把我们的内存吃满.因此要慎用此操作.

2.2 指定列查询

现在我们有一个exam_result表,数据如下:

现在我们只需要几列数据怎么来操作呢? 

语法:

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

这样就可以实现指定列查询了.

例子如下:

需要查询exam_result表中所有人的Math成绩,要求有id,name和Math列.

select id,name,Math from exam_result;

 这样,我们就可以查询出每个人的数学成绩了.还是很简单的.

2.3 表达式查询

 有的时候,我们期望查询总分,或是查询有的列相加后的结果.那么这个时候,我们就需要使用表达式查询去完成这件事情.

语法如下:

select 表达式 from 表名;

这里需要注意的是,表达式里参加运算的列一定是列里的数据可以进行运算的.如果你用一个字母加上一个int类型的数据,那么肯定会出现报错的.

例子如下:

我们需要查询所有同学语文,数学,英语的总分.

select id,name,chinese+ math+ english from exam_result;

这样我们就可以很轻松的得到所有人的总分.出现了一列由表达式为名的数据.但是我们发现,chinese+math+english貌似不是特别美观.并且如果在实际工作中,我们的表达式可能会非常的长,因此我们可以给表达式设置别名.操作如下:

select 表达式 as 别名 from 表名;

 只需要在表达式后面加上一个as,然后写上你的别名,这样我们就可以设置好别名.这样我们打印出来的数据也看的非常美观.

注意:设置别名的时候,as是可以省略的,但是不建议省略.因为去掉之后SQL的可读性就会下降.

2.4 去重操作

去重操作就是使用distinct关键词来进行操作.它可以帮助我们去除重复的数据.

语法如下:

select distinct 列名 from 表名;

例子如下:

语文老师想要得到语文成绩,但是要去掉重复的语文成绩数据.

没加distinct之前:

 

一共有八条数据,但是我们看见第一个和最后一个语文成绩重复了.

加了之后:

就只剩下了一个67分,数据也变成了7条了.

注意:如果想要使用distinct的时候查询多列数据,那么必须多个列都相同,那么才会进行去重,否则就不会去重.如下图: 虽然唐三藏的语文成绩和孙行者的语文成绩一样,但是因为名字不一样,所以没有进行去重.

2.5 排序(order by) 

当我们需要得到从小到大的数据或者从大到小的数据,这个时候,我们可以使用order by来进行操作.

语法如下:

select 列名/表达式/别名 from exam_result from 表名 order by 列名 asc/desc;

例子如下:

我们需要将数学成绩从大到小进行排序

select name,math from exam_result order by math desc;

 这样我们就进行了一个数学成绩的从大到小排序.

注意: 1.order by 列名后面的desc代表的是从大到小排序,而asc是从小到大排序.而如果什么都不写的话,默认就是从小到大排序!

         2.当你没有使用order by的时候,你查询的时候返回的顺序是没定义的,是不可预测的.永远不要依赖于这个顺序!

         3.当数据中出现null的时候,null被视为最小值,比表里的任何数据都小.

2.6 使用表达式/别名进行排序

上面我们说了排序,那么我们现在就可以使用别名来进行排序.

语法如下:

select 表达式 as from 表名 order by 表达式;select 表达式 as 别名 from 表名 order by 别名;

例子如下:

查询一下总分,并且从小到大排序.

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

 也可以使用别名:

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

 2.7 条件查询(Where)

2.7.1 基本查询

语法如下:

select 列名表达式/列/别名 from 表名 limit n offset m;

这个是最简单的分页查询.在表名后面还可以加上各种条件,并且还可以使用order by来进行排序.

例子如下:

查询总成绩在前三名的同学.

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

 这个表中就是总分前三名了.

注意: 如果limit后面的数大于数据被筛选后的总数,不会受到影响,MySQL会打印出所有的数据.

三,修改(update)

在MySQL中,我们使用update关键词来修改.

语法如下:

update 表名 set 列名 = 数据; 

这个就是最简单的修改SQL语句,而在数据的后面我们还可以增加where语句,order by语句和limit语句等等,来限制我们的修改范围.

例子如下:

将孙悟空同学的数学修改成70分.

update exam_result set math = 70 where name = '孙悟空';

 2. 将曹孟德同学的语文改成70分,数学改成60分.

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

 3. 将总成绩倒数前三名的数学成绩加\30分.

update exam_result set math = math+30 order by chinese+math+english limit 3;

这是修改前倒数前三名的成绩.

 修改后:

 可以看见宋公明,刘玄德,曹孟德的数学成绩都加上了30分.

四,删除(Delete)

当我们想要删除某个数据或者某些数据的时候,我们可以使用delete关键词来进行操作.

语法如下:

detele from 表名 where.../order by .../limit n;

例子如下:

删除唐三藏的成绩.

delete from exam_result where name = '唐三藏';

执行之后我们看见,exam_result表中已经没有了唐三藏同学了. 

这就是所有的内容了,本人学识有限,肯定有没有说到或者说错的地方,请大家谅解!

来源地址:https://blog.csdn.net/weixin_64597430/article/details/127867278

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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