首页 > 数据库 >sql整理

sql整理

时间:2022-10-27 13:58:08浏览次数:71  
标签:name tablespace emp sql 整理 null where select

1、获取时间

获取星期

select to_char(sysdate,'day') dayth from dual
  • 1

获取上月 月份

select to_char(ADD_MONTHS(trunc(sysdate), -1),'yyyymm') from dual
  • 1

获取上月1号

select trunc(add_months(sysdate,-1),'mm') first_day from dual;
  • 1

2、Oracle行转列

listagg(string1,'|') within group (order by string) start_time;
  • 1

在这里插入图片描述3、字符串替换
replace('he love you','he','i') 替换结果i love you
4、字符串截取
substr('13088888888',3,8)从第3位开始,截取8位,截取子字符串08888888
5、时间与字符串转换
to_char(时间,‘yyyy/mm/dd hh24’)显示到小时

to_date(时间,'时间格式') 
  • 1

6、处理字段为空的问题
在实际应用中,涉及到字段的计算。一个字段为null时,与其他字段的加减乘除结果都为null
nvl (expr1, expr2) 若expr1为null,就返回expr2,若expr1不能为null就返回expr1
nvl(字段,0) 若字段为空,返回0.
select coalesce(comm,0) from emp.将comm列中为null的值替换成0

select case when comm is not null then comm else 0 end
from emp  将comm列中为null的值替换成0
  • 1
  • 2

7、decode函数
decode(条件,判断值,显示值判断,值,显示值,…值n,翻译值n,缺省值)

 DECODE(s_city,'平凉','平凉市','张掖','张掖市','白银','白银市','陇南','陇南市','金昌','金昌市','天水','天水市','临夏','临夏回族自治州','酒泉','酒泉市','武威','武威市','嘉峪关','嘉峪关市','庆阳','庆阳市','定西','定西市','兰州','兰州市','甘南','甘南藏族自治州')  as city_name,
 平凉显示为平凉市。。。
  • 1
  • 2

8、 在where子句中引用列别名

select * from
{
select sal as salary,comm as commisstion from emp
} x
where salary<5000
  • 1
  • 2
  • 3
  • 4
  • 5

将含有列别名的查询放入内嵌视图,就可以在外层查询中引用列别名。因为where子句会比select子句先执行,from比where先执行。
9、 串联多列的值
Oracle、DB2、PostgreSQL连接值时用"||",如:

select ename || ‘work as a ’ || job from emp where deptno=10
  • 1
 MySQL连接时使用concat 函数,如:
  • 1
select concat(ename,‘work as a ’,job) from emp where deptno=10
  • 1
SQL Server 使用“+”作为串联连接符,如:
  • 1
select ename+‘work as a ’+ job from emp where deptno=10
  • 1

10、 限定返回行数
限定返回行数,但不关心排序,任意N行都行
DB2:使用fetch first

select * from emp fetch first 5 rows only
  • 1

MySQL、hive、PostgreSQL:利用limit

select * from emp limit 5
  • 1

Oracle:使用rownum

select * from emp where rownum>=5
  • 1

SQL Server:使用top

select top 5 from emp
  • 1

注意:Oracle 会针对查询到结果返回一个行号,从1开始。所以
rownum=5 会查询失败,因为第一行是1。
11、 查找null值

用is null或is not null
  • 1

12、排序
order by sal asc 按sal顺序
order by sal desc 按sal倒序
order by 1 按第一列顺序

13、行合并
要求列数相同,及列的数据类型 必须相同

select ename,deptno from emp 
union all 
select ename,deptno from dept ;
  • 1
  • 2
  • 3

注意:使用union也可以叠加两个结果集,但是union会排重,内部会进行一次distinct 排重操作,降低效率。union all 会返回所有结果集,效率较高,一般使用union all

14、 复制
复制数据:

insert into table_name1(c1,c2) select c1,c2 from table2;

insert into pm.f_l_c_eutrancelltdd_d select * from pm.f_l_c_eutrancelltdd_d@wxwy
where start_time>=trunc(sysdate-1);

  • 1
  • 2
  • 3
  • 4

复制表结构:
DB2: create table table2 like table1
Oracle、MySQL、PostgreSQL:create table table2 as select * from table1 where 1=0
SQL Server:select * into table2 from table1 where 1=0
15、Oracle修改字段类型

alter table INTERFACE.DMP_GRID_PROBLEM_CELL  modify(ALARM_TIME varchar2(256));
  • 1

修改INTERFACE用户下的表DMP_GRID_PROBLEM_CELL 的字段ALARM_TIME 为varchar2(256)

16、oracle增加字段

ALTER TABLE PM.F_5_C_N_NRCELLCU_Q ADD RRC_NsaUeMean  NUMBER;
  • 1

给表PM.F_5_C_N_NRCELLCU_Q 添加一个number类型的字段RRC_NsaUeMean

COMMENT ON COLUMN PM.F_5_C_N_NRCELLCU_Q.RRC_NsaUeMean IS 'NSA 双链接平均用户数';
  • 1

RRC_NsaUeMean 的备注信息为NSA 双链接平均用户数

17、查看所有被锁的表

