1.记录的操作
- INSERT 插入记录
1)方式一
INSERT [INTO] tb_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
注:如果要为默认自动编号的值赋值,可以将其设置为NULL。
注:如果要为默认自动编号的值赋值,可以将其设置为DEFAULT。
注:插入的值可以是数值也可以是表达式(字符/数字)
注:可以用默认值为设置了默认字段的值赋值。
注:插入多条记录,要在中间用逗号分隔。
2)方式二
INSERT [INTO] tb_name SET col_name={expr | DEFAULT},...
说明:与第一种方式的区别在于,此方法可以使用子查询(SubQuery);另外,对于上一种方法可以一次插入多条记录,而此方法一次只能插入一条记录。
注:这种方式可以只添加需要字段的内容,默认值可以通过自动补全
3)方式三
INSERT [INTO] tb_name [(col_name,...)] SELECT ...
说明:此方法可以将查询结果插入到指定数据表。
注:这样就可以将一个表中的数据插入到另一个数据表中,但也要注意数据项不匹配的问题,比如:
- UPDATE 更新记录
单表更新
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1 | DEFAULT} [,col_name2={exp2 | DEFAULT}] ... [WHERE where_condition]
注:如果省略WHERE条件,则会导致整个表的记录都被更新,eg如下:
注:也可以对单一的表中的多条记录进行操作,eg如下:
注:如果想对某些条件进行操作的话,必须加上WHERE条件,比如我们要为id为偶数的对应年龄加上10,则可以:
注意: id % 2 = 0表示 id 为偶数,是 “=” 号。
- DELETE 删除记录
单表删除
DELETE FROM tb_name [WHERE where_condition]
注:如果不加WHERE条件,则表示删除所有记录。如果删除某些特定的记录,需要加条件,比如删除第六条记录可写为:
问题:如果此时再新插入一条记录,那么它的标号id将是几?
注:记录会添加当前记录中id号最大的,然后+1,并不会补充中间被删除的记录的id号。
-
SELECT 查找记录
SELECT select_expr [,select_expr ...]
[
FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | position} [ASC | DESC],...]
[HAVING where_condition]
[ORDER BY {col_name | expr | position} [ASC | DESC],...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
]
查询表达式 select_expr:
每一个表达式表示想要的一列,必须有至少一个。
多个列之间以英文逗号分隔。
星号(*)表示所有的列。tb_name.* 可以表示命名表的所有列。(为了解决多表连接问题出现相同字段的情况)
查询表达式可以使用 [AS] alias_name 为其赋予别名。
别名可用于GROUP BY,ORDER BY或HAVING子句。
注:SELECT语句字段的别名影响以后的结果集中字段的别名;SELECT语句中字段出现的顺序将影响以后结果集中字段出现的顺序。
- WHERE 条件表达式
对记录进行过滤,如果没有指定WHERE子句,则显示所有记录。
在WHERE表达式中,可以使用MySQL支持的函数或运算符。
- GROUP BY 查询结果分组
[GROUP BY {col_name | position] [ASC | DESC],...]
注:ASC升序是默认的,DESC降序
这块看到一篇特别棒的博客,自己理解的很有意思,分享一下链接:https://blog.csdn.net/intmainhhh/article/details/80777582。
里面提到的中间的虚拟表select *的结果,再通过虚拟表得到最后select 实际需要的字段,然后输出。
- HAVING 分组条件,即我们在GROUP BY分组的时候可以对一条记录分组也可以对某些记录分组
[HAVING where_condition]
错误原因:如果在采用HAVIING进行分组条件的指定时, 一定要保证分组的条件要么为一个聚合函数,要么保证这个字段必须出现在当前的SELECT语句当中,否则会报错。
注:聚合函数是指:max(),min(),count(),avg(),sum()等,这类函数只有一个返回结果。
- ORDER BY 对查询结果进行排序
[ORDER BY {col_name | expr | position} [ASC | DESC],...]
如果某一项相同,则可以按照一个新的顺序规则进行排序然后输出:
- LIMIT 限制查询结果返回的数量
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
注:如果只有一个数字,代表从第一条记录开始返回,共返回这个数字条记录数。如果想要从中间某条开始返回并返回其后连续的某几条记录,则需要多个参数,如下图所示:
注:返回的并不是预期的3,4条记录,因为当前的SELECT语句当前的记录偏移值OFFSET是从0开始编号,所以,如果想输出3,4条记录,则可以:
再举一例说明: