我的数据库常用语句

写死数据集
select '数据1' 列名1 ,'数据2' 列名2 ... from dual  
进行数据库统计当group by 不能统计多条语句时,使用
select sum(decode(t.dbly,'181',1,0)) 限时督查 from CASE_JBDB t
with name as()

相当于把后面select的结果集赋予前面的值

with h as(select ....)
ORACLE中的(+)

就是连接譬如SELECT a., b. from a(+) = b就是一个右连接,等同于select a., b. from a right join b
SELECT a., b. from a = b(+)就是一个左连接,等同于select a., b. from a left join b
即" (+)"所在位置的另一侧为连接的方向,通常将全量集合与部分集合连接时,在部分集合的列后面带上(+),以达到没有匹配时,也要显示出一个null的效果

distinct 去重

SELECT DISTINCT 列名FROM 表名

limit

limit是mysql的语法

select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。
select * from tablename limit 2,4
即取出第3条至第6条,4条记录

selectKey

可以用来返回插入的值的主键,并存入类的值 resultClass 的值是返回主键的类型 keypropety的值是主键所在类的名称,值可以用select 语句查询出来,

<selectKey resultClass="String"  keyProperty="caseId"  >
			SELECT 'XC'||lpad(AJ_XC_SEQUENCE.nextVal,8,'0') as caseId FROM DUAL
		</selectKey>
序列 sequence

oracle 主键不能自增 使用序列来设置主键 序列在sequence文件夹右键新建生成

字符连接符 ||在这里插入图片描述
条件限定
between and
select * from hr.employees where salary between 3000 and 5000

查询工资在3000到5000之间的
闭区间,即取得到3000

in
select * from hr.employees where salary in(3000,6000)

即薪水要么等于3000要么等于6000

like

like用于进行模糊查询

select * from hr.employees where first_name like '%a_'

名字里倒数第二个字母是a的员工
%表示任意匹配,有或者没有都可以
_表示有,并且只有一个

is null
select * from hr.employees where department_id is null

sql语言中属性列为空,只有“is null”这种表达方式。没有“=null”、=" "这几种表达方式

排序

通过order by进行排序
asc是正排序
desc是倒排序

取整

–1.取整(大)

​ select ceil(-1.001) value from dual   ;

–2.取整(小)

select floor(-1.001) value from dual  ;

–3.取整(截取)

select trunc(-1.002) value from dual ;

–4.取整(舍入)

​ select round(-1.001) value from dual;

CASE WHEN 及 SELECT CASE WHEN的用法

Case具有两种格式。简单Case函数和Case搜索函数。

简单Case函数

CASE sex

WHEN ‘1’ THEN ‘男’

WHEN ‘2’ THEN ‘女’

ELSE ‘其他’ END

–Case搜索函数

CASE WHEN sex = ‘1’ THEN ‘男’

WHEN sex = ‘2’ THEN ‘女’

ELSE ‘其他’ END
种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。

–比如说,下面这段SQL,你永远无法得到“第二类”这个结果

CASE WHEN col_1 IN ( ‘a’, ‘b’) THEN ‘第一类’

WHEN col_1 IN (‘a’) THEN ‘第二类’

ELSE’其他’ END

group by 后使用 rollup子句总结

https://www.cnblogs.com/lxh1076/p/5697929.html

decode

decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)

wm_concat(column)函数实现字段合并

lpad()函数

lpad函数将左边的字符串填充一些特定的字符其语法格式如下:lpad(string,n,[pad_string])
string 字符或者参数
n字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符;
pad_string可选参数,这个字符串是要粘贴到string的左边,若这个参数未写,lpad函数将会在string的左边粘贴空格。
lpad(‘tech’, 7); 将返回’ tech’
  lpad(‘tech’, 2); 将返回’te’
  lpad(‘tech’, 8, ‘0’); 将返回’0000tech’
  lpad(‘tech on the net’, 15, ‘z’); 将返回’tech on the net’
  lpad(‘tech on the net’, 16, ‘z’); 将返回’ztech on the net

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值