1.数据基础表:
2.简单增删改语句:
insert into t_user(id,username,password,roleid) values(seq_user.nextval,'wind','520',109);
delete from t_user t where t.roleid is null;
update t_user t set t.username='saturn',t.password='456' where t.id=106;
3.查询语句:
1) count|distinct
select count(*) from t_user t; //统计表的记录数
select distinct(t.username) from t_user t; //返回不重复的username
select count(distinct t.username||t.password) from t_user t;
//统计表不重复username和password的记录数
select t.username,count(t.username) from t_user t group by t.username having count(t.username)>1 //统计重复username的:username及其重复次数
2)inner join | outer left join | outer right join
t_t2
a)inner join
Select * from t_t1 a inner join t_t2 b on a.columna=b.columnc;
columnA |
columnB |
columnC |
columnD |
2 |
B |
2 |
X |
b)left outer join
Select * from t_t1 a left outer join t_t2 b on a.columna=b.columnc;
columnA |
columnB |
columnC |
columnD |
1 |
A |
|
|
2 |
B |
2 |
X |
3 |
C |
|
|
c)right outer join
Select * from t_t1 a right outer join t_t2 b on a.columna=b.columnc;
columnA |
columnB |
columnC |
columnD |
2 |
B |
2 |
X |
|
|
4 |
Y |
d)连接三张表:
Select * from (tableA ainner join tableB b on a.id=b.id) inner join tableC c on c.id=tableA.id
3)oracle 分页查询:
select * from (select rownum,t.* from t_user t) where rownum>=1 and rownum<=5;
select * from (select rownum rn,t.* from t_user t order by t.id desc) where rn between 4 and 20;
4)多表查询:
select t.* from t_user t,t_role t1 where t.roleid=t1.id and t1.rolename='管理员';
5)oracle时间的处理:
默认设置时间类型为:date 采用函数 to_date('2010-09-07','yyyy-mm-dd'),或 to_date('2010-9-5 10:00:00','yyyy-mm-dd HH24:MI:SS')
insert into t_log t values(hibernate_sequence.nextval,104,'新建用户114', to_date('2010-9-5 10:56:47','yyyy-mm-dd HH24:MI:SS'));
select t.* from t_log t where cdate between to_date('2010-09-05','yyyy-mm-dd') and to_date('2010-09-07','yyyy-mm-dd')
6)top N等问题:
select t.* from t_user t where rownum<=3 order by t.id ;
//前三最小值
select t.* from t_user t where rownum<=3 order by t.id desc;
//前三最大值
select avg(t.roleid),sum(t.id) from t_user t
//平均值与统计
select t.* from t_log t where t.userid<(select avg(id) from t_user);
//
select t.username,avg(t.roleid) from t_user t group by t.username ;
//统计表中某相同字段username的roleid平均值
select min(t.username),max(t.password) from t_user t
//最大值与最小值
7)字符函数:
select upper(substr(username,1,1))||lower(substr(username,2,length(username)-1)) from t_user
//将t_user表中的username字段内容的第一个字母大写显示,之后的小写显示
8)相关函数
PL/SQL Mod,Ceil,floor,round函数
Mod是求余;
Ceil是取靠近值最大的整数;
floor是取靠近值最大的整数;
round是四舍五入;
select mod(10,3) from dual ---1
select mod(4.1,3.1) from dual ---1
select mod(4.9,3.1) from dual ---1.8
select ceil(10/3) from dual ---4
select ceil(3.1) from dual ---4
select floor(3.1) from dual ---3
select floor(3.9) from dual ---3
select round(3.5) from dual ---4
select round(3.1) from dual ---3
3.oracle笔试题
题目1:显示各门课程的考场数目和可容纳的考生
各数据表结构如下:
表1:课程表 TC
cid 课程id
cname 课程名
Ctype 考试方式
表2:考场表 TR
Roomid 考场id
address 考场地址
Contain 容纳人数
表3:考场课程对应表 TCR
cid 课程id
roomId 考场id
sql:select s.cname,count(s.cname),sum(s.CONTAIN) from (select * from TC c,TR r,TCR cr where cr.cid=c.cid and cr.roomid=r.roomid) s group by s.cname;
写道
题目2:显示考试安排有冲突的考生及考试课程和时间
所谓有冲突,就是指一个考生同一时间(或考试时间有交集)安排了两门及两门以上的考试
表1:课程表 TC
cid 课程id
cname 课程名
Ctype 考试方式
表2:考试表t_exam
eId 考试id
cid 课程id
beginTime 开始时间
endTime 结束时间
表3:考试安排表
studentId 学生id
examId 考试id
1) select distinct(t1.eid),t1.btime,t1.etime from t_exam t1, t_exam t2 where ((t1.btime between t2.btime and t2.etime)
2 or (t1.etime between t2.btime and t2.etime)) and t1.eid!=t2.eid order by t1.eid;
2) select distinct(t1.eid),t1.btime,t1.etime from t_exam t1, t_exam t2 where (t1.btime>t2.btime and t1.btime<t2.etime)
or (t1.etime>t2.btime and t1.etime<t2.etime) or (t1.btime in (select t.btime from t_exam t group by t.btime having count(t.btime)>1)) order by t1.eid;
分享到:
相关推荐
Oracle基础 SQL限定查询和排序PPT学习教案.pptx
oracle sql function
本篇主要介绍Oracle SQL运行环境及SQL语法相关内容。通过本篇的学习,必须掌握ORACLE SQL的使用。如同一个文员必须掌握office的使用一样。 SQL,结构化查询语言,是用于访问关系型数据库的语言,它提供一系列的...
详细介绍了oracle的建表语句 增删改查 内外连接查询 授权用户 建sequence oracle常用内置函数 ddl语句 事务控制语句 tcl 等
Oracle SQL基础培训
Oracle Sql基础(beginning oracle sql中文版)
数据库开发 Oracle数据库 SQL开发教程 第01章 Oracle数据库基础(共60页).pdf 数据库开发 Oracle数据库 SQL开发教程 第02章 编写简单的查询语句(共34页).pdf 数据库开发 Oracle数据库 SQL开发教程 第03章 限制...
oracle、sql语句基础
Oracle_SQL_实用基础教程
oracle 中的SQL语言基础 oracle 中的SQL语言基础
PL/SQL(Procedure Language/Structuer Query Language)是Oracle对标准SQL规范的扩展,全面支持SQL的数据操作、事务控制等。PL/SQL完全支持SQL数据类型,减少了在应用程序和数据库之间转换数据的操作。
Oracle PL SQL语言基础Oracle PL SQL语言基础Oracle PL SQL语言基础Oracle PL SQL语言基础Oracle PL SQL语言基础Oracle PL SQL语言基础
sql语句基础 基本的sql语句 单行函数 子查询 多表查询 组函数
数据库开发 Oracle数据库 SQL开发教程 第01章 Oracle数据库基础(共60页).pdf 数据库开发 Oracle数据库 SQL开发教程 第02章 编写简单的查询语句(共34页).pdf 数据库开发 Oracle数据库 SQL开发教程 第03章 限制...
第三章 ORACLE SQL 单行函数 第四章 从多表中查询数据 第五章 用组函数合计数据 第六章 子查询 第七章 操纵数据 第八章 创建和管理表 第九章 内置约束 第十章 创建视图 第十一章 其他数据库对象 第十二章 控制用户...
PL_SQL_Oracle基础教程PL_SQL_Oracle基础教程PL_SQL_Oracle基础教程
Oracle Database 11g:SQL 基础I 学生指南第1 册 学完本课后,应能完成下列工作: • 阐述本课程的目标 • 列出Oracle Database 11g 的功能 • 从理论和实际实施两方面讨论关系数据库 • 描述RDBMS 和对象关系数据库...
Oracle Sql基础很系统的介绍了oracle,从基本是SQL语句到转换函数,多表查询,操纵数据,事务处理,对表的操作等做了详细讲解,希望能给朋友们带来点帮助。