sql高级命令

sql高级命令

在一次面试中,sql语句基本写不上来,平时就是增删改查,对于一个特殊一定的sql语法没有接触,网上找一些资料,自己汇总一下。

stu

idnameagescore
1dawei2018
2liming2358
3zhanghua2265
4lucy1888
5xiaohua2278

– 选取前n条记录
select top 3 * from stu

– 列之间的数学运算 ( mysql中的加号 + ,就是用来做数学运算的 )
select age + score as result from stu

– 字符串的拼接
select concat(“a” , “b”, “c”) from dual ==> “abc”

集合运算(交集、并集等)
– union 并集,不重复
select * from t1 union select * from t2
– union all 并集,重复
select * from t1 union all select * from t2
– intersect 交集,相同部分
select * from t1 intersect select * from t2
– except 减集 ,除相同部分
select * from t1 except select * from t2

– ifnull 处理内容为null的结果
select ifnull(num,0) as num from t1
得到的结果中,如果有null,则替换为0

– 插入一列时,先判断是否插入过,没有插入过再插入
INSERT INTO order (order_id,group_id,created_at)
SELECT
#{OrderId},
#{GroupId},
#{CreateAt}
FROM DUAL
WHERE not EXISTS ( SELECT 1 FROM car_order_ids WHERE order_id = #{OrderId} and group_id = #{GroupId} )
判断传入的数据是否存在表中
dual 表,是一个虚拟表,为了保证格式的正确而存在的,没有实际存储的内容

– exists,判断一个子句是否返回了至少一个值
select * from t1 where exists (select 1 from t2 where name = “tom”)
如果从t2表中查到了tom,结果返回1,exists后面的select语句返回值,这个exists就返回true,前面的select* 就生效

先写到这,肯定还会补充的

    原文作者:SQL
    原文地址: https://blog.csdn.net/fanqiuhang/article/details/82883990
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