select b.owner TABLEOWNER, b.object_name TABLENAME, c.OSUSER LOCKBY,
c.USERNAME LOGINID, c.sid SID, c.SERIAL# SERIAL
from v$locked_object a,dba_objects b, v$session c 
where b.object_id = a.object_id AND a.SESSION_ID =c.sid;
  • 1
  • 2
  • 3
  • 4

18、解锁表

alter system kill session 'SID, SERIAL';
  • 1

19、查看表空间的使用情况

SELECT a.tablespace_name, 
a.bytes total, 
b.bytes used, 
c.bytes free, 
(b.bytes * 100) / a.bytes "% USED ", 
(c.bytes * 100) / a.bytes "% FREE " 
FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c 
WHERE a.tablespace_name = b.tablespace_name 
AND a.tablespace_name = c.tablespace_name; 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

20、查看表空间路径

select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files where tablespace_name='SYSAUX'
order by file_name;
  • 1
  • 2
  • 3
  • 4

查看表空间SYSAUX的路径

21、添加数据文件

alter tablespace SYSAUX add datafile '+DATA01/wyzx/datafile/sysaux_20210430' size 10 G;
  • 1

给表空间SYSAUX添加10G的数据文件

22、根据列名查找表名

 select column_name,table_name from user_tab_columns where column_name in('');
  • 1

注意:只能查出当前用户下的表。

23、删掉重复项
找出主键为nrcelldu_uk,start_time都重复的数据,只留下一条数据

delete from pm.F_5_C_S_NRCELLDU_PRB_Q a 
where (a.nrcelldu_uk,a.start_time) in 
(select nrcelldu_uk,start_time from pm.F_5_C_S_NRCELLDU_PRB_Q 
group by nrcelldu_uk,start_time having count(*) > 1) 
and rowid not in (select max(rowid) 
from pm.F_5_C_S_NRCELLDU_PRB_Q group by nrcelldu_uk,start_time having count(*)>1
);
commit;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

注意:操作表后顺手提交是好习惯,否则容易锁表

24、表分区操作
–删除表分区

alter table pm.f_l_c_eutrancelltdd_h drop partition 	P_1D_20200620;
  • 1

–增加表分区

alter table pm.f_g_c_cell_day_BAK add partition	P_1D_20200601	VALUES LESS THAN ( to_date('	2020-06-02	','yyyy-mm-dd')) tablespace GSM_PM;
  • 1

–查看表分区

SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='T_RES_CLUSTER_RRU_HISTORY' order by partition_name desc;
  • 1

25、查看归档日志

SELECT A.NAME, A.TOTAL_MB / 1024, A.FREE_MB / 1024 FROM V$ASM_DISKGROUP A
  • 1

标签:name,tablespace,emp,sql,整理,null,where,select
From: https://www.cnblogs.com/DeveloperHan/p/16831935.html

相关文章

  • postgresql dblink垮库查询
    环境:OS:Centos7DB:13.8 1.赋予普通用户超级用户权限因为创建扩展需要超级用户的权限,否则报如下的错误:db_test=>createextensiondblink;ERROR:permissiondenie......
  • sqlyong ssh连接错误,错误号码1045
        输入sql主机地址,用户名,密码  、  ......
  • MySQL数据库和Navicat的简单使用
    前言:学习数据库的简单使用前先梳理一下数据库的基础知识,这是前置内容;然后学习MySQL和Navicat的安装(工具),最后就是我要讲的简单使用。 这个简单使用讲了三件事,也是三个技巧;一......
  • PostgreSQL的单用户模式
    postgres--helppostgres数据库没有启动,用single就可以登录,启动了反而报错[postgres@ogg2~]$pg_ctlstatuspg_ctl:noserverrunning[postgres@ogg2~]$pg_ctlstar......
  • mysql80my配置文件放在哪
    mysql配置文件my.ini在哪linux版本是my.cnf,一般会放在/etc/my.cnf,/etc/mysql/my.cnfwin下的是my.ini,一般会在安装目录的根目录还有就是,mysql就算没有这个配置文件也能运行的......
  • mysql8yml配置
    xml中设置mySql的配置连接字符串问题把报错的信息贴出来吧英文的答案补充不知道你的问题是不是因为这个我先贴出来你有时间就看看2008-05-1516:23<>>大于号''单引号""双引......
  • mysql57版本默认的存储引擎是
    如何查看mysql默认使用的存储引擎视频讲解的是mysql数据库中存储引擎的知识,使用命令的方式查看当前数据库服务器用的什么存储引擎。本视频的目的在于一方面学习熟悉命令,另一......
  • mysql5651源码安装
    如何用源码包安装MySQL数据库下载源码,里面安装说明,一般都是./configure。。。。。。makeinstall,安装起来很慢本回答由提问者推荐linux怎么安装mysql源码包这个可以这样比如......
  • mysql5732配置文件confd
    如何找到并修改MySQL57的配置文件mlinux系统的话一般在/ect目录下面,my.cnfwindows系统的在你mysql安装目录下,my.ini本回答由网友推荐windowsmysql5.7默认配置文件在哪mysql......
  • mysql3065
    JDK1.4在JSP页面引包问题这个问题我也遇到过,因为你JDK版本不一样!重新编译一下!还有就是你的MYSQL中SQL语句可能在服务器上无法执行,试着换个写法!本回答由提问者推荐谁知道这句......