mysql尚硅谷

sql99语法 sql执行过程
 
SELECT ....,...,...(聚合函数)
FROM 表 (LEFT/RIGHT)JOIN 表 ON 表与表的链接条件
      (LEFT/RIGHT)JOIN 表 ON 表与表的链接条件
WHERE 不包含聚合函数的过滤条件
GROUP BY  (分组字段)...,...    (查询出来的非聚合函数的值都需要分组 )
HAVING 聚合函数的过滤条件
ORDER BY ...,...,(ASC 默认升序 /DESC 降序)
LIMIT ...,..
 sql执行顺序

 

 

  
 
 
#ifnull(字段,0)  如果字段为空当成0
3. 空值参与运算:结果一定也为空。 
SELECT employee_id,salary "月工资",salary * (1 + commission_pct) * 12 "年工资",commission_pct
FROM employees;
#实际问题的解决方案:引入IFNULL
SELECT employee_id,salary "月工资",salary * (1 + IFNULL(commission_pct,0)) * 12 "年工资",commission_pct
FROM `employees`;
#11.显示表结构 describe 显示表的结构 等价于desc
DESCRIBE employees; #显示了表中字段的详细信息
逻辑运算符 or and :and的优先级优先于or  再where条件后边 如果有的多个and 和or的话 会先运行and的逻辑 再进行or的逻辑运算
order by 字段; 排序  默认升序(asc),降序desc ,order by后边可以通过别名进行排序,如果需要进行多个字段排序时,可以再order by后边指定多个字段的排序方式
limit (pigeNo-1)*pageSize,pageSize;   pageNo:显示第几页,pageSize一页显示几条数据 
MYSQL 8.0新特性的limit :limit  pageSize  offset  (pigeNo-1)*pageSize;  
sql server 分页使用top; oracle使用rownum分页(rownum是oracle的隐藏字段)。
关联查询:
 查询出两个表中共有的数据
自链接:
自己链接自己
内连接:只查出来满足条件的行(只查出满足条件的数据)
左连接:(查出左表中所有的数据,如果链接的表中没有数据的用null填充)除了查出来满足条件的值,还查出左表不满足条件的
 
 
 
内连接(join on);左连接(left join on)
 
内连接  join on:

左外连接:left join on  

右外连接:right left on 

只查符合左表数据中的去除共有的数据

 

 

 

满外连接:  union all  会去重  影响效率 不推荐使用;union 不会去重 效率较高 

nuion 的列数需要相同,并且每列的类型也相同

 

 函数

内置函数:

随机数:rand();

四舍五入 round();

 

 

 截断:truncate(x,y) 

嵌套:truncate(round(234.452,2),0) =truncate(234.45,0)=234

字符串函数:

ascii(String);                         返回字符串的ascii码

char_length(String)               返回字符串的长度

length(String)                        返回字符串的字节的长度    (一个中文占三个字节 一个英文占一个字节) 

concat(String,String)                链接字符串

concat_ws('-',String1,string2)      用字符  -  链接 String1和String2

insert(‘helloword’,2,3,wang)  替换字符  从第二位开始往右数三位字符替换为’wang‘

replace(‘hello’,‘ll’,‘wang’) 将ll替换为wang

upper(‘heLLo’)字符串变为大写

lower(HELLo) 字符串变小写

left(hello,2)    丛左边取两位

right(hello,2)    从右边取两位

  去除空格:

    trim(string)

    ltrim(String)

    rtrim(trim)

reverse(String) 反转字符串 

 

 

 

 

 

 

 

 

 

 

 

 

 日期和时间函数: https://www.bilibili.com/video/BV1iq4y1u7vj?p=35&spm_id_from=pageDriver

 

 

 

 

 

 

 

 

自定义函数

 

笔记:

 

SUBSTRING(hib.MEDINS_PURC_TYPE,1,1) as  asMEDINS_PURC_TYPE

CASE
cvc.DELV_PERM_VOLA_TYPE
WHEN '0' THEN
'人工审核'
WHEN '1' THEN
'提示(黄灯)'
WHEN '2' THEN
'无须审核'
WHEN '3' THEN
'提示(红灯)'
WHEN '4' THEN
'直接驳回'
END AS 'DELV_PERM_VOLA_TYPE'

CASE
WHEN A.PURC_STAS = '0' AND A.MEDINS_SCP_TYPE = '01' THEN '限药店'
WHEN A.PURC_STAS = '1' AND A.MEDINS_SCP_TYPE = '01' THEN '有效'
WHEN A.PURC_STAS = '0' AND A.MEDINS_SCP_TYPE = '05' THEN '失效'
END AS 'zbzt' ,

 

StringBuilder sb1 = new StringBuilder("0000");
sb1.replace(1,2,"1");//将第二位换为1
String s1 =sb1.substring(0,3);//截取前八位
//impTmpCVo.setFld015(s1);
System.out.println(String.valueOf(s1));

 

<if test="endDate != null and endDate != ''">
AND A.INVO_ACCE_TIME <![CDATA[<=]]> #{endDate}
</if>

函数 加密解密 

encode  decode

 

 md5 加密 不可解密

 

 

 

 

 

 

 

链接字符串concat 

常见聚合函数

count max mix  sum avg

select中出现的非组函数的字段一定要放在group by 后边,否则查询的数据有缺失,不正确。

反之,group by中的字段不一定需要放在select后边。

GROUP BY与 HAVING连用要求

 

 

WHERE GROUP BY HAVING连用例子: WHERE是先筛选再连接,HAVING是先连接在筛选。

 

 

 

posted @   大旭4521  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示