oracle自学笔记
精选
原创
©著作权归作者所有:来自51CTO博客作者yeahzxw的原创作品,请联系作者获取转载授权,否则将追究法律责任
oracle简单操作
SQL语句不区分大小写,可以写在一行或者多行,关键字不能缩写也不能分行,使用缩进提高可读性
修改密码为oracle
alter user sys identified by oracle account unlock;
oracle备份(EXP)
exp sys@orcl file=D:\sys.dmp
oracle恢复(imp)
imp userid=uname/pwd tables=ce file=/home/oracle/data-bak/ce.dmp;
select:标识,选择那些列
from:标识,从那些表选择
select ID,name from tables; :选择特定的列
select后跟列名from后跟表名
连接符用||表示(把列与列,列与字符连接在一起)
重复行
默认情况下查询会返回全部行,包括重复行
删除重复行
在select子句中使用关键字“DISTINCT”删除重复行
where子句
在select后面可以加where子句,用来限定查询的结果集
比如要查询姓名为XS的学生:
select * from t_c11_zyryda where xm='xs';
查看表结构
desc/describe用来查看数据的表结构
distinct(去重)
查找的结果不需要有重复的数据出现时用
selec distinct product_name from prcduct;
判断是否为空
select * from school where address is null;
查看时间
select sysdate from dual;
三天后的时间
select sysdate +3 from dual;
列的别名
(加入关键字AS,别名使用双引号)
SQL> select sysdate as 当前时间 from dual;
加减乘除计算器
ORACLE默认表
emp表
empno 员工编号,唯一的 主键
ename 员工姓名
job 工作
mgr 员工经理编号
hiredate 入职日期
sal 工资
comm 奖金
deptno 部门编号
ioc 地址
select语句
select ename,job,sal from emp;(查询员工姓名,工作,工资)
select 列(后面跟列,)...列 from 表名字 where 列;
select * from emp where sal>2000;(查找工资大于2000的员工)
rollback 回滚
commit 提交
批量插入语句
insert info 表名字 values()
insert into test values(null,'SYS_C00521',51,null);
insert table test as select * from emp;
select * from test update ,会把test表所有行锁住(不要用)
select * from test ename=范冰冰 for update(只锁定一行)
update修改语句
# update test set sal =10000; -- (实际工作中加where条件,不然修改的是整个表
别名
MYSQL
SELECT
a.COMPANY_NUMBER,b.location_name,a.CUSTOMER_PROVINCE_NUMBER,a.CUSTOMER_NUMBER,a.CUSTOMER_NAME,
CASE a.value_level_id when '01' then '一级'
when '02' then '二级'
END AS 层级 FROM
tmp_cust_cust a,location b WHERE a.location = b.location_number AND a.COMPANY_NUMBER = '571' AND a.INDUSTRY_ID = '49'
ORACLE
decode(t.sex, '1', '男生', '2', '女生', '其他') as sex
计算百分比
concat(round((sum1 / sum2 * 100), 2), '%'
时间条件
ORACLE
select distinct prodist_sku_num from prodist_member_list a where to_char(a.update_date,'YYYY-MM-DD HH24:MI')
<= '2020-10-23 12:00' and to_char(a.update_date,'YYYY-MM-DD HH24:MI') >= '2020-10-23 00:00'
MYSQL
select substr(T.create_time, 1, 7),count(*) from tmp_cust_cust t where T.create_time between '2022-02-01' and '2022-02-02' group by substr(T.create_time, 1, 7);
或者
DATE_FORMAT(create_time,'%Y%m%d') >=20210000
group by
按天统计
select substr(backupdate,1,6),count(*) from esop_crm.his_eboss_sms where to_char(backupdate,'YYYY-MM') = '2021-07'
group by substr(backupdate,1,6) order by substr(backupdate,1,6) desc
报文截取
SELECT count(*) FROM tmp_hyj_0323_cvalilog a WHERE substr(a.RESPONSE_PARAM, instr(a.RESPONSE_PARAM,'ERRORVALUE":"') + 13 ,+ 6) = '接口查询错误';
创建视图
create or replace view abs_generl.view_item_026 as
select * from abs_task.abs_task_item
linux简单操作
ftp登陆
ftp 127.0.0.1 user 输入密码:passwd
sftp登陆
sftp -P 1165 user@127.0.0.1 登陆sftp,输入密码:passwd