MySQL---增删改查

1.基本查询语句SELECT

SELECT {*|<字段列表>}
[
    FROM <表1>,<表2>...
    [  where<表达式>
    [GROUP BY <group by definition>]
    [HAVING<expression>[<operator><expression>...]]
    [ORDER BY<order by definition>]
    [LIMIT[<offset>,]<row count>]
]
SELECT [字段1...,字段n] FROM [表或者视图] WHERE [查询条件];

(1)单表查询所有字段

SELECT * FROM table_name;

(2)在SELECT语句中指定查询所有字段

SELECT 字段名1,字段名2... FROM table_name;

注意:一般情况下,在没有必要全部查询出来表中的内容的时候不要使用*来查询,这样可以避免不必要的时间的浪费。通配符的优势就是在不知道所需要的列的名字的时候,可以通过它来获取。
这里写图片描述
(3)查询指定记录

SELECT 字段名1,字段名2...
FROM table_name
WHERE 查询条件

WHERE条件判断符:
=相等;<>或者!=不等;<小于;<=小于等于;>大于;>=大于等于;BETWEEN位于两值之间
(4)带IN关键字的查询
IN操作符用来查询满足指定范围内的条件的记录,使用IN操作符,将所有检索条件用括号括起来,检索条件之间用逗号分隔开,只要满足条件范围内的一个值即为匹配项。
这里写图片描述
注:也可以在IN前面加NOT来检索不在条件范围内的记录。
(5)带BETWEEN AND的范围查询
用来查询某个范围内的值,该操作符需要两个参数,即范围的开始值和结束值,如果字段值满足指定的范围的查询条件,则这些记录被返回。
这里写图片描述
注意:通过我这个查询语句的返回结果可以知道,BETWEEN A AND B查询条件的返回值包含A和B的值在内。
此外,可以在BETWEEN AND前面加NOT关键字,表示不再这个范围之内的,也就是在这个范围之外的值。
(6)带LIKE关键字的查询
SQL支持多种通配符,可以和LIKE一起使用的有”%”,”_”;
其中”%”匹配任意长度的字符,包括零字符,它的位置可以任意,它也可以用于匹配在指定位置的任意数目的字符。
”只能匹配单个字符,如果要匹配多个字符,需要使用多个”“来做匹配。
这里写图片描述
(7)查询空值
空值一般表示数据未知,不适用或者将在以后添加数据,特别说明:空值不等同于0,更不等同于空字符串。可以在SELECT查询中使用IS NULL子句来查询某字段内容为空记录。NOT IS NULL表示查询的某字段内容不为空的记录。
(8)带AND的多条件查询
可以使用AND连接两个或者多个查询条件,每个条件之间用AND 分开。
这里写图片描述
(9)带OR的多条件查询
表示只需要满足其中一个条件的记录即可返回,OR可以连接两个或者多个查询条件,多个查询条件之间用OR分开。
这里写图片描述
注:OR和IN使用后的结果是一样的,但是IN更加简明,而且IN执行速度要快于OR,使用IN操作符,可以执行更加复杂的嵌套查询。
OR和AND可以一起使用,但是AND优先级高于OR,因此先对AND两边的操作数进行操作,再与OR中的操作数结合。
(10)查询结果不重复

SELECT DISTINCT 字段名 FROM table_name;

这里写图片描述
(11)对结果进行排序ORDER BY
这里写图片描述
这里写图片描述
ASC升序排序,是ORDER BY默认的排序方式(A-Z)
DESC降序排序
这里写图片描述
DESC降序排序方式只应用到直接位于其前面的字段上,如果要对多列进行降序排序,那么每一列的列名后面都要加上DESC。
(12)分组查询GROUP BY
分组查询就是对数据按照某个或多个字段进行分组,MYSQL中使用GROUP BY关键字对数据进行分组。

[GROUP BY 字段][HAVING <条件表达式>]

字段:进行分组时的列的名称;表达式是满足条件的表达式的值会显示出来。
GROUP BY关键字通常和集合函数一起使用。
在GROUP BY子句中使用WITH ROLLUP,在所有查询的分组记录之后增加一条记录,该记录计算查询出的所有记录的总和,统计记录的数量。
当使用ROLLUP时,不能同时使用ORDER BY子句进行结果排序,也就说明ROLLUP和ORDER BY互斥。
(13)HAVING和WHERE的区别
HAVING在数据分组之后进行过滤来选择分组,而WHERE在分组之前用来选择记录,另外WHERE排除的记录不再包括在分组内。
(14)使用LIMIT限制查询结果的数量
SELECT返回所有匹配的行,有可能是表中所有的行,如仅仅需要返回第一行或者前几行,使用LIMIT关键字
2.插入语句
(1)向表中的所有字段插入新的值

insert into table_name(column_list) values(value_list);

这里写图片描述
如果要给表的每个字段插入value的时候,可以省略该表中的所有字段,但是values后面的值需要和表中字段的顺序一致,插入的数据类型也应该和表中字段的数据类型一致。
这里写图片描述
(2)为表中指定的字段插入value
这里写图片描述
(3)为一张表同时插入多条记录
这里写图片描述
注意:当数据表中主键的字段为int类型,且使用AUTO_INCREMENT的时候,向表中插入数据的时候可以设置主键的位置为NULL,这样数据库会自增的生成主键ID。
参数的解释:
Records:表示插入的记录的条数
Duplicates:表示插入时被忽略的记录,原因可能是这些记录包含了重复的主键值
Warnings:表名有问题的数据值,比如发生数据类型转换。
(4)效率问题
一个同时插入多行记录的INSERT语句可以等同于多个单行插入的inset语句,但是多行的INSERT语句在处理过程中,效率更高。因为MYSQL执行单条SQL INSERT语句插入多行数据,比使用多条INSERT语句块,所以在插入多条记录的时候,最好选择使用单条INSERT语句的方式插入。
(5)将查询结果插入到表中

insert into table_name (column_list) select (column_list) from table_name2 where (condition)

注意:查询列和插入列的字段个数和字段数据类型必须一致
3.更新数据UPDATE
(1)MySQL中使用update语句更新表中的记录,可以更新特定的行或者同事更新所有的行
(2)基本语法

update tablename set column_name1=value1,,,,where (condition);

参数解释:
tablename:要更新数据的表的名字
column_name1:要更新的数据在表中的字段的名字
value1:要更新的字段在表中的新数据
condition:表示的是条件
这里写图片描述
(2)多个列需要更新的时候,每个“列-值”之间用逗号隔开就行,最后一列不需要逗号。
(3)保证update以where子句结束,通过where子句指定被更新的记录所需要满足的条件,如果忽略where子句,mysql将更新表中的所有行。
4.删除DELETE
(1)基本语法:

Delete  from table_name where condition;

从某张表中删除where条件的记录,如果没有where条件,呢么意味着这张表的数据是全部删除。
这里写图片描述
(2)如果想删除表中的所有记录,还可以使用TRUCATE TABLE语句,TRUNCATE 将直接删除原来的表并重新创建一个表,其语法结构是;

truncate table table_name;

TRUNCATE直接删除表记录,因此执行速度比delete还要快。
这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值