第一种:
INSERT [INTO] tbl_name [(col_name,...)] {VALUES|VALUE} ({expr|DEFAULT},...),(...),...
注:VALUE后也可以写表达式
省略列名时要依次赋值,不然会报错
给自动编号的值赋值时,可用以下两种值来保持自动:
1.写成空值(NULL)
2.写成默认值(DEFAULT)
第二种:
INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},...
注:此方法可以使用子查询,但这种方法一次只能插入一条记录
第三种:
INSERT [INTO] tbl_name [(col_name,...)] SELECT ...
注:此方法可以将查询结果写入指定数据表中
单表更新:
UPDATE[LOW_PRIORITY][IGNORE] table_reference SET col_name1={expr1|DEFAULT}[,col_name2={expr2|DEFAULT}]...[WHERE where_condition]
举个栗子,把users0表中的age字段加5:
mysql> UPDATE users0 SET age= age+5;
Query OK, 9 rows affected (0.01 sec)
Rows matched: 9 Changed: 9 Warnings: 0
删除记录(单表):
DELETE FROM tbl_name [WHERE where_condition]
删除记录后,再插入新纪录时id号接的是记录尾部
格式:
SELECT select_expr[,select_expr ...]
[
FROM table_reference
[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}]
]
1.每一个表达式表示想要的一列,必须有至少一个
2.多个列之间以英文逗号分隔
3.星号(*
)表示所有列,tbl_name.*
可以表示命名表的所有列
4.查询表达式可以使用[AS] alias_name
为其赋予别名
5.别名可用GROUP BY,ORDER BY,或HAVING子句
对记录进行过滤,如果没有指定WHERE子句,则显示所有记录
在WHERE表达式中,可以使用MySQL支持的函数或运算符
查询结果分组:
[GROUP BY {col_name|position} [ASC|DESC],...]
ASC(默认):升序
DESC:降序
分组条件:
[HAVING where]
HAVING后面如果不是聚合函数,则该字段必须出现在当前SELECT语句中,否则会报错
聚合函数:
SQL基本函数,聚合函数对一组值执行计算,并返回单个值
除了 COUNT 以外,聚合函数都会忽略空值,聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用
对查询结果排序:
[ORDER BY {col_name|expr|position} [ASC|DESC],…]
排序时当字段值相等时,可以再加入一个字段排序,例如:
mysql> SELECT * FROM users0 ORDER BY age,id DESC;
这样当age值相等时就会以id值降序排列,就像是第二关键字
限制查询结果返回的数量:
[LIMIT {[offset,] row_count|row_count OFFSET offset}]
举个栗子,从第三条记录开始返回,返回4个记录:
mysql> SELECT * FROM users0 LIMIT 2,4;
+----+----------+----------+-----+------+
| id | username | password | age | sex |
+----+----------+----------+-----+------+
| 3 | SAM | 12343 | 17 | 0 |
| 4 | SAM | 12343 | 26 | 0 |
| 5 | SAM0 | 1243 | 15 | 0 |
| 6 | SAM0 | 1243 | 13 | 0 |
+----+----------+----------+-----+------+
4 rows in set (0.00 sec)
这里需要注意,记录是从0开始编号