Mysql学习笔记三

八、操作数据表中的记录
1、插入记录
①、INSERT

INSERT [INTO] 表名[(col_name,...)] {VALUES|VALUE}({expr|DEFAULT},...),(...)...

插入记录时,有个特殊的需要考虑,就是含有自增属性的字段。
如果想要默认的结果,可以将id列可以写为NULL或DEFAULT,默认从1开始。
VALUES(值或表达式、函数)
一次性插入多条记录:INSERT INTO TABLE(字段列表) VALUES(值列表1),VALUES(值列表2);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eITHwThy-1577615093821)(https://img-blog.csdn.net/20170825124925539?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSEJsb2Nr/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]
②、INSERT SET -----此方法可以使用子查询

INSERT [INSERT] tbl_name SET col_name{expr|DEFAULT},...

区别:一次只能插入一条记录

③、INSERT SELECT 见 9小节。

2、单表更新记录 UPDATE … SET …WHERE

单表更新:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr|DEFAULT}[,col_name2=expr|DEFAULT]...[WHERE where_condition]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fO9EqrJ0-1577615093823)(https://img-blog.csdn.net/20170825130239874?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSEJsb2Nr/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)] 未加WHERE条件,更新所有。

让id号为偶数的字段,age+3:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZuogBcpb-1577615093823)(https://img-blog.csdn.net/20170825130319917?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSEJsb2Nr/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

3、单表删除记录 DELETE FROM 表名…WHERE
这里写图片描述
如果id有自增属性,删除一个记录后,再添加一个新的记录,id号并不是原来的id,而是自增1后的ID。
如图:这里写图片描述
4、查询表达式
格式:


注意:

  • 表达式的顺序影响结果集的顺序, SELECT id,name 和SELECT name,id …

表达式中,使用别名命名字段也会影响结果集: 多表查询时,如果只查某个表的数据,表达式: 表名.id,表名.name…(因为其他表中可能也定义的id,name字段。)

注意:SELECT id name FROM class; 结果并不是显示两个字段
而是将id命名为别名name (省略AS),所以在查找是,不同的字段要加”,”分隔,或者加上AS 关键词。
5、WHERE语句

6、GROUP BY对查询结果分组
在分组时既可以指定列的列名,也可以指定列的位置(数字,1代表第一个字段)。 ASC:升序(默认) DESC:降序。多个分组条件以‘,’分隔。

7、HAVING 设置分组条件

报错:因为在进行分组时,HAVING 语句中,分组条件要么是聚合函数,要么是条件字段在前面的SELECT语句里存在。否则会报错。
SELECT * FROM class GROUP BY字段名; //按字段分好组,重复的选择第一个为0的值。

这样查询就没有重复的了:

SELECT * FROM class GROUP BY 字段名 HAVING 条件; //从分好组后的数据中选出满足条件的值

HAVING与WHERE的区别: (两点)
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

8、order by ----对查询结果排序

SELECT * FROM 表名 ORDER BY 字段名;

其中BY 后面可以跟多个字段,如果第一个就满足了需求,后面的字段就不起作用了。
第一个字段不满足时才遵守第二个字段,更多字段以此类推。

9、limit 限制查询数量。

LIMIT参数1,参数2; 参数1:从哪儿开始(下标从0开始);参数2:限制几个;

将查询结果插入到指定表: class表中年龄<25的name插入到class2中。

INSERT INTO class2 SELECT name FROM class WHERE age = 25; //class2 没加入字段名

报错:字段和值不匹配。(因为class2中有2个字段:id,name)
注意:LIMIT常用于分页,分页计算是固定的 偏移值=(当前页码-1)*每页所显示的记录数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值