数据库基本操作语句的汇总,包括增(INSERT)、删(DELETE)、改(UPDATE)、查(SELECT)的详细解释及示例使用。
插入
INSERT(第一种方法)
INSERT [INTO] tbl_name [(col_name, …)] {VALUES|VALUE} ({expr|DEFAULT}, …), (…), …
示例:
INSERT users VALUES(DEFAULT,'Tom',5*2-7),(NULL,'Jerry',md5('123'));
当列为自增主键时,值可以为DEFAULT、NULL。当列存在默认值时,该值可以为DEFAULT。
INSERT(第二种方法)
INSERT [INTO] tbl_name SET col_name={expr|DEFAULT}, …
示例:
INSERT users SET username='Tony', password='789';
该方法适用于带有子查询的插入,且不可以批量查询。
INSERT(第三种方法)
INSERT [INTO] tbl_name [(col_name, …)] SELECT …
该方法用于将查询到的数据插入到数据表中。
示例:
INSERT user1(username) SELECT username FROM users WHERE age > 30;
将users中年龄大于30的用户名称写入user1的数据表中。
修改
UPDATE(单表更新)
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] … [WHERE where_condition]
示例:
UPDATE users SET age = 1, password = '123'; UPDATE users SET age = age + 5 WHERE id % 2 = 0;
删除
DELETE(单表删除)
DELETE FROM tbl_name [WHERE where_condition]
示例:
DELETE FROM users WHERE id = 1;
查询
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 VERSION(); SELECT NOW();
说明:
1.每一个表达式表示想要的一列,必须有至少一个。
2.多个列之间以英文逗号分隔。
3.星号(*)表示所有列。tbl_name.*可以表示命名表的所有列。
4.查询表达式可以使用[AS] alias_name为其赋予别名。
5.别名可用于GROUP BY, ORDER BY或HAVING子句。
对查询的分组:
即可以通过GROUP BY查找出一个列中互为不相同的项。
例如我需要查出一个用户表中存在哪些年龄段的用户:
SELECT age FROM users GROUP BY age;
另外GROUP BY可以通过HAVING来进行筛选结果,比如我只需要查找出id大于35的互为不同年龄的年龄表:
SELECT age, id FROM users GROUP BY age HAVING id > 35;
注意,这里如果HAVING右侧非聚合函数(count()、sum()…),那么该字段必须要再SELECT后面查找出来,否则会报错。
对查询的排序:
通过ORDER BY实现对查询结果的排序。
示例:
首要根据age倒序排序,当age相同时使用id倒序排序。
SELECT user FROM users ORDER BY age DESC, id DESC;
DESC代表使用倒序排序,默认为ASC,即正序。
对查询结果数量限制:
SELECT * FROM users LIMIT 2, 2;
返回第3、4条记录。
OFFSET:偏移量,用于分页。
偏移量计算公式即:OFFSET = (当前页码 - 1) * 每页所显示的记录数