030天
行百里者半九十,想要在一个行业里成为顶尖人才,一定满足一万小时定律,要想学好JAVA,需要持之以恒不断地努力,每天都要勤思考+善于询问+解决问题!
知识温故而知新>>>>>>
Java中的date类中的常用方法
Java中DateFormat类中常用方法
今天学到的知识>>>>>>
内连接:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。
右连接:right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。
左连接:left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
函数_转换函数
Oracle的转换函数有哪些? 分别有什么作用?
用于在不同数据类型间进行转换. 数值类型, 字符串类型, 日期类型
1 to_number
将字符串转换为数字. 涉及到钱的时候, $123,123,123.00à123123123.00
select to_number('¥123,123,123.00', 'L999,999,999.00')+1 from dual;
2 to_date
将字符串转换为日期
select to_date('2022-12-12 23:20:20', 'YYYY-MM-DD HH24:MI:SS') from dual;
3 to_char
将数字或日期转换为字符串
select to_char(1231231231, 'L999,999,999,999.99') from dual;
select sysdate, to_char(sysdate, 'yyyy"年"mm"月"dd"日" hh24:mi:ss') from dual;
to_number函数中, 格式符号9和0的区别是什么?
9 代表一个数字,0 强迫0显示
函数_通用函数
请说明nvl()和nvl2()两个函数的功能及区别?
NVL2(expr1,expr2,expr3)
功能:如果参数表达式expr1值为NULL,则NVL2()函数返回参数表达式expr3的值;如果参数表达式expr1值不为NULL,则NVL2()函数返回参数表达式expr2的值。
value1和value2要保持字段类型相同。
NVL( string1, replace_with)
功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。
参数value2 value3可以是除了LONG类型之外的任意数据类型。
1 nvl
用来处理空值, 如果某个字段为空, 则使用对应的数据进行替换
查询所有员工的姓名, 工资, 提成和总工资(工资+提成)
select ename, sal, comm, sal+nvl(comm, 0) total from emp;
2 nvl2
有三个参数, 如果第一个参数不为空, 则使用第二个参数, 如果为空, 则使用第三个参数
select ename, sal, comm, nvl2(comm, sal+comm, sal) total from emp;
oracle函数decode用于实现什么功能?
类似于switch...case...,
查询所有的职位, 并显示对应的中文描述
select distinct job, decode(job, 'CLERK', '职员', 'SALESMAN', '销售', 'PRESIDENT', '董事长', 'MANAGER', '经理', 'ANALYST', '分析师') job_zh from emp;
条件表达式有哪些?描述其用法,并举例说明
price>100
price=100
price<100
name like 'pita'
grade <> '0'
bewteen * and *
多表连接查询
请描述什么是多表连接?
用一条select语句检索出存储在多个表中的数据
请描述多表连接的语法?
一、外连接
1.左连接 left join 或 left outer join
SQL语句:select * from student left join score on student.Num=score.Stu_id;
2.右连接 right join 或 right outer join
SQL语句:select * from student right join score on student.Num=score.Stu_id;
3.完全外连接 full join 或 full outer join
SQL语句:select * from student full join score on student.Num=score.Stu_id;
4.自然连接 natural join
SQL语句:Select emp.ename,dept.dname From emp natural join dept;
二、内连接
join 或 inner join
SQL语句:select * from student inner join score on student.Num=score.Stu_id;
此时的语句就相当于:select * from student,score where student.ID=course.ID;
三、交叉连接
cross join,没有where指定查询条件的子句的交叉联接将产生两表的笛卡尔积。
SQL语句:select * from student cross join score;
编写多表连接时需要注意什么原则?
需要添加约束条件,如果有n个表,就需要添加n-1个约束条件,避免出现笛卡尔乘积
SQL99等值连接查询
请描述什么是等值连接,并举例说明
select e.ename, e.job, d.dname from emp e, dept d where e.deptno=d.deptno and d.deptno=10;
SQL99连接查询_外连接
请描述什么是外连接, 什么是内连接?
外连接除了能显示满足连接条件的数据以外, 还用于显示不满足连接条件的数据
外连接有哪些分类?
1 左外连接
left [outer] join, 表示左外连接, 可以显示左表中不满足连接条件的数据
select e.ename, e.job, d.deptno, d.dname, d.loc
from dept d
left join emp e
on e.deptno=d.deptno;
2 右外连接
right [outer] join, 表示右外连接, 可以显示右表中不满足连接条件的数据
select e.ename, e.job, d.deptno, d.dname, d.loc
from emp e
right join dept d
on e.deptno=d.deptno;
3 全外连接
full [outer] join, 表示全外连接, 可以显示左右两表中不满足连接条件的数据
select e1.empno, e1.ename, e2.empno, e2.ename
from emp e1
full join emp e2
on e1.mgr=e2.empno
order by e1.empno;
SQL99_自连接
什么是自连接?
自连接是发生在同一个表格中的连接
使用的过程中需要注意哪些点?
1.如果做自然连接的两个表的有多个字段都满足有相同的字段名称与数据类型,他们那么会被作为自然连接的条件,可能会导致检索出的数据并非是想要的数据。
2.如果自然连接的两个表仅是字段名称相同,但数据类型不同,那么将会返回一个错误。
3.由于oracle中可以进行这种非常简单的自然连接,我们在设计表时,应该尽量在不同表中具有相同含义的字段使用相同的名字和数据类型。以方便以后使用自然连接
SQL92连接查询
内连接, 左连接, 右连接有什么区别?
内连接:内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!& lt;和<>。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
左外连接(left[out(可省去)] jion):两个表分别是A表和B表相关联,使用左外连接查询,结果以左表为主,即左表的记录将全部展现,但是右边只展现与左表有关联的数据
右外连接(right [out] jion):两个表分别是A表和B表相关联,使用右外连接查询,结果以右表为主,即右表的记录将全部展现,但是左边只展现与左表有关联的数据
SQL99_cross join_natural join
什么是交叉连接?什么是自然连接?
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
自然连接:通过两张表中相同名字的列进行关联查询
请解释什么是笛卡尔积?
笛卡尔乘积在SQL中的实现方式既是交叉连接(Cross Join)。所有连接方式都会先生成临时笛卡尔积表,笛卡尔乘积是关系代数里的一个概念,表示两个表中的每一行数据任意组合.假设R中有元组M个,S中有元组N个,则R和S的笛卡尔积中包含的元组数量就是M*N.
SQL99_using_on
请描述using在查询语句中的作用
用来指定进行等值连接的同名字段, 针对自然连接提供的.同名字段依然不能使用表前缀.
请说明什么时候使用on子句
on子句是使用非常广泛的子句, 它可以被用来指定连接的条件. 用于将过滤条件和关联条件分开.