Oracle学习笔记总结
来源:互联网 发布:淘宝电子面单打印机 编辑:程序博客网 时间:2024/05/16 01:34
用sys登录
用户名: sys
密码/口令: change_on_install as sysdba
刚安装完修改一下密码
命令:
1,conn+用户名/密码 连接命令
2,disc 断开连接
3, password 修改密码
4,show user 显示当前用户名
5,exit 退出同时会退出sql*plus
Oracle图形化管理工具--sqlDeveloper
路径设置:C:\app\xh\product\11.2.0\dbhome\jdk\bin\java.exe
Oracle数据类型
CHAR VARCHAR
NUMBER(p,s):即可以存储浮点数,又可以存储小数
p表示数字的最大位数(若是小数包括整数部分和小数部分和小数点),s指小数位数
Oracle建表和约束
create table infos{
stuId varchar2(7) not null,
Gender varchar2 not null,
stu varchar2(7) not null,
Age number(2) not null,
Birthday date
}
alter table infos add constraint pk_infos primary key(stuId)
alter table infos add constraint ck_infos check(Gender='男' or gender='女')
alter table infos add constraint ck_infos check(Age>=0 and Age<=100)
Oracle分组查询
SELECT AVG(sal),MAX(sal),deptno FROM emp GROUP by deptno
SELECT AVG(sal),MAX(sal),deptno,ename FROM emp GROUP by deptno -> 语法错误
注: SELECT后面查询的字段必须是聚合函数或者在GROUP by后面出现的字段才能在SELECT后面出现
显示各个员工的姓名,工资以及工资级别
SELECT e.ename,e.sal,s.grade FROM emp e,salgrade s
WHERE e.sal BETWEEN s.local AND s.hisal
显示雇员名,雇员工资以及所在部门的名字,并按部门排序
SELECT e.ename,e.sal,d.name FROM emp e,dept d
WHERE e.deptno=d.deptno ORDER BY e.deptno
自连接(显示某个员工的上级领导姓名---领导和员工都在一张表里面)
SELECT worker.ename,boss.ename FROM emp worker,emp boss
WHERE worker.mgr = boss.empno
pl/sql
1,模块化的设计思想(分页,订单,转账)
2,提高应用程序的运行性能
3,减少网络传输量
4,提高安全性
缺点:移植性不好
set serveroutput on //打开输出选项,设置输出到SQL*Plus
DECLARE sname varchar(20) := 'jerry';
BEGIN
sname := sname||' and tom'; // '||'表示将两个串拼接
dbms_output.put_line(sname); //打印sname
END;
declare pi constant number := 3.14;
r number default 2;
area number;
begin
area := pi*r*r;
dbms_output.put_line(area);
end;
declare sname varchar2(20) default 'jerry';
begin
select ename into sname from emp empno=7934;
dbms_output.put_line(area);
end;
属性数据类型
Oracle中存在两种数据类型:%TYPE和%ROWTYPE
set serveroutput on
declare
v_ename VARCHAR2(30);
begin
select ename into v_ename from emp where empno=&no; //'&'表示从控制台输入
dbms_output.put_line('雇员名:'||v_ename);
--异常处理
exception
when no_data_found then
dbms_output.put_line('输入有错误');
end;
--存储过程
create table mvtest{
name varchar2(30),
password varchar2(30)
};
create or replace procedure sp_pro is
begin
insert into mvtest values('张三','aa12');
end;
--执行存储过程
exec sp_pro
--带参数的存储过程
编写一个过程,可以输入一个雇员名,如果该雇员的
工资小于2000,就给增加1000
create or replace procedure sp_pro(spName vachar2) is
v_sal emp.sal%type; --定义一个变量v_sal,这个变量的类型是与emp表里的sal的类型一致
begin
select sal into v_sal from emp where ename = spName;
if(v_sal < 2000) then
update emp set sal = v_sal + 1000 where ename = spName;
end if;
end;
--带输出参数的存储过程
create or replace procedure sp_pro(spName in number,spName out varchar2) is --in表示输入参数,out表示输出
begin
select ename into spName from emp where empno = spon;
end;
set serveroutput on --打印输出
declare spno1 number := 7369; --定义变量并赋值7369
spname1 varchar(10);
begin
sp_pro(spno1,spname1);
dbms_output.put_line(spname1);
end;
序列:
是用来生成连续的整数的数据对象。序列常常用来作为主键中的增长列
例子:
create table cdpt100{
id number(6),
name varchar2(30),
constraint pk_id primary key(id)
};
--更改数据库的"延迟段创建"特性为false
ALTER SYSTEM deferred segment creation = FALSE;
create sequence seq_cdpt100
increment by 1 -- 增长量为1
start with 1 -- 从1开始
maxvalue 99999 -- 最大值
minvalue 1 -- 最小值
NOCYCLE -- 不循环
nocache -- 不缓存
insert into cdpt100 values(seq_cdpt100.nextval,"NBA") --序列名.nextval表示每执行一次都取下一个值
Oracle中的伪列
在Oracle的表的使用过程中,实际表中还有附加的列,称为伪列。伪列就像表中
的列一样,但是在表中并无存储。伪列只能查询,不能进行增删改工作。 ROWID
物理地址,ROWNUM表示行号
select ROWID ename from emp where sal > 2000;
查询emp表中第五条到第十条中的记录
select * from (select ROWNUM R,ename,job,sal from emp where ROWNUM <= 10) where R > 5;
Oracle中的函数
SELECT CONCAT('Hello','World') FROM DUAL; --HelloWorld,DUAL表示伪表,可以查系统的数据
SELECT FROM DUAL;
select sysdate,add_months(sysdate,5) from dual --查询当前的日期并且在加5个月
select TO_CHAR(SYSDATE,'YYYY'年'MM'月DD'日 HH24:MI:SS) "date" FROM DUAL;
索引
特点:
1,可以大大加快数据的检索速度,这也是创建索引的最主要原因
2,可以加速表与表之间的连接
3,在使用分组和排序字句进行数据检索时,可以显著减少查询中分组和排序的时间
不足:
1,创建索引和维护索引需要时间,这种时间会随着数据量的增加而增加
2,索引需要占用物理空间
3,当对表中的数据进行增删改的时候,索引也要动态的维护,降低数据的维护速度
为EMP表的工资列创建索引
CREATE INDEX idx_sal on emp(sal);
应该建索引列的特点:
1,在经常需要搜索的列上,可加快搜索的速度
2,在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构
3,在经常需要进行范围搜索的列上创建索引
4,在经常需要排序的列上创建索引
5,在经常使用的where字句上创建索引,加快判断速度
用户名: sys
密码/口令: change_on_install as sysdba
刚安装完修改一下密码
命令:
1,conn+用户名/密码 连接命令
2,disc 断开连接
3, password 修改密码
4,show user 显示当前用户名
5,exit 退出同时会退出sql*plus
Oracle图形化管理工具--sqlDeveloper
路径设置:C:\app\xh\product\11.2.0\dbhome\jdk\bin\java.exe
Oracle数据类型
CHAR VARCHAR
NUMBER(p,s):即可以存储浮点数,又可以存储小数
p表示数字的最大位数(若是小数包括整数部分和小数部分和小数点),s指小数位数
Oracle建表和约束
create table infos{
stuId varchar2(7) not null,
Gender varchar2 not null,
stu varchar2(7) not null,
Age number(2) not null,
Birthday date
}
alter table infos add constraint pk_infos primary key(stuId)
alter table infos add constraint ck_infos check(Gender='男' or gender='女')
alter table infos add constraint ck_infos check(Age>=0 and Age<=100)
Oracle分组查询
SELECT AVG(sal),MAX(sal),deptno FROM emp GROUP by deptno
SELECT AVG(sal),MAX(sal),deptno,ename FROM emp GROUP by deptno -> 语法错误
注: SELECT后面查询的字段必须是聚合函数或者在GROUP by后面出现的字段才能在SELECT后面出现
显示各个员工的姓名,工资以及工资级别
SELECT e.ename,e.sal,s.grade FROM emp e,salgrade s
WHERE e.sal BETWEEN s.local AND s.hisal
显示雇员名,雇员工资以及所在部门的名字,并按部门排序
SELECT e.ename,e.sal,d.name FROM emp e,dept d
WHERE e.deptno=d.deptno ORDER BY e.deptno
自连接(显示某个员工的上级领导姓名---领导和员工都在一张表里面)
SELECT worker.ename,boss.ename FROM emp worker,emp boss
WHERE worker.mgr = boss.empno
pl/sql
1,模块化的设计思想(分页,订单,转账)
2,提高应用程序的运行性能
3,减少网络传输量
4,提高安全性
缺点:移植性不好
set serveroutput on //打开输出选项,设置输出到SQL*Plus
DECLARE sname varchar(20) := 'jerry';
BEGIN
sname := sname||' and tom'; // '||'表示将两个串拼接
dbms_output.put_line(sname); //打印sname
END;
declare pi constant number := 3.14;
r number default 2;
area number;
begin
area := pi*r*r;
dbms_output.put_line(area);
end;
declare sname varchar2(20) default 'jerry';
begin
select ename into sname from emp empno=7934;
dbms_output.put_line(area);
end;
属性数据类型
Oracle中存在两种数据类型:%TYPE和%ROWTYPE
set serveroutput on
declare
v_ename VARCHAR2(30);
begin
select ename into v_ename from emp where empno=&no; //'&'表示从控制台输入
dbms_output.put_line('雇员名:'||v_ename);
--异常处理
exception
when no_data_found then
dbms_output.put_line('输入有错误');
end;
--存储过程
create table mvtest{
name varchar2(30),
password varchar2(30)
};
create or replace procedure sp_pro is
begin
insert into mvtest values('张三','aa12');
end;
--执行存储过程
exec sp_pro
--带参数的存储过程
编写一个过程,可以输入一个雇员名,如果该雇员的
工资小于2000,就给增加1000
create or replace procedure sp_pro(spName vachar2) is
v_sal emp.sal%type; --定义一个变量v_sal,这个变量的类型是与emp表里的sal的类型一致
begin
select sal into v_sal from emp where ename = spName;
if(v_sal < 2000) then
update emp set sal = v_sal + 1000 where ename = spName;
end if;
end;
--带输出参数的存储过程
create or replace procedure sp_pro(spName in number,spName out varchar2) is --in表示输入参数,out表示输出
begin
select ename into spName from emp where empno = spon;
end;
set serveroutput on --打印输出
declare spno1 number := 7369; --定义变量并赋值7369
spname1 varchar(10);
begin
sp_pro(spno1,spname1);
dbms_output.put_line(spname1);
end;
序列:
是用来生成连续的整数的数据对象。序列常常用来作为主键中的增长列
例子:
create table cdpt100{
id number(6),
name varchar2(30),
constraint pk_id primary key(id)
};
--更改数据库的"延迟段创建"特性为false
ALTER SYSTEM deferred segment creation = FALSE;
create sequence seq_cdpt100
increment by 1 -- 增长量为1
start with 1 -- 从1开始
maxvalue 99999 -- 最大值
minvalue 1 -- 最小值
NOCYCLE -- 不循环
nocache -- 不缓存
insert into cdpt100 values(seq_cdpt100.nextval,"NBA") --序列名.nextval表示每执行一次都取下一个值
Oracle中的伪列
在Oracle的表的使用过程中,实际表中还有附加的列,称为伪列。伪列就像表中
的列一样,但是在表中并无存储。伪列只能查询,不能进行增删改工作。 ROWID
物理地址,ROWNUM表示行号
select ROWID ename from emp where sal > 2000;
查询emp表中第五条到第十条中的记录
select * from (select ROWNUM R,ename,job,sal from emp where ROWNUM <= 10) where R > 5;
Oracle中的函数
SELECT CONCAT('Hello','World') FROM DUAL; --HelloWorld,DUAL表示伪表,可以查系统的数据
SELECT FROM DUAL;
select sysdate,add_months(sysdate,5) from dual --查询当前的日期并且在加5个月
select TO_CHAR(SYSDATE,'YYYY'年'MM'月DD'日 HH24:MI:SS) "date" FROM DUAL;
索引
特点:
1,可以大大加快数据的检索速度,这也是创建索引的最主要原因
2,可以加速表与表之间的连接
3,在使用分组和排序字句进行数据检索时,可以显著减少查询中分组和排序的时间
不足:
1,创建索引和维护索引需要时间,这种时间会随着数据量的增加而增加
2,索引需要占用物理空间
3,当对表中的数据进行增删改的时候,索引也要动态的维护,降低数据的维护速度
为EMP表的工资列创建索引
CREATE INDEX idx_sal on emp(sal);
应该建索引列的特点:
1,在经常需要搜索的列上,可加快搜索的速度
2,在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构
3,在经常需要进行范围搜索的列上创建索引
4,在经常需要排序的列上创建索引
5,在经常使用的where字句上创建索引,加快判断速度
1 0
- Oracle学习笔记总结
- Oracle初期学习笔记总结
- ORACLE的学习笔记第一阶段总结
- Oracle学习笔记之一SQL查询总结
- Oracle学习笔记之一SQL查询总结
- 初学Oracle学习笔记之Oracle常见操作总结
- 初学Oracle学习笔记之Oracle常见操作总结
- oracle使用笔记总结
- oracle笔记总结
- oracle学习总结----oracle常用命令
- oracle学习总结(二)
- ORACLE 8023学习总结
- oracle学习总结(二)
- oracle学习总结(二)
- oracle学习总结(一)
- oracle学习总结(二)
- Oracle 学习总结
- oracle学习总结(二)
- Google常用搜索技巧及"index of"详细使用方法
- Map.Entry和Map中的map.keySet()、map.entrySet()详解
- 【NOIP模拟】选数问题
- 循环向右移动字符串
- C#之WinForm基础 画一个矩形与扇形
- Oracle学习笔记总结
- 安卓简易音乐播放器
- Java集合之HashSet和LinkedHashSet
- HDU 1023 Train Problem II
- python术语(持续更新)
- RadioGroup+Fragment实现界面切换
- input输入框禁用苹果系统键盘的return键
- softmax层(无loss)是什么样的?
- 51Nod-1453-抽彩球