--一、入门
开服务:OracleServiceOrcl ...listener
数据库文件:数据文件(.dbf) 日志文件(.log) 控制文件(.ctl)
数据类型:数值型(number(p,s)) 字符型(varchar2 超过4000个字节 用long) 日期型(date)
创建表空间:create tablespace 名字 datafile '' size 50M
创建用户:create user 用户名 identified by 密码
授权/撤销:grant...to/revoke ... from
--二、数据管理
Oracle的伪列:rowid rownum
--求薪水前三的员工信息 top× 先排序 后编号
select b.*,rownum from(
select * from emp order by sal desc
) b where rownum<4
--分页代码 把伪列-->明列(取个别名)
select * from(
select a.*,rownum as rid from emp a
) b where b.rid between ? and ?
--万能公式 pageIndex:第几页 pageSize:每页多少条数据
--(pageIndex-1)*pageSize+1------pageIndex*pageSize
Oracle的伪表:dual 为了防止sql语句报错
--Oracle跟sqlserver的区别
拼接:||
nvl(a,b):a为空就用b替代
取别名:列取别名(空格、as) 表取别名(空格)
多行插入:
insert into 表名(列名,列名)
select 数据,数据 from dual
union
select 数据,数据 from dual
去重复:distinct
判空:is null/is not null
复制表:create table 表名 as select * from 要复制的表
利用现有表插入数据:insert into 表名(列名) select 列名 from 表名
--三、内置函数
1.转换:to_char/to_number/to_date yyyy-mm-dd hh24:mi:ss
2.日期:sysdate/systimestamp/add_months/months_between/last_day/next_day/extract(xx from date)/round/trunc
3.字符串:length/substr/replace/concat/decode/ltrim/rtrim/upper/lower/initcap/ascii/chr/instr/lpad/rpad
4.数学:abs() sqrt() mod() power() ceil() floor() round() trunc() sign()
--四、PL/SQL编程&函数
--PL/SQL编程的语法
declare
--声明部分 变量名 数据类型;
begin
--可执行部分 不可省略
属性类型:表名.列名%type 表名%rowtype
赋值: := / select ...into
打印:dbms_output.put_line();
循环:<<名字>>loop..exit 名字 when 条件.end loop;
while(条件) loop .....end loop;
for 变量 in 值..值 loop....end loop;
条件:if(条件) then elsif(条件) then .. else end if;
case....end case; &:输入器
--异常处理部分
exception when 异常 then 怎么处理
系统自带:too_many_rows / no_data_found
自定义异常:声明 抛出raise 处理
end;
--函数的语法
--参数和返回都不能带长度 必须要有返回
create or replace function 函数名(参数)
return 你要返回的数据类型
is|as
begin
return 对应类型的数据;
end;
--函数如何调用?
select 函数名(参数) from dual;
begin
dbms_output.put_line(函数名(参数));
end;
--五、数据库对象
同义词:synonym 给现有的对象取个别名
create synonym 别名 for 谁.对象
序列:
create sequence 名字;--默认序列 递增1 从1开始
[start with 1]
[increment by 2]
[maxvalue 100]
[minvalue 1]
伪列:currval[当前值]/nextval[下一个值]
视图:是一张虚拟的表
create view 视图名 as 一段查询的sql语句 with read only;
优点:方便使用者 提高了安全性
索引:编排数据的一种方式 index
create index 索引名 on 表(列);
优点:提高了查询效率
适合创建在用户查询较为频繁的列
不适合创建在值少、不怎么查询的列、数据就很少
--六、触发器
概念:是一种特殊的存储过程(只能自动执行 由特定事件触发)
2223: 2个时间点(after/before)
2个临时表(:new/:old)
2种模式(行级for each row/语句级)
3种操作(insert/delete/update)
注意:临时表的字段一定是跟触发器所在的表或视图一致的
语法:
create or replace trigger 触发器名字
after/before 操作(or)
on 表名/视图名
for each row--行级
PL/SQL编程
级联触发:会用且慎用
事务:rollback[回滚];commit[提交];savepoint[保存点];
drop table stumarks;