oracle基础语法大全
-----创建序列
create sequence book_id
INCREMENT BY 1 -- 每次加几个
START WITH 001 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
------创建books表
create table books(
books_id varchar2(1000),
books_name varchar2(100),
price number,
qty number,
pub varchar2(200)
);
------修改books表的字段
alter table books modify(books_id number)
-------------往books表中插入数据
insert into books values(book_id.nextval,'中国文学1',39,12,'人民文学');
insert into books values(book_id.nextval,'中国文学2',30,32,'人民文学');
insert into books values(book_id.nextval,'中国文学3',59,22,'清华大学');
insert into books values(book_id.nextval,'中国文学4',33,52,'清华大学');
insert into books values(book_id.nextval,'中国文学5',99,62,'电子工业');
-----------跟新books中的信息
update books set price=100 where books_id=1
----------按出版社分组查询每个出版社金额的情况
select pub,sum(price*qty) from books group by pub
----------按出版社、书籍名称分组查询每个出版社金额的情况
select pub,books_name,sum(price*qty) from books group by pub,books_name
----------按出版社、书籍名称分组查询每个出版社金额的情况 >50
select pub,books_name,sum(price*qty) from books group by pub,books_name having sum(price)>50
----------查询相同出版社的记录数
select pub,count(pub) from books group by pub having count(pub) >1
-----标的内链接
select eid ,ename,six,name from e,d where a.id=d.id
select eid ,ename,six,name from e join d on a.id=d.id
-----做外连接
select eid ,ename,six,name from e join d on a.id=d.id(+)
----右外连接
select eid ,ename,six,name from e join d on a.id(+)=d.id
----无关子查询
select * from e where id in (select eid from d)
----相关子查询
select * from e where id in (select eid from d where id=d.id and id='003')
select * from e where id not in (select eid from d where id=d.id and id='003')
-----存在则显示
select * from e where exists(select id from d where id=d.id)
-----不存在则显示
select * from e where not exists(select id from d where id=d.id)
-----------------------PLSQL基本语法----------------------------------------------------------------------------------------------------------
set serveroutput on size 10000
declare
x varchar2(100);
begin
x:='This is ....';
DBMS_OUTPUT.PUT_LINE('x value is '||x);
end;
-----if elsif else
declare
a number;
b varchar2(10);
begin
a := 2;
if a = 1 then
b := 'A';
elsif a = 2 then
b := 'B';
else
b := 'C';
end if;
DBMS_OUTPUT.put_line(b);
end;
----------------case
declare
a number;
b varchar2(10);
begin
a := 2;
case
when a = 1 then
b := 'A';
when a = 2 then
b := 'B';
end case;
DBMS_OUTPUT.put_line(b);
end;
-------------------------PLSQL 循环--------------------------------------------
------loop
declare
x number;
begin
x := 1;
loop
x := x + 1;
if x > 3 then
exit;
end if;
DBMS_OUTPUT.put_line(x);
end loop;
DBMS_OUTPUT.put_line(x);
end;
--------------while
declare
x number;
begin
x := 1;
while x > 3 loop
x := +1;
DBMS_OUTPUT.put_line(x);
end loop;
DBMS_OUTPUT.put_line(x);
end;
-------for
begin
for x in 1 .. 10 loop------从小到大
DBMS_OUTPUT.put_line(x);
end loop;
DBMS_OUTPUT.put_line('end of for loop');
end;
begin
for x in reverse 1 .. 10 loop------从大到小
DBMS_OUTPUT.put_line(x);
end loop;
DBMS_OUTPUT.put_line('end of for loop');
end;
----------------做标签
declare
x number;
begin
x := 0;
<<repeat_loop>>
x := x + 1;
DBMS_OUTPUT.put_line(x);
if x < 3 then
goto repeat_loop;
end if;
end;
----------------exception 处理-------------------------------------
declare
test varchar2(100);
begin
select books_name into test from books where books_id = 1;
DBMS_OUTPUT.put_line(test);
exception
when no_data_found then
DBMS_OUTPUT.put_line('没有找到数据');
end;
-----------自定义异常
declare
test varchar2(100);
e exception;
begin
select books_name into test from books where books_id = 1;
if test <> '中国文学1' then
raise e;
end if;
DBMS_OUTPUT.put_line(test);
exception
when e then
DBMS_OUTPUT.put_line('不是需要的书籍名称');
end;
-----------------------记录的声明-------------------------------
declare
type myrecord is record(
bname varchar2(100),
bpub varchar2(100)
);
real_record myrecord;
begin
select books_name,pub into real_record from books where books_id=1;
DBMS_OUTPUT.put_line(real_record.bname || real_record.bpub);
end;
declare
type myrecord is record(
bname books.books_id%type, ---------------声明的字段和表中的字段类型一样
bpub varchar2(100));
real_record myrecord;
begin
select books_name, pub into real_record from books where books_id = 1;
DBMS_OUTPUT.put_line(real_record.bname || real_record.bpub);
end;
declare
myrecord books%rowtype;
begin
select * into myrecord from books where books_id = 1;
DBMS_OUTPUT.put_line(myrecord.books_name || myrecord.pub);
end;
-----------------------游标--------------------
----显示游标的使用方法
declare
cursor mycursor is
select * from books;
myrecord books%rowtype;
begin
open mycursor;
fetch mycursor
into myrecord;
while mycursor%found loop
DBMS_OUTPUT.put_line(myrecord.books_name || myrecord.pub);
fetch mycursor
into myrecord;
end loop;
close mycursor;
end;
------带参数的游标
declare
cursor mycursor(bookid number) is
select * from books where books.books_id = bookid;
myrecord books%rowtype;
begin
open mycursor(1);
fetch mycursor
into myrecord;
while mycursor%found loop
DBMS_OUTPUT.put_line(myrecord.books_name || myrecord.pub);
fetch mycursor
into myrecord;
end loop;
close mycursor;
end;
------使用for做游标的循环
declare
cursor mycursor(bookid number) is
select books_name from books where books.books_id=bookid;
begin
for cur in mycursor(1) loop
DBMS_OUTPUT.put_line(cur.books_name);
end loop;
end;
----is open
declare
bookname books.books_name%type;
cursor mycursor(booksid number) is
select books_name from books where books_id = booksid;
begin
if mycursor%isopen then
DBMS_OUTPUT.put_line('cursor is opened');
else
open mycursor(1);
end if;
fetch mycursor
into bookname;
close mycursor;
dbms_output.put_line(bookname);
end;
-------rowcount
declare
bookname books.books_name%type;
cursor mycursor is
select books_name from books;
begin
open mycursor;
loop
fetch mycursor
into bookname;
exit when mycursor%notfound or mycursor%notfound is null;
DBMS_OUTPUT.put_line(mycursor%rowcount);
end loop;
close mycursor;
end;
-----游标跟新数据
declare
cursor mycursor is
select books_name from books for update;
text varchar2(100);
begin
open mycursor;
fetch mycursor
into text;
while mycursor%found loop
update books
set books_name = books_name || '_t'
where current of mycursor;
fetch mycursor
into text;
end loop;
close mycursor;
end;
----------------隐式游标 不需要声明
begin
for cur in (select books_name from books) loop
DBMS_OUTPUT.put_line(cur.books_name);
end loop;
end;
--------------------存储过程------------------------------------------------------------------
create or replace procedure getBookNameById(bookid in number) is
bookname varchar2(100);
begin
select books_name into bookname from books where books_id = bookid;
--select books_name from books where books_id=1;
dbms_output.put_line(ookbname);
end;
end getBookNameById;
-----
begin调用过程
test.getBookNameById(1);
end;
----调用过程
execute test.getBookNameById(1);
-----显示某个存储过程的错误信息
show errors procedure getBookNameById;
分页:
SELECT * FROM
(
SELECT A*, ROWNUM RN
FROM (SELECT * FROM books) A
)
WHERE RN BETWEEN 1 AND 5
oracle基础语法大全的更多相关文章
- ORACLE| ORACLE基础语法汇总
创 ORACLE| ORACLE基础语法汇总 2018-07-18 16:47:34 YvesHe 阅读数 9141更多 分类专栏: [数据库] 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
- [SQL] Oracle基础语法
1.安装: oracle11g server 这里的口令为sys和system的密码.(10版本以前默认用户会有系统默认密码.) Oracle 11g 默认用户名和密码 oracle11g clien ...
- MarkDown基础语法大全
一.MarkDown是什么? Markdown是一种轻量级的「标记语言」,创始人为约翰·格鲁伯,用简洁的语法代替排版,目前被越来越多的知识工作者.写作爱好者.程序员或研究员广泛使用.其常用的标记符号不 ...
- sql基础语法大全 转载过来的,出处忘了!
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...
- oracle 基础语法(二)
一.实现分页 说明以下tablename是同一表.这些操作是对同一表(tablename)的操作 ======================================= 如何实现分页提取记录 ...
- Oracle基础语法
--表create table tb_myTable( mname vardhar2(30), pwd varchar2(30)); --存储过程create or replace procedure ...
- Oracle基础语法 一
表空间操作 1.创建一个表空间 create tablespace emp(空间名) datafile 'emp.dbf' size 10M autoextend on ; →表空间名字 / 物 ...
- Oracle常用基础语法(未完待补和操作)
这篇博客主要是Oracle常用基础语法, 另外,存储过程和存储函数很重要,这个后期看视频学习,还有DB优化,另外,还有plsql develop和navicat的使用,重点是数据的导入导出: ---- ...
- SQL操作数据——SQL组成,查询基础语法,where,Oracle常用函数等
SQL组成 DML数据操作语言 DCL数据控制语言 DQL数据查询语言 DDL数据定义语言 查询基础语法 记录筛选 where 子句 记录筛选 where 子句 实例练习 实例练习 Select语句中 ...
随机推荐
- NOIp 2011 mayan游戏 搜索
题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指在规定 ...
- WingIDE中文乱码问题解决方法
WingIDE中文乱码问题解决方法 安装完WingIDE后,首次运行python脚本时,若脚本中含有UTF-8中文,在Debug I/O输出框中,全部变成了乱码. 这时其实我们设置下WingIDE的编 ...
- compile vim with lua & python support
vim在macosx 10.9默认没有带lua和python支持,因为装的有些插件是lua写的,有些是python写的,运行不起来,于是决定自己编译一个,下载vim源码,执行以下命令就可以编译vim: ...
- pwnable echo2
pwnable echo2 linux 32位程序 涉及FSB和UAF漏洞的利用,先%x泄露地址,然后利用UAF漏洞进行利用 code:
- 关于VS2010无法编译问题
cvtres.exe 近来遇到无法编译问题,编译后debug之类文件全部为空,纠结好久才发现还是一个以前遇到解决过的问题...= = C:\Windows\Microsoft.NET\Framewor ...
- 跟我学Windows Azure 五 使用Cloub Service连接Blob Service完成图片的上传
首先,我们创建一个云服务项目,用来演示我们的blob存储 下来我们修改我们我们云服务的名字 我们需要添加一个空的WebForm的项目 点击完成,我们可以看到我们的解决方案已经添加完成 下来我们需要添加 ...
- 总是弹出visual studio 实时调试器 三种解决办法
最近服务器老是弹出visual studio 实时调试器很是郁闷呀.关还关不掉.怎么解决呢 ,现像如下图所示: 下面我们一起来分析一下这种情况的原因: 弹出应用程序: Visual Studio 实时 ...
- eclipse svn插件地址
http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240
- 概念:P制,N制,奇场,偶场,隔行扫描,逐行扫描
转帖: 场的概念原于电视,电视由于要克服信号频率带宽的限制,无法在制式规定的刷新时间内(PAL制式是25fps)同时将一帧图象显现在屏幕上,只能将图象分成两个半幅的图像,一先一后地显现,由于刷新速度快 ...
- 获取广告标识符ifad
#import <AdSupport/ASIdentifierManager.h> NSString *adId =[[[ASIdentifierManager sharedManager ...