我的问题库(22/7/10重庆)

建表规范:
1、在设计表的时候不能太冗余
2、不要让一组数据重复出现(不过有的时候确实会舍弃规则换效率)

你知道什么是游标吗?

使用游标之前要先创建游标,然后根据游标查询到的结果集,去调用这个游标,如果要INSERT 插入,插入的数据就是游标抽出的来结果集,用完之后需要关闭游标。

JAVA当中的 instanceof

用来判断这个对象是不是该类型,instanceof只可以用对象,不可以用变量

Person p1 = new Person();
Person p2 = new Man();
Man m1 = new Man();
System.out.println(p1 instanceof Man);    // false
System.out.println(p2 instanceof Man);    // true
System.out.println(m1 instanceof Man);    // true

SQL语句的执行顺序

SQL关键字执行的先后顺序是:首先要执行的是FROM 语句;然后是WHERE 语句,GROUP BY语句;接着是HAVING 语句;最后是ORDER BY语句。

Oracle分页

--查询表中5~10条数据
SQL>SELECT T1.* FROM (SELECT TB_A.*,ROWNUM WL FROM TB_A WHERE ROWNUM <= 10)T1 WHERE WL >= 5;

--如果看不懂的话可以分两个步骤来看一下
--这个是查询TB_A表中的前10条数据
(SELECT TB_A.*,ROWNUM WL FROM TB_A WHERE ROWNUM <=10) T1
--这个是根据查询到的前10条数据用WHERE条件来取到5~10条数据							WL是伪列的意思
SELECT T1.* FROM (SELECT TB_A.*,ROWNUM WL FROM TB_A WHERE ROWNUM <=10) T1 WHERE WL >= 5;

请添加图片描述

Oracle怎么创建序列

CREATE SEQUENCE [序列名]
INCREMENT BY [递增值] //递增的序列值,如果是正数就递增,如果是负数就递减,默认值是1
START WITH [开始值] //开始的值,递增默认是 minvalue,递减默认是 maxvalue
MAXVALUE [最大值]
MINVALUE [最小值]
CYCLE | NOCYCLE //循环 | 不循环
CACHE N | NOCACHE //分配并存入到内存中

**Oracle查看当前序列**

//查看当前序列的值
SELECT [序列名].CURRVAL FROM DUAL;

//序列调用	产生一个新的序列
SELECT [序列名].NEXTVAL FROM DUAL;

**如果第一次直接用[序列名].CURRVAL 来访问序列的话就会报错**

 总结:
1、序列第一次必须先调用NEXTVAL获取一个序列值,才可以用CURRVAL查看当前序列值。 
2、序列的起始值不能小于最小值
3、创建一个循环序列,则不需要设定最大值
4、如果创建带缓存的序列,缓存的值必须满足约束公示:最大值-最小值>=(缓存值-1)*每次循环的值

Oracle中DEFAULT的用法

DEFAULT就是默认值的意思,当你不往里放数据的时候,默认写进去的就是你default的那个值。

Oracle中的NVL()用法

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

例如:SQL> select ename,NVL(comm, -1) from emp;

NVL2函数的格式如下:NVL2(expr1,expr2, expr3)
含义是:如果该函数的第一个参数为null那么显示第二个参数的值,如果第一个参数的值不为null,则显示第三个参数的值。

例如:SQL> select ename,NVL2(comm,-1,1) from emp;

decode比较大小
说明:sign(value)函数会根据value的值为0,正数,负数,分别返回1、-1、0;

sign(x)或者Sign(x)叫做符号函数,其功能是取某个数的符号(正或负):

当x>0,sign(x)=1;

当x=0,sign(x)=0;

当x<0, sign(x)=-1;

在这里插入图片描述

需求:年龄在20以上的显示20以上,20以下的显示20以下,20的显示正好20

SELECT
		T.ID
	, 	T.NAME
	,	T.AGE
	,	DECODE(SIGN(T.AGE - 20))
	,			1
	,			'20以上'-1'20以下'0'正好20'AS SEX 
FROM
	TB_STUDENT T	

结果:

在这里插入图片描述

解析:用到了SIGN这个函数,取T.AGE的正负值,当前的AGE - 20是正数的话就是20以上,当前的AGE - 20 是负数的话就是20以下,如果取到的值是0的话,刚好满20

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是码农lyc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值