代码音符

Mysql的子查询

创建时间: 2019-8-5 10:27

修改时间: 2023-6-26 18:06

浏览: 115

数据库基本操作语句的汇总,包括增(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) * 每页所显示的记录数

创建时间: 2019-8-5 10:27

修改时间: 2023-6-26 18:06

浏览: 115

*本文遵循 CC BY-NC-SA 许可协议。转载请注明出处!