您的位置:首页 > 数据库

"足球论之数据库知识点罗列"

2017-11-04 20:24 399 查看
一、何去除重复行

通过distinct这个字眼

比如select distinct deptno from emp;

二、数据升降序

order by sal desc ;根据降序

select * from emp order by sal asc; 根据薪水升序

三、内置函数

可以理解成Java中的方法,有一定的功能,oracle中函数必须有返回值

四、子查询(嵌套查询):查多次,多个select

五、连接查询

5.1内连接

select e.ename,e.sal,d.dname from dept d inner join emp e

on (d.deptno = e.deptno)

5.2外连接:左外、右外、全外

左外连接: 在内连接的基础上,保证左表的数据都有 (右表的字段用空补全)

select * from dept left outer join emp

on (dept.deptno = emp.deptno)

全外: 左外连接的结果 并上 右外连接的结果 full outer join

5.3交叉连接(笛卡尔积)

交叉连接

select ename,dname from emp,dept ;//1992sql

select ename,dname from dept cross join emp;//1999sql 4*14=56条

5.4自然连接

–相当于内连接

–(1) 以左右两表 相同名称的字段 作为连接条件 相当于加上 on (dept.deptno = emp.deptno)

–(2) 去掉重复的字段 名称相同 类型也相同

select * from dept natural join emp

5.5等值连接(内连接)

select ename,dname from emp,dept

where emp.deptno=dept.deptno;//1992sql 在where语句里直接写表链接条件的语句是sql1992标准

5.6非等值连接

select emp.ename,emp.sal,dept.dname,salgrade.grade from dept inner join emp

on(dept.deptno = emp.deptno) inner join salgrade

on (emp.sal between salgrade.losal and salgrade.hisal)

5.7自关联

SMITH这个人的名字 以及他的经理人的名字

select employee.ename,manager.ename from emp manager inner join emp employee

on(manager.empno=employee.mgr) where employee.ename=’SMITH’

六、视图

视图名一般以v打头createviewvcredit_card

七、伪列 rownum

薪水最高的第六个人到第十个人 (三层嵌套)

select * from

(

select t.*,rownum r from

(select * from emp order by sal desc) t

) where r>=6 and r<=10

八、索引

在where group by order by子句中出现最频繁的列上创建索引

1.唯一性索引

而且主键和unique约束的字段自动加索引,加的是唯一性索引

2.非唯一性索引

其他的索引是非唯一性索引

索引的优缺点:

优点: 加速查询

Where

Group by

Order by

都会提高速度

缺点:

1.修改(往表里增加一条、删除一条..或者是更改信息)的时候效率低(因为不仅要插入记录,而且要同时维护索引)

2.另外索引占空间

九、序列

序列:oracle产生的不间断的一个唯一数字,用来作为主键

create sequence seq_article minvalue 0 start with 0 increment by 1

十、游标

游标是指向结果集的指针,类似迭代器Iterator

一开始指向结果集的第一条记录之前的记录,

每fetch一次往下移动一条记录,返回指针指向的当前记录,

十一、存储过程

预编译的sql语句,执行速度比pl/sql快

create or replace procedure p1(v_deptno in number)

is

cursor c(v_deptno emp.deptno%type) is

select ename,sal from emp where deptno=v_deptnob;

begin

for v_temp in c(v_deptno) loop

dbms_output.put_line(v_temp.ename);

end loop;

end;

begin

p1(10);

end;

存储过程和函数的区别(面试题)

1.存储过程没有返回值,函数必须有返回值的

2.存储过程是执行任务和操作的,而函数只是单单的执行复杂的计算

3.函数 可以用到 select 中,存储过程不能使用在select语句中

十一、函数

函数:类似于js函数 有一定的作用 区别: 必须有返回值

十二、触发器

理解为js中 事件处理函数 按钮.onclick = 事件处理函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