https://support.huaweicloud.com/bestpractice-css/css_07_0034.html
从一个表中选择所有字段:
SELECT *
FROM table_name;
从多个表中选择所有字段:
SELECT *
FROM table1, table2, table3
WHERE table1.id = table2.id AND table2.id = table3.id;
从一个表中按条件选择字段:
SELECT column1, column2, column3
FROM table_name
WHERE condition;
从多个表中选择多个字段:
SELECT t1.column1, t2.column2, t3.column3
FROM table1 t1, table2 t2, table3 t3
WHERE t1.id = t2.id AND t2.id = t3.id;
从多个表中按条件选择字段:
SELECT t1.column1, t2.column2, t3.column3
FROM table1 t1, table2 t2, table3 t3
WHERE t1.id = t2.id AND t2.id = t3.id AND condition;
sql标签和include标签一般是一起使用的,sql标签中id属性对应include标签中的refid属性。
通过include标签将sql片段和原sql片段进行拼接成一个完整的sql语句进行执行。
sql标签可以用来定义可复用的sql代码片段,可以通过include标签包含在其他语句中。
<!-- 通用查询结果列 -->
<sql id="baseColumnList">
SELECT
id,
name,
sex
</sql>
<select id="selectById" resultType="com.property.vo.EmployeeVO">
<include refid="baseColumnList"/>
FROM employee
WHERE is_deleted = 0
</select>
拼接后:SELECT id,name,sex FROM employee WHERE is_deleted = 0
查询字段、关联表、where条件都可以使用。
JOIN是MySQL中用于连接两个或多个表的操作。在使用JOIN操作时,我们需要指定连接的字段,这些字段需要在两个或多个表中都存在。JOIN操作可以分为以下几种类型:
INNER JOIN(内连接):只返回两个表中连接字段相等的行。
LEFT JOIN(左连接):返回左表中的所有行,以及右表中连接字段相等的行。
RIGHT JOIN(右连接):返回右表中的所有行,以及左表中连接字段相等的行。
FULL OUTER JOIN(全外连接):返回左右两个表中的所有行。
Left join
Left join(左连接)是一种关系型数据库查询操作,用来将两个表中的符合连接条件的记录组合在一起。左连接包含左表的所有记录,以及与左表匹配的右表中的记录。如果右表中没有与左表匹配的记录,则右表的值为null。
左连接的语法:SELECT 列1, 列2, … FROM 左表 LEFT JOIN 右表 ON 连接条件
示例代码:
假设有两个表:
学生表(student):
学号 | 姓名 |
---|---|
101 | 张三 |
102 | 李四 |
103 | 王五 |
成绩表(score):
学号 | 课程 | 分数 |
---|---|---|
101 | 语文 | 80 |
101 | 数学 | 90 |
102 | 语文 | 75 |
103 | 数学 | 85 |
104 | 语文 | 70 |
查询学生表和成绩表的左连接:
SELECT student.学号, student.姓名, score.课程, score.分数
FROM student
LEFT JOIN score ON student.学号 = score.学号;
查询结果:
学号 | 姓名 | 课程 | 分数 |
---|---|---|---|
101 | 张三 | 语文 | 80 |
101 | 张三 | 数学 | 90 |
102 | 李四 | 语文 | 75 |
103 | 王五 | 数学 | 85 |
104 | null | 语文 | 70 |
其中,学生表中的每个记录都与成绩表中符合条件的记录进行了左连接,如果成绩表中没有与学生表匹配的记录,则右表的值为null