- 浏览: 33873 次
- 性别:
- 来自: 哈尔滨
最新评论
create table student( --完整创建表的实例
id number(8) primary key, --SYS_C12345
name varchar2(20) not null;
email varchar2(30),
sex char,
mid number(3),
constraint student_id_pk primary key (id),
constraint student_email_uk unique (email),
constraint student_sex_ck check (sex in ('M','F')),
constraint student_mid_fk foreign key(mid) references major(id)
)
alter table student drop constraint student_mid_fk;
alter table student add constraint student_mid_fk foreign key (mid) references major(id); --外键的处理
alter table student drop constraint SYS_C12345;
alter table student add constraint student_id_pk primary key(id); ----添加主键约束条件
举例一个完整的数据库脚本
alter table xxx drop constraint........
----先删除所有的约束条件
conn openlab/open123
drop sequence xxx
drop view xxx
drop view xxx
----删除视图
drop table ...
----删除表
create table xxxx...
----创建表
create or replace view.....
----创建视图
constrain ...
----创建约束条件
insert
----增加基础数据
commit;
@ c:\script.sql
dml操作 insert /update/delete
事务 (Transaction)处理语句 commit,rollback,savepoint
ddl隐式的终止事务create / drop /alter /truncate(清除表数据,保留表结构)
truncate table student; drop table student ----->注意没有机会rollback
视图的本质就是sql查询语句
---------简单视图
create view emp_10
as select * from emp where deptno=10;
---------复杂视图
create view emp_sum as
select deptno,sum(sal) sum_sal from from emp group by deptno
create view emp_dept as
select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;
-------索引index
---sqlplus 命令
desc employee
-----sql命令
select * from employee;
------行内视图:查询语句出现在from后面 --匿名视图
---那些员工的工资比本部门的平均工资高
create view a
as
select deptno,avg(sal) avgsal
from emp group by deptno
--替换a
select ename,sal
from emp e join a on e.deptno=a.deptno
and e.sal>a.avgsal
----行内视图举例
select ename,sal from emp e join (select deptno,avg(sal) avgsal
from emp group by deptno) a on e.deptno=a.deptno
and e.sal>a.avgsal
-------子查询:查询语句出现在条件中
select * ename,sal
from emp
where sal >(select sal from emp where ename ='SCOTT');
---------伪列
rownum rowid ---oracle中独有
select rownum,ename,sal,rowid from emp;
rownum只能从1开始计算
----mysql中 select ename,sal from emp limit 5, 5 -从第五条,向后加五条
取得第m到第n条记录的获取方式
select ename,sal
from(select ename,sal,rownum rn from emp where rownum<10)
where rn>5;
select ename,sal
from (select ename,sal,rownum rn from emp )
where rn<10 and rn>5;
------排名问题,Top-N分析,,,,行内查询
薪水最高的三个人,成绩最低的五个人
select ename,sal
from (select ename,sal from emp where sal is nut null order by sal desc)
where rownum<=3;
---------序列Sequence (一种数据库对象)
主要用于生成主键值,
create sequence myseq;
-----序列中两个伪列 :nextval , currval
select myseq.nextval from dual;
create table mytemp(id number primary key,
name varchar2(20));
insert into mytemp values(myseq.nextval,'sun');
select myseq.currval from dual;---取得当前的数字
当序列建立好以后,
------------起点是1000,,步进是10
create sequence myseq
start with 1000
increment by 10;
alter sequence myseq xxxxxxx;
alter sequence myseq increment by 2 ---更改步进
有哪些对象的种类
select distinct object_type from user_objects;
-------PL/SQL编程
--------匿名块 /函数/过程/存储过程/触发器/包
set serverout put on ---- sqlplus的命令
declare
v_count number :=0;
begin
select count(*) into v_count from emp;
dbms_output.put_line(v_count);
end;
/执行
在执行之前要使用set serveroutput on 这条sqlplus命令打开
--------------------------
declare
.........
begin
.......
[exception]
end;
/
declare
v_sal number :=0;
begin
select sal into v_sal
from emp where ename='SCOTT';
dbms_output.put_line('sal is '||v_sal);
exception
when too_many_rows then
dbms_output.put_line('too many row!!');
when no_data_found then
dbms_output.put_line('no data!!');
when others then
dbms_output.put_line('other exception');
end;
/
---函数
create or replace function sun_1(
v_sal number)
return number
is v_result number:=0;
begin
if(v_sal<1000) then
v_result:=0;
elsif (v_sal < 2000)then
v_result:=v_sal*0.01;
elsif (v_sal < 3000)then
v_result:=v_sal*0.02;
else v_result:=v_sal* 0.04;
end if;
return v_result;
end;
select ename,sal,sun_1(sal) from emp;
---------
create or replace function emp_count(v_deptno emp.deptno%type)
return number
is
v_count number;
begin
select count(*) into v_count from emp
where deptno=v_deptno;
return v_count;
end;
----------函数:必须返回数据,在sql语句中生效
----------过程:可以不返回数据,可以独立生效
create or replace procedure myproc(
v_deptno emp.deptno%type
)
is
v_count number;
begin
select count(*) into v_count
from emp where deptno =v_deptno;
dbms_output.put_line(v_count);
end;
set serveroutput on -------打开向屏幕上输出的开关
exec myproc(20)
---------有输出参数的过程
create or replace procedure cal_emp(
v_deptno emp.deptno%type,
v_sum_sal out emp.sal%type,
v_avg_sal out emp.sal%type)
is
begin
select sum(sal),avg(sal)
into v_sum_sal,v_avg_sal
from emp
where deptno=v_deptno;
end;
---------------------------------------------------------有参数的存储过程的测试如下
declare
v_sum number;
v_avg number;
begin
cal_emp(10,v_sum,v_avg);
dbms_output.put_line(v_sum);
dbms_output.put_line(v_avg);
end;
/
----------------------修改员工薪水
----如果员工的职位不是manager或者president,且薪水高于15000,则报错
------否则,修改指定员工的薪水为指定的数值
create or replace procedure changsal(
v_empno emp.empno%type,
v_sal emp.sal%type
)
is v_job emp.job%type;
begin
select job into v_job
from emp where empno=v_empno;
if(v_job not in ('MANAGER','PRESIDENT') and v_sal>15000)
then
dbms_output.put_line('too many sal');
else update emp set sal=v_sal
where empno=v_empno;
end if;
exception
when others then
dbms_output.put_line('some errs ');
end;
------------测试 exec changsal(7788,4000);
id number(8) primary key, --SYS_C12345
name varchar2(20) not null;
email varchar2(30),
sex char,
mid number(3),
constraint student_id_pk primary key (id),
constraint student_email_uk unique (email),
constraint student_sex_ck check (sex in ('M','F')),
constraint student_mid_fk foreign key(mid) references major(id)
)
alter table student drop constraint student_mid_fk;
alter table student add constraint student_mid_fk foreign key (mid) references major(id); --外键的处理
alter table student drop constraint SYS_C12345;
alter table student add constraint student_id_pk primary key(id); ----添加主键约束条件
举例一个完整的数据库脚本
alter table xxx drop constraint........
----先删除所有的约束条件
conn openlab/open123
drop sequence xxx
drop view xxx
drop view xxx
----删除视图
drop table ...
----删除表
create table xxxx...
----创建表
create or replace view.....
----创建视图
constrain ...
----创建约束条件
insert
----增加基础数据
commit;
@ c:\script.sql
dml操作 insert /update/delete
事务 (Transaction)处理语句 commit,rollback,savepoint
ddl隐式的终止事务create / drop /alter /truncate(清除表数据,保留表结构)
truncate table student; drop table student ----->注意没有机会rollback
视图的本质就是sql查询语句
---------简单视图
create view emp_10
as select * from emp where deptno=10;
---------复杂视图
create view emp_sum as
select deptno,sum(sal) sum_sal from from emp group by deptno
create view emp_dept as
select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;
-------索引index
---sqlplus 命令
desc employee
-----sql命令
select * from employee;
------行内视图:查询语句出现在from后面 --匿名视图
---那些员工的工资比本部门的平均工资高
create view a
as
select deptno,avg(sal) avgsal
from emp group by deptno
--替换a
select ename,sal
from emp e join a on e.deptno=a.deptno
and e.sal>a.avgsal
----行内视图举例
select ename,sal from emp e join (select deptno,avg(sal) avgsal
from emp group by deptno) a on e.deptno=a.deptno
and e.sal>a.avgsal
-------子查询:查询语句出现在条件中
select * ename,sal
from emp
where sal >(select sal from emp where ename ='SCOTT');
---------伪列
rownum rowid ---oracle中独有
select rownum,ename,sal,rowid from emp;
rownum只能从1开始计算
----mysql中 select ename,sal from emp limit 5, 5 -从第五条,向后加五条
取得第m到第n条记录的获取方式
select ename,sal
from(select ename,sal,rownum rn from emp where rownum<10)
where rn>5;
select ename,sal
from (select ename,sal,rownum rn from emp )
where rn<10 and rn>5;
------排名问题,Top-N分析,,,,行内查询
薪水最高的三个人,成绩最低的五个人
select ename,sal
from (select ename,sal from emp where sal is nut null order by sal desc)
where rownum<=3;
---------序列Sequence (一种数据库对象)
主要用于生成主键值,
create sequence myseq;
-----序列中两个伪列 :nextval , currval
select myseq.nextval from dual;
create table mytemp(id number primary key,
name varchar2(20));
insert into mytemp values(myseq.nextval,'sun');
select myseq.currval from dual;---取得当前的数字
当序列建立好以后,
------------起点是1000,,步进是10
create sequence myseq
start with 1000
increment by 10;
alter sequence myseq xxxxxxx;
alter sequence myseq increment by 2 ---更改步进
有哪些对象的种类
select distinct object_type from user_objects;
-------PL/SQL编程
--------匿名块 /函数/过程/存储过程/触发器/包
set serverout put on ---- sqlplus的命令
declare
v_count number :=0;
begin
select count(*) into v_count from emp;
dbms_output.put_line(v_count);
end;
/执行
在执行之前要使用set serveroutput on 这条sqlplus命令打开
--------------------------
declare
.........
begin
.......
[exception]
end;
/
declare
v_sal number :=0;
begin
select sal into v_sal
from emp where ename='SCOTT';
dbms_output.put_line('sal is '||v_sal);
exception
when too_many_rows then
dbms_output.put_line('too many row!!');
when no_data_found then
dbms_output.put_line('no data!!');
when others then
dbms_output.put_line('other exception');
end;
/
---函数
create or replace function sun_1(
v_sal number)
return number
is v_result number:=0;
begin
if(v_sal<1000) then
v_result:=0;
elsif (v_sal < 2000)then
v_result:=v_sal*0.01;
elsif (v_sal < 3000)then
v_result:=v_sal*0.02;
else v_result:=v_sal* 0.04;
end if;
return v_result;
end;
select ename,sal,sun_1(sal) from emp;
---------
create or replace function emp_count(v_deptno emp.deptno%type)
return number
is
v_count number;
begin
select count(*) into v_count from emp
where deptno=v_deptno;
return v_count;
end;
----------函数:必须返回数据,在sql语句中生效
----------过程:可以不返回数据,可以独立生效
create or replace procedure myproc(
v_deptno emp.deptno%type
)
is
v_count number;
begin
select count(*) into v_count
from emp where deptno =v_deptno;
dbms_output.put_line(v_count);
end;
set serveroutput on -------打开向屏幕上输出的开关
exec myproc(20)
---------有输出参数的过程
create or replace procedure cal_emp(
v_deptno emp.deptno%type,
v_sum_sal out emp.sal%type,
v_avg_sal out emp.sal%type)
is
begin
select sum(sal),avg(sal)
into v_sum_sal,v_avg_sal
from emp
where deptno=v_deptno;
end;
---------------------------------------------------------有参数的存储过程的测试如下
declare
v_sum number;
v_avg number;
begin
cal_emp(10,v_sum,v_avg);
dbms_output.put_line(v_sum);
dbms_output.put_line(v_avg);
end;
/
----------------------修改员工薪水
----如果员工的职位不是manager或者president,且薪水高于15000,则报错
------否则,修改指定员工的薪水为指定的数值
create or replace procedure changsal(
v_empno emp.empno%type,
v_sal emp.sal%type
)
is v_job emp.job%type;
begin
select job into v_job
from emp where empno=v_empno;
if(v_job not in ('MANAGER','PRESIDENT') and v_sal>15000)
then
dbms_output.put_line('too many sal');
else update emp set sal=v_sal
where empno=v_empno;
end if;
exception
when others then
dbms_output.put_line('some errs ');
end;
------------测试 exec changsal(7788,4000);
发表评论
-
android 转载Intent应用
2011-03-14 21:12 662From:http://www.cnblogs.com/stu ... -
xml 学习1
2011-03-03 18:57 723一.xml基础: 二.xml语法 三.DTD 四.java a ... -
jdbc 可滚动结果集合,分页技术
2011-03-02 20:24 927jdbc2.0 一.可滚动的结果 ... -
jdbc笔记心得
2011-03-02 08:24 690CallableStatement: 存储过程 建立一 ... -
jdbc心得笔记01
2011-03-02 07:59 661介绍JDBC 开发JDBC应用程序 1新建java proje ... -
oracle简单笔记学习3
2011-02-27 20:38 657外键 被参照的表是主表 ... -
oracle简单笔记学习2
2011-02-27 20:34 687select from where group by h ... -
oracle简单笔记学习
2011-02-27 20:33 642select...列名,表达式,函数 distinct,别名 ... -
笔记心得12
2011-02-23 21:41 654集合的迭代(遍历)(模仿了数鸡蛋的方式) 1 java ... -
笔记心得11
2011-02-23 21:39 593Java 时间 1 时间标准:long GMT UTC ... -
笔记心得10
2011-02-12 08:37 674IO总结 InputStream |==节 ... -
笔记新的09
2011-01-25 20:37 634... -
笔记心得08
2011-01-24 21:08 0... -
笔记心得07
2011-01-21 21:11 602接口 1 接口:全部的 ... -
笔记心得06
2011-01-21 12:47 610... -
笔记心得05
2011-01-20 08:53 665... -
笔记心得04
2011-01-18 19:07 650... -
笔记心得03
2011-01-18 08:35 854... -
笔记心得02
2011-01-16 19:00 6171) continue 就是结苏当前所执行的语句,继续执行下 ... -
笔记心得01
2011-01-16 13:43 473第一周个人知识汇总 ***心若冰清,天塌不惊*** 1 ...
相关推荐
主要的形式是例子代码加代码解释加运行结果,我个人认为对于没有学习过oracle的同学是比较好的一个学习笔记,同时我对做的笔记都加了标题,做了一个简单的目录,对于已经学习过的同学也是一个很好的帮助文档,由于是...
这个笔记是学习oracle数据库过程中整理出来的,比较详细,适合于初学者。 │ oracle与tomcat端口冲突.txt │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置...
个人在学习ORACLE过程当中记录下来的学习笔记,通俗易懂,适合想快速了解ORACLE基本语法的朋友
Oracle数据库是一种广泛使用的大型关系型...Oracle数据库的学习笔记不仅能帮助初学者快速入门,而且对于中高级用户同样具备参考价值,特别是在学习和记忆数据库的众多命令和语法时,好的笔记可以显著提高学习效率。
本文将结合提供的“oracle学习笔记2013(+安装、卸载)”,分享学习过程中的心得和体验。 ### Oracle安装篇 对于初学者而言,Oracle数据库的安装往往会感到复杂和棘手。不同版本的Oracle对于操作系统有着严格的...
### Oracle超详细学习笔记 #### 一、基本查询与数据操作 ##### 1. 最简单的查询 - **命令示例**: ```sql SELECT * FROM employees; DESC employees; SET LINESIZE 600; SET PAGESIZE 50; ``` - **解释**: ...
【标题】"2011MLDN李兴华Oracle课堂笔记PDF档" 是一份由学习者根据李兴华老师的Oracle教学视频截屏整理而成的学习资料,具有极高的实用价值。李兴华老师在IT行业内以其深入浅出的Oracle教学而闻名,这份笔记几乎与他...
### Oracle学习笔记与教程知识点详解 #### Oracle 9i概览与重要性 **Oracle 9i**,作为Oracle数据库发展史上的一个里程碑,不仅是一个简单的数据库服务器产品,更是一个全面的应用系统运行与开发平台。它标志着...
标准SQL的UNION方法简单且通用,但性能可能不佳;而分析函数则在性能和便捷性之间找到了平衡,特别是对于Oracle数据库,它可以减少开发工作并提供高效的数据处理。 分析函数的基本语法如下: ```sql function_name...
Oracle 学习文档笔记 Oracle 是一种关系型数据库管理系统,它提供了强大的数据存储和管理功能。本笔记将覆盖 Oracle 的基本操作、PL/SQL 编程和数据库操作的相关指令。 数据库基本操作 在 Oracle 中,创建用户、...
### Oracle学习笔记要点 #### 一、SQL Plus的使用方法 - **命令行方式**: 在命令行中直接输入 `sqlplus` 命令,并随后输入用户名和密码。 - **客户端方式**: 使用Oracle提供的SQL Plus客户端工具进行登录。 - **Web...
Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记
### Oracle 学习笔记知识点详解 #### 一、Oracle 数据库简介 Oracle 是一款由美国甲骨文公司开发的关系型数据库管理系统。它以其强大的数据处理能力、高度的安全性及稳定性而闻名于世,在金融、电信、政府等领域...
韩顺平oracle学习笔记 第0讲:如何学习oracle 一、如何学习oracle Oracle目前最流行的数据库之一,功能强大,性能卓越。学习oracle需要具备一定基础: 1.学习过一门编程语言(如:java ,c) 2.最好学习过一门别的...
### Oracle 最全学习笔记知识点梳理 #### 一、存储过程 - **定义**:存储过程是一种在数据库中存储复杂程序以便外部程序调用的一种数据库对象。 - **应用场景**:主要用于执行大量的更新或插入操作,以提高数据库...
在尚学堂马世兵的Oracle课堂笔记中,我们能看到一系列基础的SQL查询语句,这些都是学习Oracle数据库不可或缺的部分。 首先,`DESC`命令用于获取表的结构信息,例如`DESC emp`、`DESC dept`和`DESC salgrade`分别...
在学习和工作中,每个知识点都有不同的掌握程度要求,从简单的理解代码逻辑、到可以独立编写代码、再到深入理解原理和概念。同时,课程也强调了测试、考勤、项目、毕业设计和日志等就业标准,体现了对学员综合素质的...
13. Oracle数据库常用的一些简单命令,例如显示当前日期和时间的命令等。 二、Select From语句 1. Select语句用于从数据库中检索数据。 2. Select语句的基本语法包括SELECT、FROM关键字以及选择的字段列表。 3. 列...