写这些之前必须了解sql的基本执行顺序
写法:SELECT… FROM… join_type JOIN…ON…WHERE …GROUP BY …HAVING …ORDER BY … limit
执行顺序:
FROM…ON…OUTER(join)…WHERE…GROUP BY…HAVING…SELECT…DISTINCT…ORDER BY…LIMIT…这个执行过程中产生了很多的虚表,最终只显示了最后一张虚表。
关于解释(一定参考):https://blog.csdn.net/yan454790122/article/details/83151950
1.like ‘%a%’ 包含a的;like ‘_a_y’ 第一个是a的,第四个是y的;%可以替代多个字符, _替代单个字符;like ‘[al]%’ 找出a或l开头的数据;
like ‘[al]%’ 反之。
2 in 只需要满足里面的一个条件即可。
3 between a and b a和b之间
4 使用别名可以加as也可以不用加as,直接跟在表名之后。
5 表与表之间建立联系的方式:
①inner join/join 通过主键关联 from user as u join room as r on/where
②left join 以有连接未主体,相反right join
③union 用于合并两个或者多个select语句的结果集
sql语句大致有两种状态。
更新数据库数据的情况:
① 状态值更新 : 这个没得说,简单的更新即可。
② 像支付等更新 (不能重复):最后是先查版本号,在拿版本号去更新。
1.查版本号V=1.0
2.update table set money = monet -100,set V = V+ 1 where id = ? and name = ?
子查询能不用就不用,大量的子查询会使笛卡尔积太大,简单来说执行次数过多,推荐尽量用join表的方式。
sql优化方案
参考:https://www.cnblogs.com/yunfeifei/p/3850440.html
参考:https://www.cnblogs.com/itsharehome/p/6160780.html
数据库金钱常识:常用类型:float, double, decimal ,有效位数分别为:7,15,28。