一.序列
定义:是oracle数据库专门用来产生连续且自动增长的数字的对象
创建语法:create sequence 序列名(sq_表名) nocache(无缓存)
  create sequence sq_student nocache
使用方法:通过两个属性来访问:nextval(下一个值),currval(当前值)
使用场景:一般是用来维护主键的自动增长:
  insert into student_info values(sq_student.nextval,'哈哈',1,22,null)

二.常用函数:
1.字符函数:
Lower:转换小写
upper:转换大写
length:获取字符串长度
nvl:空值转换

2.数字函数
round:四舍五入的取整
trunc:截取取整,不四舍五入
mod:取余运算 mod(5,2) = 1

3.日期函数:
trunc(日期):截取日期的年月日部分。

4.转换函数:
to_char:转换成字符串 to_char(日期,'yyyy/MM/dd')
to_date:转换成日期
to_number:转换成数字

例:

  1. select sq_student.nextval from dual
  2. select sq_student.currval from dual
  3.  
  4. select * from student_info where length(student_name)=2
  5.  
  6. insert into student_info values(sq_student.nextval,'哈哈',1,22,null)
  7.  
  8. select lower('ABVCDFG') from dual
  9.  
  10. select * from score_info where trunc(score_time)=to_date('2017/12/4','yyyy/MM/dd')
  11.  
  12. select * from score_info where to_char(trunc(score_time),'yyyy/MM/dd')='2017/12/04'
  13.  
  14. select add_date(score_time,2) from score_info
  15.  
  16. insert into score_info values(3,1,100,sysdate,2)
  17.  
  18. select to_char(trunc(score_time),'yyyy/MM/dd') from score_info
  19.  
  20. select to_number('abc') from dual

三.多表连接

作用:是从多表中去获取数据

1.内连接:
特点:只显示完全匹配的数据
语法:
  select a.class_name,b.stu_name,b.stu_age from classinfo a, student b
  where a.class_id=b.class_id;
  select a.class_name,b.stu_name,b.stu_age from classinfo a inner join student b
  on a.class_id=b.class_id;

2.外连接:
会有主从关系,主表信息全部显示,从表中匹配不上的信息以null显示
a.左外联:left join ...on...
b.右外联:right join ...on...
c.全外联:full outer join ...on...
d:简易写法:(+) 加号在哪边,哪边就是从表,加号表示1~多
案例:
  select a.class_name,b.stu_name,b.stu_age from student b ,classinfo a
  where b.class_id(+)=a.class_id;
  select a.class_name,b.stu_name,b.stu_age from classinfo a full outer join student b
  on a.class_id=b.class_id;

3.集合操作
注意:必须是两个查询结果集列数和数据类型相匹配
a.union:拼接两个结果集,去除重复数据
b.union all:完全拼接,不去除重复
c.minus:集合1减去交集部分
d.intersect:取交集部分

4.oracle数据库的sequence(序列)
作用:用来生成连续的且唯一的数字序列,一般用来维护主键
创建序列:create sequence 序列名 nocache 不使用缓存
使用:序列名.currval访问当前值 序列名.nextval获取下一个值
维护主键:insert into classinfo values(seq_classinfo.nextval,'ui1班',1)

5.oracle的伪列(常用来做分页)
a.rownum:反应查询结果集的行序号,用来做行数条件查询
例子:select * from (select stu_name,rownum num_ from student) a where a.num_>=3 and a.num_<=5
b.rowid:是当前行的内存地址

作业:

1.创建四张表:
班级信息表:主键,班级名
学员信息表:主键,姓名,性别,年龄,班级外键
科目信息表:主键,科目名
成绩信息表:主键,成绩,考试时间,学员外键,科目外键
关系:班级和学员1对多,科目和成绩 1对多 学员和成绩是1对多

2.插入数据:用序列来维护主键
班级表两条数据 (1.java1班 2.java2班)
学员表十条数据,其中有两条班级外键为null
科目表4条数据 (1.java 2.oracle 3.j2ee 4.html)
成绩表20条数据,其中有两条数据学员外键为null,然后4号科目没有成绩信息,不一定每一个人都有考试成绩

3.查询
a.查询得到如下报表
班级名 学员名 科目名 成绩 考试时间
b.查询java1班谁没有参加oracle考试的学员信息
select b.class_name,a.student_name,c.score_grade,d.project_name from student_info a
inner join class_info b on a.class_id=b.class_id and b.class_name='java6班'
left join score_info c on a.student_id = c.student_id
inner join project_info d on c.project_id = d.project_id and
d.project_name='java' and c.score_grade is null
c.查询java2班的j2ee考试成绩信息
班级名 学员名 科目名 成绩
d.查询还没有分班的学员信息
e.查询作废的成绩信息,即找不到匹配学员信息的成绩
f.查询考试时间为'2017-7-1'这天的java1班的java考试成绩信息
班级名 学员名 科目名 成绩 考试时间
g.查询成绩信息第10条到20条的数据
select * from (select rownum num_,a.* from score_info a) t where t.num_>=2 and t.num_<=3

