今如何学习Oracle天给大家带来的是怎么学Oracle,其实Oracle并不算太难,只要掌握技巧。好了,废话不多说,咱来看看博主怎么说吧!
我主要从六个方面来学习:
- 基本入门
- 数据管理
- 内置函数
- 使用pl/sql
- 游标
- 触发器
基本入门
学习的开始当然是认识软件啦,我下的是PLSQLDeveloper,如下图:
打开之后需要进行登录,有不同的身份,当然也对应着不同的权限。
这是内置用户,我们可以进行登录从而进行下一步的学习。那有人会问了,难道基本除了了解软件没有别的了吗?当然不行(▼皿▼#)第一天这么简单咋行嘞,我们还得学会下面的内容:
代码如下:
--创建表空间:
create tablespace pf_spc
datafile 'D:\A_Oracle课程\oracle\pf.dbf'--存储在自己下载的oracle
size 20m --初始大小
--将表空间分配给用户
create user pf
identified by "pf123"
default tablespace pf_spc
--登录(登录是要授权的)
--代码授权:connect(连接权限) resource(资源权限)
grant connect,resource to pf
--收回权限:
revoke resource from 用户名
--界面版
--代码版
alter user pf account unlock--解锁
alter user pf account lock--锁住
数据管理
数据管理顾名思义就是对数据进行管理,也就是增、删、改、查,如果学过sql,那你会发现其实与sql的增删改查语句差不多,咱话也不多说,直接上代码直观的感受一下。
--数据类型
varchar2(255) --字符串
number --数字
date --日期
char(200) --长度不可变
varchar2(200) --长度可变
long --超大文本
number(5,2) 111.00 --数字类型
select * from dept;
-- 所有的查询必须的有from
select 'abc' from dual;-- 伪表
select a.*,rownum from dept a;-- 伪列
--新建表空间
--新建用户
--授权用户
--撤权用户
--新建表
create table student(
stu_id number primary key,
stu_name varchar2(200) not null,
stu_sex char(3) not null,
stu_birthday date
);
--插入数据
insert into student values(1,'小明','男',to_date('2020/1/1','yyyy/mm/dd'))
insert into student values(2,'小黑','男',to_date('2020-1-1','yyyy-mm-dd'))
--日期不能直接使用字符串 需要用to_date进行转换 格式要一致
--插入数据(union)
insert into student
select 5,'小绿','男',to_date('2020/1/1','yyyy/mm/dd') from dual
union --联合
select 6,'小白','男',to_date('2020/1/1','yyyy/mm/dd') from dual;
--修改数据
UPDATE STUDENT SET STU_NAME='AA' WHERE STU_ID=6;
COMMIT;--提交
--删除数据
DELETE FROM STUDENT;
ROLLBACK;--回滚 事务
--删除表
DROP TABLE STUDENT;
--删除表中的数据
--复制表
CREATE TABLE STU_BAK
AS
SELECT * FROM STUDENT;
SELECT * FROM STU_BAK01;
--复制表(只复制结构)
CREATE TABLE STU_BAK01
AS
SELECT * FROM STUDENT WHERE 2=4;
--查看emp表
SELECT * FROM EMP;
--给emp表取别名
SELECT A.ENAME FROM EMP A;
--只查看emp表的员工名字
--给ename列取中文别名
SELECT A.ENAME AS 名字 FROM EMP A;
SELECT A.ENAME 名字 FROM EMP A;
--查看emp表中员工的职业信息
SELECT DISTINCT JOB FROM EMP;
--查询emp表中职业为CLERK的员工信息
SELECT * FROM EMP WHERE JOB ='CLERK';
--查询emp表中职业为CLERK或SALESMAN的员工信息
SELECT * FROM EMP WHERE JOB='CLERK' OR JOB='SALESMAN'
--查询emp表中名字带S的员工信息
SELECT * FROM EMP WHERE ENAME LIKE '%S%'
--查询emp表中名字以S开头的员工信息
SELECT * FROM EMP WHERE ENAME LIKE 'S%'
--查询emp表中名字以S开头且名字为五个字的员工信息
SELECT * FROM EMP WHERE ENAME LIKE 'S____'
--查询emp表中职业为CLERK且工资大于1000的员工信息
SELECT * FROM EMP WHERE JOB='CLERK' AND SAL>1000
--查询emp表中每个员的收益(薪水+奖金)
-- ISNULL() SQLSERVER
-- NVL() ORACLE
SELECT SAL+NVL(COMM,0) FROM EMP
--将emp表中的员工名字和职业连接起来(查询成1列)
-- || 连接
SELECT ENAME||'-'||JOB 职业信息 FROM EMP
--查看emp表中没有奖金的人
SELECT * FROM EMP WHERE COMM IS NULL
--查看emp表中有奖金的人
SELECT * FROM EMP WHERE COMM IS NOT NULL
--按照emp表中的工资升序排列数据
SELECT * FROM EMP ORDER BY SAL ASC
--按照emp表中的工资降序排列数据
SELECT * FROM EMP ORDER BY SAL DESC
--按照emp表中的 部门降序 工资升序 排列数据
SELECT * FROM EMP ORDER BY DEPTNO DESC,SAL ASC
--求工资最高的人
SELECT B.*,ROWNUM FROM (
SELECT A.*,ROWNUM C FROM EMP A ORDER BY SAL DESC
) B WHERE ROWNUM=1
--求工资排列中(升序)的前三人
SELECT B.*,ROWNUM FROM (
SELECT * FROM EMP A ORDER BY SAL DESC
) B WHERE ROWNUM<4
-- ROWNUM可以用于小于
-- 还可以用于等于 但是等于只能为1
--求工资排列中(升序)的前三到六人
-- 伪列不好使用,将它变成实列
SELECT * FROM (
SELECT B.*,ROWNUM C FROM (
SELECT A.* FROM EMP A ORDER BY SAL DESC
) B
) D WHERE C BETWEEN 4 AND 6
认真看完上面的的题目并跟着思考一遍,是否觉得有对Oracle的数据管理有更深的认识了呢?让我们继续往下了解吧!
内置函数
Oracle 提供一系列用于执行特定操作的函数
SQL 函数带有一个或多个参数并返回一个值
以下是SQL函数的分类:
日期函数对日期值进行运算,并生成日期数据类型或数值类型的结果
日期函数包括:
- ADD_MONTHS
- MONTHS_BETWEEN
- LAST_DAY
- ROUND
- NEXT_DAY
- TRUNC
- EXTRACT
以下是一些其它的字符函数:
- CHR和ASCII
- LPAD和RPAD
- TRIM
- LENGTH
- DECODE
SQL> SELECT LENGTH('frances') FROM dual;
SQL> SELECT vencode,
DECODE(venname,'frances','Francis') name
FROM vendor_master WHERE vencode='v001';