oracle sql学习四
来源:互联网 发布:mac剪切图片 编辑:程序博客网 时间:2024/05/29 02:17
约束:
什么是约束?
表级约束和列级约束:
①列级约束只能作用在一个列上
②表级约束可以作用在多个列上(当然表级约束也
可以作用在一个列上)
id number(10) constraint emp3_id_nn not null,--创建约束用constraint,emp3_id_nn 是约束的名字
name varchar2(20) not null,--没有名字的约束,oracle自动给名字。
salary number(10,2)
)
not null 只能在列级。
check constraints 里面可以查看某个表的约束。
create table emp4(
id number(10) constraint emp4_id_uk unique,--unique唯一约束
name varchar2(20) not null,
salary number(10,2)
)
create table emp4(
id number(10) constraint emp4_id_uk unique,--列级约束
name varchar2(20) not null,
salary number(10,2),
email varchar2(20),
constraint emp4_email_uk unique(email)--表级约束
)
唯一约束,允许出现多个空值:NULL。
create table emp4(
id number(10) constraint emp4_id_pk primary key,--主键约束 列级
name varchar2(20) not null,
salary number(10,2),
email varchar2(20),
--constraint emp4_id_pk primary key(id)表级
)
主键要求非空不重复(not null 和unique同时满足)
外键约束:
constraint emp4_deptid_fk foreign key(dept_id) references departments(id)--表级
dept_id number(10) constraint emp4_id_fk foreign key references departments(id)--列级
dept_id指向departments表的id
如果是级联删除,departments表的列被删除时,当前表中相应的列被删除,级联置空,就是相应的列被置空。
check约束:
salary number(10,2) check(salary>0 and salary<10000),--没有名字的check约束
salary number(10,2) constraint emp4_sal_ck check(salary>0 and salary<10000),--有名字的check约束
视图:
目 标:
对视图中数据进行增删改,基表中的数据也会有同样的变化。(简单视图)
使用create or replace view 视图名称,可以创建或者修改视图。
没有使用组函数的视图是简单视图,使用了组函数的视图是复杂视图。
简单视图可以进行增删改,并且基表中的数据会变化。
复杂视图不可以进行增删改。
删除视图,用drop view 视图名。
Top-N分析:
SELECT [column_list],ROWNUM
FROM (SELECT [column_list]
FROM table
ORDER BY Top-N_column)
WHERE ROWNUM <= N;
例子:查询工资最高的三名员工:
SELECT ROWNUM as RANK, last_name, salary
FROM (SELECT last_name,salary FROM employees
ORDER BY salary DESC)
WHERE ROWNUM <= 3;
先把排序过的结果当做一个表,然后再用rownum去加where条件。
注意:
对 ROWNUM 只能使用 < 或<=, 而用 =, >, >= 都将不能返回任何数据。
rownum不可以用=,>,>=,我们可以把查询出来的rownum这一列,起个别名,然后当做具体的一列来用。
select *
from (select rownum rn, employee_id, salary
from (select employee_id, salary, last_name
from employees
order by salary desc))
where rn <= 50
and rn > 40
- oracle sql学习四
- Oracle PL/SQL 学习笔记(四)
- Oracle学习(四)--sql及sql分类讲解
- Oracle学习笔记四:SQL语言基础(下)
- oracle 11g PL/SQL Programming学习四
- oracle从入门到精通 之 四.PL/SQL学习
- pl sql 学习笔记(四) merge oracle 用法
- Oracle中SQL语句学习四(DDL语句)
- Oracle中SQL语句学习四(DML语句)
- oracle学习笔记(四)
- oracle 学习(四)
- oracle plsql 学习四
- Oracle学习(四)
- oracle学习笔记四
- oracle 学习笔记四
- oracle学习笔记四
- oracle 学习(四)
- oracle学习笔记(四)
- 设置字符串中某一字为不同的颜色
- 《Linux4.0设备驱动开发详解》笔记--第十三章:Linux块设备驱动
- AndroidStudio应用调试技巧(下)
- Android:通过意图启动其他程序、Uri、setAction、setData、setDataAndType
- java-RCP
- oracle sql学习四
- 《Linux4.0设备驱动开发详解》笔记--第十四章:Linux网络设备驱动
- 【Android Error】Unable to execute dex: Multiple dex files define错误
- 收藏
- Html基础标签了解及用法(一)
- Java之第一个Java程序HelloWorld
- 删除链表的中间节点
- 数据结构课后题目源码
- Yii2中使用自定义的数据库