四、Oracle 序列、常用函数、多表连接的更多相关文章

  1. 单行函数、表连接(day02)

    回顾: 1.数据库介绍 sql: dql: select dml: insert delete update ddl: create drop alter tcl: commit rollback s ...

  2. Oracle数据库常用函数

    Oracle常用函数: 20.COS返回一个给定数字的余弦SQL> select cos(-3.1415927) from dual;COS(-3.1415927)--------------- ...

  3. 【Oracle】常用函数

    来源自:https://www.cnblogs.com/lxl57610/p/7442130.html Oracle SQL 提供了用于执行特定操作的专用函数.这些函数大大增强了 SQL 语言的功能. ...

  4. Oracle 之 常用函数

    SQL语句根据参数的不同,分为单行函数 和 多行函数. [1] 单行函数:输入是一行,输出也是一行: [2] 多行函数:输入多行数据,输出一个结果. 在执行时,单行函数是检索一行处理一次,而多行函数是 ...

  5. Oracle开发常用函数与存储过程

    create or replace function Fuc_Get_AuthorName(RecID_In in varchar2, AdmID_In in varchar2) return var ...

  6. oracle的常用函数

    1. nvl NVL函数的格式如下:NVL(expr1,expr2) 含义是:如果oracle第一个参数expr1为空,那么显示第二个参数的值为expr2,如果第一个参数的值expr1不为空,则显示第 ...

  7. [转载]oracle的常用函数 instr() 和substr()函数

    在Oracle中 可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符. 在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 语法: instr(sourceString, ...

  8. oracle的常用函数 instr() 和substr()函数

    from:http://1055592535.iteye.com/blog/1676235 在Oracle中 可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符. 在一个字符串中查找 ...

  9. Oracle DBA常用的系统表

    1.2 DBA常用的表1.2.1  dba_开头    dba_users数据库用户信息    dba_segments  表段信息    dba_extents    数据区信息    dba_ob ...

  10. oracle中常用函数

    1.oracle中 trunc 是截取的函数,用在日期类型上,就是截取到的日或时间. select trunc(sysdate) from dual   默认是截取系统日期到日,得到 2012-12- ...

随机推荐

  1. 前端常见算法的JS实现

    1.冒泡排序 function bubbleSort(arr){ var i = 0, j = 0; for(i=1; i<arr.length; i++){ for(j=0; j<=ar ...

  2. Python入门基础之条件判断、循环、dict和set

    Python之if语句 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现: age = 20 if age >= 18: print 'your age is ...

  3. DAY14(PYTHONS)生成器进阶

    def average(): sum = 0 count = 0 avg = 0 while True: #循环 num = yield avg #遇到yield就停止,防止一开始除数为0导致崩溃 s ...

  4. (后端)安装mongodb以及设置为windows服务 详细步骤(转)

    1.在data文件夹下新建一个log文件夹,用于存放日志文件,在log文件夹下新建文件mongodb.log 2.在 D:\mongodb文件夹下新建文件mongo.config,并用记事本打开mon ...

  5. Javascript数组系列三之迭代方法2

    今天我们来继续 Javascript 数组系列的文章,上文 <Javascript数组系列二之迭代方法1> 我们说到一些数组的迭代方法,我们在开发项目实战的过程中熟练的使用可以大大提高我们 ...

  6. Mac上一条命令搭建web服务器

    实际测试工作中偶尔会需要搭建Web服务器环境,由于Mac OS X自带了Apache和PHP环境,只需要简单的启动就可以. 开启Apache 开启Web服务器的方法有两种(默认启动端口号是80): 打 ...

  7. Mysql的NULL和Empty String

    本文基于Mysql5.7版本的参考资料: https://dev.mysql.com/doc/refman/5.7/en/working-with-null.html https://dev.mysq ...

  8. SQL Server "允许远程连接到此服务器" 配置

    在SQL Server的属性-->连接中我们可以看到这样一个选项:'允许远程连接到此服务器'(英文是remote access),其默认值是1,表示此选项开启. 但是这个参数并非是字面上所显示的 ...

  9. c/c++ new delete初探

    new delete初探 1,new有2个作用 开辟内存空间. 调用构造函数. 2,delete也有2个作用 释放内存空间 调用析构函数. 如果用new开辟一个类的对象的数组,这个类里必须有默认(没有 ...

  10. Linux下memcache编译安装与基本使用

    memcache是一套分布式的高速缓存系统,特点为key-value 存储 一.在 linux 编译安装memcache.redis等,需要 gcc,make,cmake,autoconf,libto ...