oracle 练习一:
CREATE TABLE ORDERS (
"ID" VARCHAR2(10) NOT NULL,
"PRODUCTID" VARCHAR(10) NOT NULL,
"QUANTITY" NUMBER(10),
"PRICE" NUMBER(10),
"USERID" VARCHAR(10),
"ORDERDATE" DATE DEFAULT sysdate,
PRIMARY KEY("ID")
) ;
CREATE TABLE PRODUCT
(
"ID" VARCHAR(10) NOT NULL,
"NAME" VARCHAR(10) NOT NULL,
"PRICE" NUMBER(10),
PRIMARY KEY("ID")
);
INSERT INTO PRODUCT(ID,NAME,PRICE) VALUES('1','CAT',50);
INSERT INTO PRODUCT(ID,NAME,PRICE) VALUES('2','DOG',25);
INSERT INTO PRODUCT(ID,NAME,PRICE) VALUES('3','FISH',42);
INSERT INTO PRODUCT(ID,NAME,PRICE) VALUES('4','PIGEON',34);
INSERT INTO ORDERS(ID,PRODUCTID,QUANTITY,PRICE,USERID) VALUES('1','1',2,50,2);
INSERT INTO ORDERS(ID,PRODUCTID,QUANTITY,PRICE,USERID,ORDERDATE) VALUES('1','4',2,34,2,TO_DATE('2008-04-16','yyyy-mm-dd'));
INSERT INTO ORDERS(ID,PRODUCTID,QUANTITY,PRICE,USERID,ORDERDATE) VALUES('4','1',20,150,3,TO_DATE('2008-02-18','yyyy-mm-dd'));
INSERT INTO ORDERS(ID,PRODUCTID,QUANTITY,PRICE,USERID) VALUES('4','1',2,50,1);
INSERT INTO ORDERS(ID,PRODUCTID,QUANTITY,PRICE,USERID) VALUES('5','4',1,34,1);
INSERT INTO ORDERS(ID,PRODUCTID,QUANTITY,PRICE,USERID) VALUES('6','3',3,42,1);
SELECT id, TRUNC((SYSDATE - orderdate)/365) FROM orders;
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select userid, sum(price*quantity) from orders group by userid;
select a.id,a.username,b.id,b.userid from users a,orders b where a.id=b.userid
select o.id as 订单号, u.username as 用户名, o.price as 产品价格 from orders o,users u where o.userid=u.id;
--查询订单号,订单产品名称,用户名,订单价格,每种商品购买总额
select o.id,p.name,p.price,p.price*o.quantity from orders o, users u, product p
where o.userid=u.id and o.productid=p.id
select * from product where id = (select productid from orders where userid=1 and productid=4);
--查询 查询任意一个用户,订单行内小计超过100元,
--检索订单总额最大的用户
select * from users where id =
(
select userid from
(
select userid, sum(price*quantity) as total
from orders group by userid order by total desc
)
where rownum=1
);
select * from product where id in (select productid from orders);
select * from users where id in(select userid from orders);
oracle练习二
--批量执行
start d:\*.sql;
--查看大字短的大小
SELECT DBMS_LOB.GETLENGTH(MYCLOB) FROM ATTACHMENT;
SELECT DBMS_LOB.GETLENGTH(MYBLOB) FROM ATTACHMENT;
--设置控制台尺寸
set linesize 150;
--创建新表
CREATE TABLE ORDER1
(
"ID" VARCHAR(10) NOT NULL,
"PRODUCTID" VARCHAR(10) NOT NULL,
"QUANTITY" VARCHAR(10) NOT NULL,
"PRICE" NUMBER(10),
PRIMARY KEY("ID")
);
--插入多行记录
insert into orders5 (id,productid,quantity)
(
select id,productid,quantity from orders where quantity>1
);
select * from orders5;
--复制表
create table orders2 as
(
select id,userid,quantity,price from orders
);
--根据多个表中的某些指定列建立一个新表,并写入符合条件的数据
create table orders3
as
(
select u.id,o.price,o.quantity from orders o,users u where u.id=o.userid
);
--撤消
rollback;
--创建保存点
savepoint abc35;
savepoint abc36;
savepoint abc37;
--回退到指定点
rollback to abc36
--更新多行
update orders3 set price=45 where quantity between 2 and 3;
--嵌套更新<将原表的一空列更新成此表的一指定列计算结果更新至空列>
update order1 set price=
(
select quantity+100 from order1 where id=1
)
where id=1;
--两张表的嵌套更新
update order1 set price=
(
select o.price+200 from orders3 o,order1 r where o.id=2 and r.id=2
)
where id in(3,5);
--删除记录
delete from orders where id=1;
--删除表快速删除表数据
advantage tabelname;
--删除后不能恢复
disadvantage tablename;
truncate table tablename;
--创建序列
create sequence mysequence start with 1;
查看序列表
select * from user_sequences;
--为列
select user from dual;
--访问序列
select mysequence.nextval from dual;
--插入记录
insert into product(id,name,price) values(mysequence,nextuval,'aaa',45);
--查看当前使用的最大的序列值
select mysequence.currval from dual;
insert into products(pid,name,price) values(mysequence.nextval,'bb',145);
insert into orders(id,productid,quantity,price,userid) values(mysequence.nextval,mysequence.nextval,45,100,1);
--查看当前使用的最大序列值
select mysequence.currval from products;
select mysequence.nextval from products;
--查看当前时间和下单时间
select id,orderdate,sysdate from orders;
--删除一行记录
delete from orders5 where id=1;
--删除整表的内容
truncate table orders5;
//创建用户
CREATE USER "CM" PROFILE "DEFAULT"
IDENTIFIED BY "1234" DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "USERS"
ACCOUNT UNLOCK;
--绑定角色<授权>
GRANT "CONNECT" TO "CM";
--创建视图
create view viewname as sql_command;
create or replace view viewtest as select * from
--创建视图
create or replace view myview as select o.id,p.price from orders o,products p where p.pid=o.productid;
--从多张表中取出用户名,用户所购买的产品名称,购买产品的价格,产品的数量,用户的email地址,用户的下单时间(日:时:分),用户的注册日期
--并把上述结构创建为视图。
create or replace view myview as
select o.id,u.name,p.names,p.price,o.quantity,u.email,o.orderdate,u."regdate" from orders o,products p,users u where o.id=p.pid and o.id=u.id;
update users set "regdate"=to_date('2008-10-10 21:21') where id in(1,2,3,4,5,6,7,8,9,10);
--使SQLPLUS控制台可以输出
set serveroutput on
set serveroutput off
--控制台输出
declare
begin
dbms_output.put_line('this is ');
end;
/
declare
aaa varchar2(100);
begin
dbms_output.put_line((2+3)*6);
end;
/
--存储过程
create or replace procedure
proname
(id in number) as names varchar(10);
begin
insert into products(pid,names,price) values(mysequence.nextval,'xiaoliu',123);
end;
/
--运行
execute proname(23);
create or replace procedure
pro
(mynum in number) as str varchar(10);
begin
select count(*) into str from products;
dbms_output.put_line(str);
end;
/
--查询products表大于输入price的总个数
create or replace procedure mypro1(prprice in number)
as
total real;
begin
select count(*) into total from products where price>prprice;
dbms_output.put_line(total);
end;
/
--插入一行记录
insert into products(pid,names,price) values(mysequence.nextval,'aaa',45);
create or replace procedure mypro2(userid in number)
as
buffer varchar2(100);
status INTEGER;
usernames char(100);
begin
select name into usernames from users where id='1';
dbms_output.enable(20000);
dbms_output.put_line('user:' || usernames);
end;
--赋值语句< := >
create or replace procedure mypro4(w in integer,h in integer)
as
width integer :=w;
hight integer :=h;
area real;
begin
area :=(width+hight)*2;
dbms_output.put_line('area=' || area);
end;
/
--条件语句<if .. then ... end if>
create or replace procedure myro5(num in integer) as
n integer :=num;
begin
if n=5 then
dbms_output.put_line('ok');
else
dbms_output.put_line('not equals');
end if;
end;
/
--循环<while ** loop *** end loop; for * in ***loop end loop;>
create or replace procedure mypro6(n in integer) as
con integer :=0;
begin
dbms_output.put_line('while loop.=========');
while con<n loop
dbms_output.put_line(con);
con :=con+1;
end loop;
dbms_output.put_line('for loop ==========');
con :=0;
for con in 1..n loop
for con in n..1 loop
dbms_output.put_line('*');
end loop;
end loop;
end;
/
--游标cursor
create or replace procedure mypro7(w in integer) as
id products.pid%type;
name products.names%type;
price products.price%type;
cursor cursors is
select
pid,names,price
from products where price>w order by pid;
begin
open cursors;
loop
fetch cursors into id,name,price;
exit when cursors%notfound;
dbms_output.put_line('id:' || id || 'name:' || name || 'price:' || price);
end loop;
close cursors;
end;
/
--函数function
create or replace function prices
(
proprice in number
)
return integer
is
pricecount integer;
begin
select count(price) into pricecount from product where price>proprice;
if(pricecount >0) then
return pricecount;
else
return 0;
end if;
end prices;
declare
counter number := 0;
begin
counter := prices(30);
if counter >0 then
dbms_output.put_line('counts:'||counter );
else
dbms_output.put_line('counts:'||counter );
end if;
end;
/
create table journal(
id integer not null,
username varchar(20),
operation varchar(30),
operatetime date,
primary key(id)
);
create sequence sequ start with 1 maxvalue 999;
create or replace trigger sparks
after insert or update or delete
on orders2
declare
operation journal.operation%type;
begin
if inserting then
operation :='insert';
elsif updateing then
operation :='update';
elsif deleteing then
operation :='delete';
else
operation :='unknown';
end if;
dbms_output.put_line(operation);
insert into journal values(sque.nextval,user,operation,sysdate);
dbms_output.put_line('success');
end;
/
select o.id,p.name||'的数量是:'||o.quantity,p.productid,p. price from order1 o,product p where o.productid=p.productid
select * from order1 o,product p where o.productid(+)=p.productid
select o.id,o.quantity,p.name,p.price from order1 o natural join product p
select o.id,o.quantity,p.name,p.price from order1 o join product p using(productid) where productid=2
select o.id,p.name||'的数量是:'||o.quantity,p.productid,p. price from order1 o cross join product p where o.productid=p.productid
natural join natural join natural join
select * from order1 o left join product p on o.productid=p.productid
select * from order1 o right join product p on o.productid=p.productid
load data local infile 'd:/sql.txt' into table person;
按时间查询
select * from site_gameplayer where createTime BETWEEN '2009-07-23 00:00:00' and '2009-07-23 23:59:59'
分享到:
- 2008-06-28 02:11
- 浏览 892
- 评论(0)
- 论坛回复 / 浏览 (0 / 2304)
- 查看更多
相关推荐
这个“适合新手的Oracle练习题集合”旨在帮助初学者巩固理论知识,提高实践技能,同时通过解决实际问题,如安全认证和转账问题,加深对Oracle数据库的理解。 1. **SQL基础**:在Oracle中,SQL(结构化查询语言)是...
这里提到的"ORACLE练习的三个表 emp dept salgrade"是指Oracle数据库中的经典示例表,它们常用于教学和实战演练。这三个表分别是: 1. **EMP** 表:这是一个员工信息表,通常包含以下字段: - `EMPNO`:员工编号,...
这份"Oracle练习题初学者适用"的压缩包提供了一系列的DOC文件,旨在帮助初学者系统地学习和巩固Oracle的相关知识。 首先,我们可以从“Oracle习题”这个文件名推测,这些文档可能包含了各种类型的题目,如选择题、...
Oracle数据库安装完毕,自带有很实用的练习用表:DEPT、EMP、BONUS、SALGRADE。很方便练习。 但是MySQL数据库安装完毕,却没有练习用表。 特此,把Oracle这4个练习用表的建表语句,分别用Oracle语句和MySQL语句写...
针对大三学生的学习需求,这份“各种Oracle练习(习题+答案)”的资源提供了全面的复习材料,涵盖了Oracle数据库的基础知识到高级概念,旨在帮助学生巩固理论知识,提升实际操作技能,以应对考试或未来的职业需求。...
Oracle数据库自带的数据库练习表MySQL版。包含(EMP、DEPT、BONUS、SALGRADE、DUMMY)
这个"学习oracle练习sql脚本.zip"文件显然是为那些希望深入理解和掌握Oracle数据库及SQL语法的人准备的。 在Oracle中,SQL被用来创建和操作数据库对象,如表、视图、索引等,以及查询、更新和管理存储在数据库中的...
从给定的Oracle练习题目中,我们可以提炼出一系列重要的数据库操作和SQL技能点,这些技能对于初学者来说至关重要。下面是对这些知识点的详细说明: ### 基本SQL查询 这是学习SQL的基础,涉及到如何使用`SELECT`, `...
在"oracle练习题关于触发器的作业"中,你可能需要设计和实现各种类型的触发器来解决实际问题。例如,你可能需要创建一个触发器来确保表中的某个字段始终具有唯一的值,或者在更新记录时自动更新另一相关表的数据。 ...
3.如何在Oracle服务器上通过SQLPLUS查看本机IP地址 ? select sys_context('userenv','ip_address') from dual; 如果是登陆本机数据库,只能返回127.0.0.1 4.如何给表、列加注释? SQL>comment on table 表 is '表...
"精英班Oracle练习"这个压缩包文件显然包含了针对Oracle数据库系统的学习材料,可能是练习题、案例分析或者教程文档,旨在帮助学员提升Oracle相关的技能。下面将详细讨论Oracle数据库的一些核心知识点。 1. **...
本示例"java oracle练习例子"旨在提供一个基础的Java程序,演示如何使用JDBC(Java Database Connectivity)API连接到Oracle数据库,执行SQL查询,并处理返回的结果集。下面我们将深入探讨这个主题。 首先,为了...
本资料集中的“经典Oracle练习题”旨在帮助你巩固Oracle的基础知识,提高解决实际问题的能力,同时也为面试做好充分准备。 1. **SQL查询基础** - 学习如何使用SELECT语句进行数据检索,包括基本的SELECT语句,如...
这个"oracle练习题.zip"压缩包包含了一些关于Oracle数据库操作的练习资料,主要关注查询语句和基本的数据操作。 首先,"table.sql"文件很可能是创建数据库表的SQL脚本。在Oracle中,创建表是数据库设计的基础,它...
根据提供的Oracle练习题答案及其描述,我们可以逐一解析并总结出其中涉及的重要知识点: ### 1. 查询所有学生信息以及所有课程信息 ```sql select * from student; select * from course; ``` - **知识点**: `...
"我的Oracle练习"这个压缩包文件显然包含了针对Oracle数据库初学者的一些练习题目,旨在帮助新手熟悉Oracle的基本操作和概念。"oracle1-9小练习"的标签表明这可能是一个逐步进阶的系列练习,涵盖了从基础到稍高级别...
这些练习题涵盖了Oracle数据库的基本查询技巧,包括子查询、连接操作、聚合函数、条件判断以及各种内置函数的使用。通过解决这些问题,可以深入理解Oracle SQL和PL/SQL的用法,并提升在实际数据库管理中的技能。
根据给定的Oracle练习题,我们可以提取出一系列与Oracle SQL相关的知识点。这些知识点不仅包括了基本的表结构创建、数据插入等操作,还涉及到了较为复杂的查询语句编写。接下来,我们将逐一分析并解释这些知识点。 ...
在"Oracle练习"中,我们可以深入学习Oracle的各种特性和功能,包括SQL查询、数据库设计、事务管理、索引优化、存储过程、触发器、视图、备份与恢复等关键知识点。 1. SQL查询:SQL(Structured Query Language)是...