sql语句

本文展示了如何在Oracle数据库中进行权限管理,包括给表授权、插入初始化数据、添加和修改字段、设置字段注释以及默认值。此外,还涉及数据清理、查询技巧、级联查询以及处理重复数据的方法,同时也提到了JSON数据的解析和处理。
摘要由CSDN通过智能技术生成

--给表授权

GRANT SELECT ON BPMOU55.HD_USER to BPMAPP55;

--初始化脚本

INSERT INTO "BPMAPP55"."xxx"("ID", "DICT_VALUE", "NAME") VALUES ('applyCode', 1, 'applyCode');

--给表中新加字段

ALTER TABLE "BPMAPP55"."xxx" ADD ("fieldNameId" NUMBER(20,0));

COMMENT ON COLUMN "BPMAPP55"."xxx"."fieldNameId" IS 'xxxID';

ALTER TABLE "BPMAPP55"."xxx" ADD ("fieldName" VARCHAR2(255) );

COMMENT ON COLUMN "BPMAPP55"."xxx"."fieldName" IS 'xxx名称';

--设置字段长度

alter table "BPMAPP"."xxx" modify "fieldName" VARCHAR2(1000);

--新加字段设置默认值为0

ALTER TABLE BPMAPP55.xxx ADD IS_SHOW NUMBER(1) default '0';

COMMENT ON COLUMN BPMAPP55.xxx.IS_SHOW IS '是否修改处理人 0:是 1:否';

--清表脚本

truncate table xxx; delete from xxx;

--查询表中有多少字段 xxx:表面

select count(*) from user_tab_columns where table_name=upper('xxx');

--条件查询 case when

SELECT CASE WHEN HANDLE_NAME is null THEN '否' ELSE '是' END AS HANDLE_NAME FROM xxx;

--DECODE 函数 GENDER 字段为1:男;字段2:女

SELECT DECODE(GENDER, 1, '男', 2, '女', '未知') FROM xxx;

--oracle 查询clob类型的数据 instr()函数

SELECT * FROM xxx u WHERE dbms_lob.instr(u.WDL_DEPT_NAME,'MQD') > 0 ORDER BY u.ID DESC;

--查询索引在哪个表中加的

SELECT DISTINCT table_name,index_name FROM all_indexes WHERE index_name = '索引id';

/*

Oracle相同字段有多条记录取id最大的一条

t.business_id:多条数据中出现相同的值

t.id :倒序排取id的最大值

rn : 倒序排列的值

*/

select * from (select t.*, row_number() over(partition by t.business_id order by t.id desc) rn from PMS_APPROVAL_APPLICATION t) c where rn = 1 and DELETED = 0 AND BUSINESS_ID =243;

/*查询多张表同字段

查询数据库中所有包含‘CHECK_WAY’字段的表*/

select owner,table_name, COLUMN_NAME,DATA_TYPE,DATA_LENGTH from all_tab_columns where table_name=upper('xxx') and owner=upper('bpmapp') and OLUMN_NAME=upper('CHECK_WAY');

--级联查询

select * from 表名 where 条件1 start with 条件2 connect by prior 当前表字段=级联表字段

--去重 distinct

select distinct * from xxx;

--删除视图 xxx:视图名称

DROP VIEW x'xx;

--创建视图 xxx:视图名称

create view xxx as select * from xxx-a;

--查询两张表中相同字段的数据 UNION ALL

select * from xxx1 union all select * from xxx2;

--删除表中重复的数据
DELETE FROM  table WHERE  ROWID NOT IN (
        SELECT MIN(ROWID) FROM  table GROUP BY id HAVING COUNT(*) > 1)
    AND id IN ( SELECT id FROM table GROUP BY id HAVING COUNT(id) > 1);

oracle:

        原始数据:1>.字段值为多个json对象,取对象中name的值,函数:JSON_TABLE        

SELECT jt.name FROM your_table,JSON_TABLE(your_table.json_data,'$[*]' COLUMNS ( name VARCHAR2(255) PATH '$.name' )) AS jt;

查询结果:

2>.如上图,将查询结果用函数将字符串拼接,函数:LISTAGG(字数有限制,4000)

SELECT LISTAGG(jt.name, ', ') WITHIN GROUP (ORDER BY jt.name) AS concatenated_names FROM your_table,JSON_TABLE(your_table.json_data, '$[*]' COLUMNS (name VARCHAR2(255) PATH '$.name')) AS jt;

3>.没有字数限制   函数:xmlagg(xmlparse(content jt.name|| ',') ORDER BY jt.name).getclobval()

SELECT xmlagg(xmlparse(content jt.name|| ',') ORDER BY jt.name).getclobval() FROM your_table,JSON_TABLE(your_table.json_data,'$[*]' COLUMNS (name VARCHAR2(255) PATH '$.name')) AS jt WHERE APPROVAL_ID = 41232 AND DELETED = 0;

--删除表中重复的数据
DELETE FROM your_table WHERE ROWID NOT IN (SELECT MIN(ROWID) FROM your_table  GROUP BY your_filed HAVING COUNT(*) > 1)  AND your_filed IN (SELECT your_filed FROM      your_table GROUP BY your_filed HAVING COUNT(your_filed) > 1);
    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值