Oracle操作语句摘抄

时间:2024.4.8

在Oracle中查看所有的表:

Select table_name from user_tables; //看用户建立的表 select table_name from user_tables where user=‘‘ 区别。//当前用户的表 select table_name from all_tables; //所有用户的表 select table_name from dba_tables; //包括系统表。


第二篇:Oracle基本语句


Oracle 基本建表语句

--创建用户

create user han identified by han default tablespace

users Temporary TABLESPACE Temp;

grant connect,resource,dba to han; //授予用户han开发人员的权利

--------------------对表的操作--------------------------

--创建表

create table classes(

id number(9) not null sprimary key,

classname varchar2(40) not null

)

--查询表

select * from classes;

--删除表

drop table students;

--修改表的名称

rename alist_table_copy to alist_table;s

--显示表结构

describe test --不对没查到

-----------------------对字段的操作----------------------------------- --增加列

alter table test add address varchar2(40);

--删除列

alter table test drop column address;

--修改列的名称

alter table test modify address addresses varchar(40;

--修改列的属性

alter table test modi

create table test1(

id number(9) primary key not null,

name varchar2(34)

)

rename test2 to test;

--创建自增的序列

create sequence class_seq increment by 1 start with 1 MAXVALUE 999999 NOCYCLE NOCACHE;

select class_seq.currval from dual

--插入数据

insert into classes values(class_seq.nextval,'软件一班')

commit;

--更新数据

update stu_account set username='aaa' where count_id=2;

commit;

--创建唯一索引

create unique index username on stu_account(username); --唯一索引 不能插入相同的数据

--行锁 在新打开的对话中不能对此行进行操作

select * from stu_account t where t.count_id=2 for update; --行锁

--alter table stuinfo modify sty_id to stu_id;

alter table students drop constraint class_fk;

alter table students add constraint class_fk foreign key (class_id) references classes(id);--外键约束

alter table stuinfo add constraint stu_fk foreign key (stu_id) references students(id) ON DELETE CASCADE;--外键约束,级联删除

alter table stuinfo drop constant stu_fk;

insert into students values(stu_seq.nextval,'张三',1,sysdate);

insert into stuinfo values(stu_seq.currval,'威海');

select * from stuinfo;

create table zhuce(

zc_id number(9) not null primary key,

stu_id number(9) not null,

zhucetime date default sysdate

)

create table feiyong (

fy_id number(9) not null primary key,

stu_id number(9) not null,

mx_id number(9) not null,

yijiao number(7,2) not null default 0,

qianfei number(7,2) not null

)

create talbe fymingxi(

mx_id number(9) not null primary key,

feiyong number(7,2) not null, //共7位数字,小数后有两位

class_id number(9) not null

}

create table card(

card_id number(9) primary key,

stu_id number(9) not null,

money number(7,2) not null default 0,

status number(1) not null default 0 --0表可用,1表挂失

)

--链表查询

select c.classname||'_'||s.stu_name as 班级_姓名,si.address from classes c,students s , stuinfo si where c.id=s.class_id and s.id=si.stu_id;

insert into students values(stu_seq.nextval,'李四',1,sysdate);

insert into stuinfo values(stu_seq.currval,'南京');

--函数

select rownum,id,stu_name from students t order by id asc;

--中间表实现多对多关联

--(1 1, 1 n,n 1,n n )

--1 n的描述 1的表不作处理 n的表有1表的字段

--1 1的描述 主外键关联

--n n的描述 中间表实现多对多关联

create table course(

course_id number(9) not null,

couser_name varchar2(40) not null

)

alter table course to couse;

create table stu_couse(

stu_couse_id number(9) primary key,

stu_id number(9) not null,

couse_id number(9) not null

)

create unique index stu_couse_unq on stu_couse(stu_id,couse_id); --唯一学生

create sequence stu_couse_seq increment by 1 start with 1 MAXVALUE 999999 NOCYCLE NOCACHE;

create sequence couses_seq increment by 1 start with 1 MAXVALUE 999999 NOCYCLE NOCACHE;

insert into course values(couses_seq.nextval,'计算机原理');

insert into course values(couses_seq.nextval,'编译原理');

insert into course values(couses_seq.nextval,'数据库原理');

insert into course values(couses_seq.nextval,'数据结构');

insert into course values(couses_seq.nextval,'计算机基础');

insert into course values(couses_seq.nextval,'C语言初步');

commit;

insert into stu_couse values(stu_couse_seq.nextval,1,1);

insert into stu_couse values(stu_couse_seq.nextval,1,3);

insert into stu_couse values(stu_couse_seq.nextval,1,5);

insert into stu_couse values(stu_couse_seq.nextval,1,5);

insert into stu_couse values(stu_couse_seq.nextval,2,1);

commit;

select * from stu_couse;

select * from course;

--select s.stu_name,sc.couse_id, c.couser_name from students s,course c,stu_couse sc where stu_id=1

--select couse_id from stu_couse where stu_id=1

select cl.classname,s.stu_name,c.couser_name from stu_couse sc, students s,course c,classes cl where s.id=sc.stu_id and sc.couse_id=c.course_id and s.class_id=cl.id and s.id=1;

--班级——姓名

select c.classname,s.stu_name from students s,classes c where s.class_id=c.id and s.id=2;

select * from students s where s.id=2

--班级——姓名——课程

select cl.classname,s.stu_name,c.couse_name from stu_couse sc,students s,classes cl,couse c where sc.stu_id=s.id and sc.couse_id=c.couse_id and s.id=26;

--sql 语句的写法,现写出关联到的表,然后写出要查找的字段,第三 写出关联条件 ,记住在写关联到的表时先写数据多的表,这样有助于提高sql的效率

select c.couser_name,s.stu_name from stu_couse sc,students s,course c where

c.course_id=1 and c.course_id=sc.couse_id and sc.stu_id=s.id;

select s.stu_name from students s,stu_couse sc where s.id=sc.stu_id group by s.id,s.stu_name;

select c.classname,count(sc.couse_id) from stu_couse sc,students s,classes c where s.class_id=c.id and s.id=sc.stu_id group by c.classname;

select s.stu_name, count(sc.couse_id) from stu_couse sc,students s,classes cl where s.id=sc.stu_id group by s.id,s.stu_name having count(sc.stu_couse_id)>3;

班级 学生 选课数量

select cl.classname,count(sc.stu_couse_id) from stu_couse sc,students s,classes cl where s.id=sc.stu_id and s.class_id=cl.id group by cl.classname;

--班级 学生 选课数量

select cl.classname,s.stu_name,count(sc.stu_couse_id) from stu_couse sc,students s,classes cl where s.id=sc.stu_id and s.class_id=cl.id group by s.stu_name;

select cl.classname,s.stu_name,count(sc.stu_couse_id) from stu_couse sc ,students s,classes cl where sc.stu_id=s.id and s.class_id=cl.id group by s.id;

select cl.classname,s.stu_name,count(sc.stu_couse_id) from stu_couse sc,students s,classes cl where sc.stu_id=s.id and s.class_id=cl.id group by s.stu_name;

--班级 学生 所选课程id 所选课程名称

--创建试图 目的把表联合起来 然后看成一个表,在与其他的联合进行查询

create view xsxk as select cl.classname, s.stu_name,c.couse_id, c.couse_name from stu_couse

select * from xsxk

sc,students s,classes cl,couse c where sc.stu_id=s.id and sc.couse_id=c.couse_id and s.class_id=cl.id;

create view classstu as select s.id,c.classname,s.stu_name from students s,classes c where c.id=s.class_id;

drop view classstu; --删除视图

select * from classstu;

create view stu_couse_view as select s.id ,c.couse_name from stu_couse sc,students s,couse c where s.id=sc.stu_id and sc.couse_id=c.couse_id;

select * from stu_couse_view;

create view csc as select cs.classname,cs.stu_name,scv.couse_name from classstu cs,stu_couse_view scv where cs.id=scv.id;

select * from csc;

select * from classes cross join students; --全连接,相当于select * from classes,students;

select * from classes cl left join students s on cl.id=s.class_id; --左连接 不管左表有没有 都显示出来

select * from classes cl right join students s on cl.id=s.class_id; --右连接

select * from classes cl full join students s on cl.id=s.class_id; --全连接

insert into classes values(class_seq.nextval,'软件四班');

create table sales(

nian varchar2(4),

yeji number(5)

);

insert into sales values('2001',200);

insert into sales values('2002',300);

insert into sales values('2003',400);

insert into sales values('2004',500);

commit;

select * from sales;

drop table sale;

select s1.nian,sum(s2.yeji) from sales s1,sales s2 where s1.nian>=s2.nian group by s1.nian order by s1.nian desc;

select s1.nian,sum(s2.yeji) from sales s1,sales s2 where s1.nian>=s2.nian group by s1.nian;

s

年 年业绩总和

2001 200

2002 500

2003 900

2004 1400

create table test1(

t_id number(4)

);

create table org(

org_id number(9) not null primary key,

org_name varchar2(40) not null,

parent_id number(9)

);

create sequence org_seq increment by 1 start with 1 MAXVALUE 999999 NOCYCLE NOCACHE;

drop sequence org_seq;

insert into org values(1,'华建集团',0);

insert into org values(2,'华建集团一分公司',1);

insert into org values(3,'华建集团二分公司',1);

insert into org values(4,'华建集团财务部',1);

insert into org values(5,'华建集团工程部',1);

insert into org values(6,'华建集团一分公司财务处',2);

insert into org values(7,'华建集团一分公司工程处',2);

select * from org;

--不正确 不能实现循环

select b.org_id , b.org_name ,b.parent_id from org a,org b where a.org_id=7 and a.parent_id=b.org_id;

select * from org connect by prior parent_id=org_id start with org_id=7 order by org_id; select * from org connect by prior org_id=parent_id start with org_id=1 order by org_id;

create table chengji(

cj_id number(9) not null primary key,

stu_cou_id number(9) not null,

fen number(4,1)

);

insert into chengji values(1,1,62);

insert into chengji values(2,2,90);

insert into chengji values(3,3,85);

insert into chengji values(4,4,45);

insert into chengji values(5,5,68);

insert into chengji values(6,6,87);

commit;

select * from chengji;

select * from stu_couse;

--在oracle 中好像不适用 alter table chengji change stu_cou_id stu_couse_id;alter table shop_jb change price1 price double;

学生姓名 平均分

select s.stu_name,avg(cj.fen) from stu_couse sc,chengji cj,students s where s.id=sc.stu_id and sc.stu_couse_id=cj.stu_couse_id group by s.id,s.stu_name;

select s.stu_name from students s,stu_couse sc,chengji cj where s.id=sc.stu_id and sc.stu_couse_id=cj.stu_couse_id group by s.id,s.stu_name;

select s.stu_name,cj.fen from students s,stu_couse sc,chengji cj where s.id=sc.stu_id and sc.stu_couse_id=cj.stu_couse_id and cj.fen>60;

学生姓名 科目 成绩

select s.stu_name,c.couse_name,cj.fen from stu_couse sc,students s,couse c,chengji cj where sc.stu_id=s.id and sc.couse_id=c.couse_id and sc.stu_couse_id=cj.stu_couse_id and cj.fen>60 order by=;

select * from stu_couse;

--集合运算

--选择了课程3的学生 union 选择了课程5的学生 并集

--选择了课程3 或者 选择了课程5的学生

select s.stu_name from students s,couse c,stu_couse sc where s.id=sc.stu_id and sc.couse_id=c.couse_id and c.couse_id=3

union

select s.stu_name from students s,couse c,stu_couse sc where s.id=sc.stu_id and sc.couse_id=c.couse_id and c.couse_id=5

--选择了课程3,5,2 的学生 intersect 选择课程1,2,4的学生 交集

--求选择了课程 2 并且 选择了课程 3 的学生 交集

select s.stu_name from students s,couse c,stu_couse sc where s.id=sc.stu_id and sc.couse_id=c.couse_id and c.couse_id=2

intersect

select s.stu_name from students s,couse c,stu_couse sc where s.id=sc.stu_id and sc.couse_id=c.couse_id and c.couse_id=3;

--选择了课程3,5,8的学生 minus 选择了课程1,7,8的学生 --差集

-- 求所有课程的成绩都大于 60 的学生 差集

select distinct(s.stu_name) from stu_couse sc,students s,couse c,chengji cj where sc.stu_id=s.id and sc.couse_id=c.couse_id and sc.stu_couse_id=cj.stu_couse_id and cj.fen>60

minus

select distinct(s.stu_name) from stu_couse sc,students s,couse c,chengji cj where sc.stu_id=s.id and sc.couse_id=c.couse_id and sc.stu_couse_id=cj.stu_couse_id and cj.fen<60;

更多相关推荐:
摘抄佳句

1蔚蓝的星球不息旋转壮阔的大海白浪滔天涓涓的小河流过田野乡村和城镇这些都是生命活力的表现2青春的风铃吹开了心扉青春的彩笛吹动了梦想青春的音符带动我奔向希望青春这个美好的季节正是我们播种希望的时候珍惜它把握它让它...

好的摘抄句子

1在一个人逐渐成熟之际为何只能变得更加谨慎呢我想是由于害怕失败的缘故我总是容易忘记我的收获却只记得所有失去的挫折堆叠得很高它摧毁了我全部的信心直到我长大成人后再也没勇气尝试冒险我用前半生努力让自己变成一个成年人...

摘抄名句

小合作要放下态度彼此尊重大合作要放下利益彼此平衡一辈子的合作要放下性格彼此成就不要老揪着别人的缺点不放一定要学会欣赏别的优点互相学习一味地索取不懂付出到最后两手空空共同成长才是生存之道工作如此爱情如此婚姻如此友...

摘抄句子

1当你爱上一个人的时候你也赋予了他伤害你的权2跟自己说声对不起因为总是莫名的忧伤跟自己说声对不起因为曾经为了别人为难自己跟自己说声对不起因为很多东西我没学会好好珍惜跟自己说声对不起因为倔强让自己受伤了生活还在继...

语文 摘抄名句

卞之琳诗选断章你站在桥上看风景看风景人在桥上看你明月装饰了你的窗子你装饰了别人的梦墙头草五点钟贴一角夕阳六点钟挂半轮灯光想有人把所有的日子就过在做做梦看看墙墙头草长了又黄了雨同我天天下雨自从你走了自从你来了天天...

很唯美的摘抄句子

1一个是华丽短暂的梦一个是残酷漫长的现实2逝去的岁月怎么找得回来你曾经的微笑在回忆里却散不开3从前的我没学会哭泣现在的我时常泪流满面4怀表里那张陈旧的照片上有一个说要在天堂和我见面的女人我把她的笑容放在离时间最...

读论语-精华摘抄句

论语学而篇1子曰学而时习之不亦说呼有朋自远方来不亦乐呼人不知而不愠不亦君子乎2有子曰其为人也孝弟而好犯上者鲜矣不好犯上而好作乱者未之有也君子务本本立而道生孝弟也者其为人之本与3子曰巧言令色鲜仁矣4孔子和儒家学说...

摘抄警句1Microsoft Word 文档

命运再好都要经历风雨和黑暗就算再糟上天也会为你预留一片阳光只要你用心找寻就不会永远站在阴霾之下只要是朝着太阳升起的方向走即便在噩梦醒来的时候仍然看得见黎明的曙光真正的爱情要懂得珍惜没有谁和谁是天生就注定在一起一...

一篇很好的唯美句子摘抄

1细数门前落叶倾听窗外雨声涉水而过的声音此次响起你被雨淋湿的心是否依旧2站在寒冬的冷风中漫天的雪花正纷纷扬扬地包裹着这座寒冷的城市想着逝去了的那份真挚的无价情义我忍不住怆然泪下3你在雨中行走你从不打伞你有自己的...

励志美句摘抄

励志美句摘抄1成功需要我们数十年如一日的积累执着的信念坚持不懈的努力最终可以帮助有心人滴水穿石2生活中的烦心琐事就如同空气中的粒粒灰尘我们无法阻止它们进入我们的心田所以我们应该以广阔的胸怀去容纳它们慢慢地静静地...

中学生优美句子摘抄大全

飞跃暑期辅导班初一语文曾丽君187xxxxxxxx1一朵鲜花点缀不出绚丽的春天一个音符谱写不了动人的乐谱一朵浪花汇聚不成浩瀚的大海一颗星星点缀不了寥廓的星空生活的无奈有时并不源于自我别人无心的筑就那是一种阴差阳...

小学生比喻句摘抄

小学生比喻句摘抄优美的比喻句大全为低年级小学生摘抄了一些1细细的春雨就像春姑娘纺出的线一样2弯弯的月亮像一条小船挂在夜空中3茫茫的草原像一张无边无际的地毯4圆圆的池塘就好像一面大镜子5弟弟的脸蛋像苹果一样又圆又...

摘抄句(12篇)