oracle 序列四个,四、Oracle 序列、常用函数、多表连接

一.序列

定义:是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:转换成数字

例:

select sq_student.nextval from dual

select sq_student.currval from dual

select * from student_info where length(student_name)=2

insert into student_info values(sq_student.nextval,'哈哈',1,22,null)

select lower('ABVCDFG') from dual

select * from score_info where trunc(score_time)=to_date('2017/12/4','yyyy/MM/dd')

select * from score_info where to_char(trunc(score_time),'yyyy/MM/dd')='2017/12/04'

select add_date(score_time,2) from score_info

insert into score_info values(3,1,100,sysdate,2)

select to_char(trunc(score_time),'yyyy/MM/dd') from score_info

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

单行函数、表连接&lpar;day02&rpar;

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

Oracle数据库常用函数

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

【Oracle】常用函数

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

Oracle 之 常用函数

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

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

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

oracle的常用函数

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

&lbrack;转载&rsqb;oracle的常用函数 instr&lpar;&rpar; 和substr&lpar;&rpar;函数

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

oracle的常用函数 instr&lpar;&rpar; 和substr&lpar;&rpar;函数

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

Oracle DBA常用的系统表

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

oracle 日期常用函数&lpar;转载&rpar;

日期运算函數     ADD_MONTHS(d,n)    --时间点d再加上n个月      ex.     select sysdate, add_months(sysdate,2) aa f ...

随机推荐

windows下使用TortoiseGit代替Git命令行操作

windows下使用TortoiseGit代替Git命令行操作 大家在使用svn的时候,都非常喜欢使用小乌龟,也就是TortoiseSVN:那么git也有小乌龟版本,即TortoiseGit. 1.安 ...

linux top动态查看进程信息

来源 top:动态观察程序的变化 [root@linux ~]# top [-d] | top [-bnp] 参数: -d :后面可以接秒数,就是整个程序画面更新 ...

WEB服务器3--IIS7&period;0安装和配置

安装Web服务器(IIS) 点击开始菜单->所有程序->管理工具->服务器管理器,启动服务器管理器,界面如下: 在服务器管理器中,选择角色,你将可以看到角色总视图. 点击添加角色,会 ...

docker 一键安装zabbix server、zabbix agent

基本原理.须知:1.zabbix 分为zabbix server和zabbix agent,其中zabbix server需要web环境,并且其数据存储在独立的数据库中:2.docker是一种容器服务 ...

I&sol;O 模型与 Java

本文主要记录 Java 中 I/O 模型及相关知识点 .另,由于自身知识水平有限,如有不正之处,望各位能够谅解,欢迎批评指正! 一.I/O 基础 由于 Java 中 I/O 相关的 API ,无论是 ...

&lowbar;&lowbar;&lowbar;树形菜单Ztree&period;js显示&period;

----视图@{ Layout = null;}

ZTREE DEMO - be ...

php的四种基本算法

/* 冒泡算法:结果从小到大,规则类似波浪推动的沙滩,先初始阈值为 0,初始第一次波浪之后,如果发现有左值比右边的大,就改变阈值并且完成波浪推动,重新初始化阈值为0,如此往复,直到没有阈值改变的情况出 ...

&period;NET Core开发日志——Global Tools

.NET Core 2.1引入了一个新的功能,Global Tools,其本质是包含控制台应用程序的nuget包,目前而言,还没有特别有用的工具,不过相信随着时间的推移,各种有创意或者实用性强的Glo ...

Codeforces 488B - Candy Boxes

B. Candy Boxes 题目链接:http://codeforces.com/problemset/problem/488/B time limit per test 1 second memo ...

【MySQL】5&period;6&period;x InnoDB Error Table mysql&period;innodb&lowbar;table&lowbar;stats not found

[问题描述]: 检查error log的时候发现大量warnings: [Warning] InnoDB Error Table mysql.innodb_index_stats not found ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值