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* 就生效

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值