PL/SQL 软件知识
PL/SQL Developer是一个集成开发环境,由Allround Automations公司开发,专门面向Oracle数据库存储的程序单元的开发。有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要优势的。
主要特性
PL/SQL编辑器,具有语法加强、SQL和PL/SQL帮助、对象描述、代码助手、编译器提示、PL/SQL完善、代码内容、代码分级、浏览器按钮、超链接导航、宏库等许多智能特性,能够满足要求性最高的用户需求。当您需要某个信息时,它将自动出现,至多单击即可将信息调出。
PL/SQL 下载地址
官方网站下载地址:https://www.allroundautomations.com/registered-plsqldev/
安装 PLSQL 需要使用到客户端,因此还需要安装客户端软件:
https://www.oracle.com/database/technologies/instant-client/downloads.html
官网下载较慢,也可以使用百度云链接提取:
https://pan.baidu.com/s/1On0pUq092AHTtK7EqVJRNw 提取码:vj3p
PL/SQL 一套详细的安装教程可进入该博客链接:https://blog.csdn.net/Pasto/article/details/108673818?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169148243616800222893631%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=169148243616800222893631&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-108673818-null-null.142v92control&utm_term=PLSQL%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85&spm=1018.2226.3001.4187
PL/SQL 数据库连接
连接成功后就能看到如下界面:
针对英文不是很好的小伙伴,也能更好的体验到 PL/SQL 工具的便捷,可参考配置如下:
快捷生成SQL代码配置如下:
Oracle 常用脚本语法
分享给大家Oracle在实战项目上所涉及的常用脚本语法,希望能帮助到各位小伙伴,快速提升自己,如对语法不理解可百度搜索用法介绍:
-- 查询表存储程序
select * from user_source where upper(text) like '%表%';
-- 查询表是否存在
select * from dba_objects where object_name like '%表%' and object_type ='TABLE';
--查询表空间大小
select t.segment_name, sum(t.BYTES /1024/1024)
from dba_segments t
where t.segment_type='TABLE' and t.owner='PAS'
group by t.segment_name
order by sum(t.BYTES /1024/1024)
--查看表序列
select * from user_sequences where sequence_name like '%表%'
-- 查询表所有字段
select wm_concat(column_name)
from (select column_name from user_tab_columns where table_name='表' order by column_id);
-- 快速创建并备份表
create table 备份表 as select * from 原表;
-- 查询前10条
select * from 表 where rownum<=10;
-- 新增表字段
alter table 表 add 字段 字段类型;
-- 删除表字段
alter table 表 drop column 字段;
-- 修改表字段类型
alter table 表 modify(字段 字段类型);
-- 创建表
create table 表
(
字段1 INTEGER not null,
字段2 VARCHAR2(40),
字段3 INTEGER,
字段4 NUMBER(25,4)
)
tablespace 指定表空间
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
-- Add comments to the table
comment on table 表 is '表描述信息';
-- Add comments to the columns
comment on column 表.字段 is '字段描述信息';
-- Create/Recreate indexes
create index XPK表 on 表 (主键)
tablespace 指定表空间
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
)
nologging;
Oracle 数据库操作
常用内置函数
nvl(exp1, exp2) 其作用是(从两个表达式中返回一个非null值,如果都为空返回null)
coalesce(exp1,exp12,...) 其作用是(从多个表达式中返回一个非null值,如果都为空返回null)
decode(field_name, val1, new_val1, val2, new_val2, default_value)
其作用是(
若字段=值1,取值1对应值,若字段=值2,取值2对应值,否则取默认值
注意点:其里面的值是可以为一个表达式的
)
row_number(order by field_name) 其作用是(将数据集根据某个字段进行排序,并产生序号字段)
to_date(str, date_format) 其作用是(将字符串转日期格式,格式有:'yyyymmdd | yyyy-mm-dd')
to_char() 其作用是(将其他类型转字符串类型)
注意点:9(若存在数字显示数字,不存在显示空格)
0(若存在数字显示数字,不存在显示0)
fm(删除因为9带来的空格)
wm_concat() 其作用是(行转列,高版本可能会被剔除)
listagg() within group(order by field_name) over(partition by field_name) 其作用是(行转列)
concat(exp1, exp2) 其作用是(字符串拼接,或者用||)
sys_guid() 其作用是(产生并返回一个唯一的标识符,由16或32字符组成,经常用来做表的主键)
over(partition by field_name order by field_name) 其作用是(函数分析)
常与聚合函数搭配使用来简化代码,因为聚合函数是与 group by 搭配使用的,通过使用分析函数就可以省略不写了
其他常用函数
length(x) 返回x的长度
lower(x) 转小写
upper(x) 转大写
trim(x) 去空格
replace(x,old,new) 在x中查找old,并替换成new
substr(qmx.kmh,1,4) 字段截取
abs(x):取绝对值
avg(x):平均值
cast(exp1 as data_type) 类型转换,转整型时需要注意
between qsrq and jsrq 在...之间...
distinct 去重
inner join 表关联取交集
left join 表关联取左表
group by 分组
partition by 分组,常用在分析函数里搭配使用
order by 排序
union all 将多段SQL语句块进行连接执行
case when ... then ... else ... end 条件判断
排序的三种用法:
dense_rank() over(partition by 分组 order by 排序) px --相同值,排序值相同,且按规则顺序排序
rank() over(partition by 分组 order by 排序) px --相同值,排序值相同,且不按规则顺序排序
row_number() over(partition by 分组 order by 排序) px --相同值,排序值不同,且按规则顺序排序
常用建表数据类型:
integer、varchar、decimal、char、timestamp、clob(存储文本)、blob(图片)、varchar2(oracle)、number(oracle)
常用SQL脚本
drop table 表名;
drop index 索引名;
drop procedure 程序名;
drop sequence 序列名;
alter table 表名 drop constraint '约束名';
alter table 表名 drop columns '列名';
truncate table 表名; '清空表数据,且索引重置'
user_sequences 查看自增序列
user_source 查看存储程序
user_tables 查看表
user_tab_columns 查看表字段
user_indexes 查看索引
user_views 查看视图
user_tablespaces 查看表空间
--数据连接
sqlplus 用户名/密码 as sysdba
--重启数据库
(1) 以oracle身份登录数据库,命令:su - oracle(注意空格)
(2) 进入Sqlplus控制台,命令:sqlplus /nolog
(3) 以系统管理员登录,命令:connect / as sysdba
(4) 启动数据库,命令:startup
(5) 如果是关闭数据库,命令:shutdown immediate
(6) 退出sqlplus控制台,命令:exit
(7) 进入监听器控制台,命令:lsnrctl(Listener Control的缩写)
(8) 启动监听器,命令:start
(9) 退出监听器控制台,命令:exit
补充知识点
以下仅供参考,具体可按照工作实战去学习研究:
--SQL性能优化:
尽量使用 union all 进行多SQL语句段执行,避免多表查询
用 where 代替其他筛选条件
分库分区分表建索引