【mysql基础语法】

sql基础语法

一 基本语法

查询:select 字段 from 表名 where 条件

插入:insert into 表名 ( column_name ) values ( values )

删除:delete from 表名 where 条件

更新:update 表名 set ( column_name=value ),where 条件

应用于某列的聚合函数。聚合函数对数据进行数学运算,如计算平均值(AVG)、总和(SUM)、最大值(MAX)、最小值(MIN)或计数(COUNT)。

GROUP BY 字段
GROUP BY 关键字后面跟着的列名用于指定数据库应该如何将数据分组。

ORDER BY 字段
ORDER BY 关键字用于指定结果集的排序方式。你可以根据一个或多个列进行排序。默认情况下,ORDER BY 会按照升序(ASC)排列数据,但你也可以指定降序(DESC)。

二 分组查询

select 分组函数,分组后的字段
from 表
【where 筛选条件】
group by 分组的字段
【having 分组后的筛选】
【order by 排序列表】

使用关键字 筛选的表 位置
分组前的筛选 where 原始表 group by的前面
分组后的筛选 having 分组后的结果 group by的后面
三 连接查询

【mysql基础语法】_第1张图片

-- 查询学员所属的年级(学号,学生姓名,年级名称)
SELECT `StudentNo`,`StudentName`,`GradeName`
FROM student s
INNER JOIN grade g
ON s.GradeID=g.GradeID;
 
-- 查询科目所属的年级
SELECT `SubjectName`,`GradeName`
FROM `subject` s
INNER JOIN `grade` g
ON s.GradeID=g.GradeID;
 
-- 查询列参加程序设计考试的同学信息(学号,姓名,科目名,分数)
SELECT s.`StudentNo`,`StudentName`,`SubjectName`,`StudentResult`
FROM student s
INNER JOIN result r
on s.StudentNo=r.StudentNo
INNER JOIN `subject` sub
on r.SubjectNo=sub.SubjectNo
where SubjectName='课程设计';
四 过滤规则
--循环过滤列表
WHERE sop.reconciliation in
<foreach collection="reconciliationTypeList" item="reconciliationType" open="(" close=")" separator=",">
        #{reconciliationType}
</foreach>

--if判断过滤
<if test="recCode != null and recCode != ''">
        AND sop.recCode = #{recCode}
</if>

--判断开始时间和结束时间
<if test = "startTime != null and startTime != ''">
		AND DATE_FORMAT(table.time, '%Y-%m-%d') <![CDATA[ >= ]]> #{startTime}
</if>
<if test = "endTime != null and endTime != ''">
		AND DATE_FORMAT(table.time, '%Y-%m-%d') <![CDATA[ <= ]]> #{endTime}
</if>
五 查询组合
SELECT sop.productId,
		--组合门店编码-门店名称
        concat(sop.shopCode, '-', sop.shopName) AS recCode,
        --总数减去取消数量 乘以 单价
        (sop.count - sop.cancelCount) * sop.unitPrice AS settlementPrice

你可能感兴趣的:(mysql)