1. View 就是一个子查询或者就是一张表,视图中的表叫虚表,实际数据依然在实际当中的表里面 .
--Grant user to create view conn sys/oracle as sysdba; grant create table, create view to kenny; conn kenny/kenny1
--求比普通员工的最高薪水还要高的经理人名称 create view v$_manager_employee_id as select distinct manager_id from hr.employees where manager_id is not null select * from v$_manager_employee_id; select first_name,salary from hr.employees where employee_id in (select * from v$_manager_employee_id) and salary > (select max(salary) from hr.employees where salary is not null and employee_id not in (select * from v$_manager_employee_id))
2.Insert 语句
---backup table create table emp as select * from hr.employees; ---insert into --第一种形式:不写字段的名字,直接按照字段的顺序挨着排的往里插 insert into emp values('value1','value2','value3'); --第二种形式:指定某些字段往里插,其他不插的字段默认都是空值 insert into emp (empColumn1, empColumn4) values (60, 'game2'); --第三种形式:从其他表中查询插入,但是查询出来的表结构和要插入的表结构要一致 insert into emp select * from hr.employees;
3.rownum
/* 当你没有进行排序的时候,它默认的顺序是先导进去的先选出来,后导进去的后显示出来 在Oracle里面有一个尾字段叫-->rownum 它是按照1,2,3...进行排列的,它不显示 */ --取前5行 select * from emp where rownum < 5 --取10行以后 不能直接写 where rownum > 10; select * from ( select rownum r,first_name from emp )where r > 10; --求薪水最高的前5个人,首先要先排序再查,再取前五个 select salary from ( select salary from emp where salary is not null order by SALARY desc )where rownum <= 5 --取薪水最高的第6个人---第10个人(重点掌握)--》不论是哪种数据库,这个应用非常广泛 select salary from ( select salary,rownum r from (select rownum r,salary from emp where salary is not null order by SALARY desc ) ) where r >= 6 and r <=10
4.DDL语句 - create table,drop table
-- create student table CREATE TABLE student( SNO Number(4) NOT NULL PRIMARY KEY, SNAME VARCHAR(25)); -- create course table CREATE TABLE course( CNO Number(4) NOT NULL PRIMARY KEY, CNAME VARCHAR(25), CTEACHER VARCHAR(25)); -- create student_course table CREATE TABLE student_course( SNO Number(4) NOT NULL, CNO Number(4) NOT NULL, SCGRADE Number(4)); --注意最后一个列是没有逗号结束的 -- 删除一张表 drop table student_course; --列出2门以上(含2门)不及格学生姓名及平均成绩 select stu.sname,stu.sno, t.avgGrade from student stu join ( select s.sno,avg(sc.SCGRADE) avgGrade from student s join student_course sc on s.sno = sc.sno where s.sno in ( select student.sno from student join student_course on student.sno = student_course.sno where student_course.SCGRADE < 60 group by student.sno having count(student.sno) >= 2) group by s.sno ) t on stu.sno = t.sno
5.constraint 约束
1)NOT NULL 约束只能在列级定义,不能在表级定义
--为约束条件not null起名字为:stu_name_nn CREATE TABLE student( SNO Number(4) constraint stu_name_nn NOT NULL,--列级定义也称内敛定义 SNAME VARCHAR(25));
2)unique 惟一约束列的列值不能重复,但可以为NULL。UNIQUE约束既可以在列级定义,也可以在表级定义
--外部定义"语法要求您指定哪一列(或多列)被约束影响。由于对于列而言不是"内联"的,语句不能够知道您试图约束哪一列,除非在子句中明确将它指定出来。 CREATE TABLE student ( SNO Number(4), SNAME VARCHAR(25), constraint stu_name_nn2 unique (SNO) --表级定义也称外部定义 );
3)PRIMARY KEY 可以理解为: 非空 ,唯一 两个的组合.
主键约束列的列值不仅不能重复,而且也不能为NULL。主键约束既可以在列级定义,也可以在表级定义。一张表最多只能具有一个主键约束,当一个表中的多个列都要为主键是,可以在表级定义.
4) FOREING KEY 要求外部键列的数据必须在主表的主键列(或惟一列)中存在,或者为NULL.FOREING KEY约束既可以在列级定义,也可以在表级定义。
关键字说明:
FOREING KEY:该选项用于指定在表级定义外部键约束。当在表级定义外部键约束时必须指定该选项,在列级定义外部键约束不需要指定该选项
REFERENCES:该选项用于指定主表名及其主键列。当定义外部键约束时,该选项必须指定。
ON DELETE CASCAED:该选项用于指定级联删除选项。如果在定义外部键约束时指定了该选项,那么当删除主表数据时会级联删除从表的相关数据。
ON DELECT SET NULL:该选项用于指定转换相关的外部键值为NULL,如果在定义外部键约束时指定了该选项,那么当删除主表数据时会将从表外部键列的数据设置为NULL。
CREATE TABLE student_course ( SNO Number(4), CNO Number(4), SCGRADE Number(4), CONSTRAINT fk_sno_name FOREIGN KEY(SNO) REFERENCES student(SNO), CONSTRAINT fk_cno_name FOREIGN KEY(CNO) REFERENCES course(CNO) );
5)CHECK 约束既可以在列级定义,也可以在表级定义。CHECK约束允许列为NULL。
CREATE TABLE student_course1 ( SNO Number(4), CNO Number(4), SCGRADE Number(4), CONSTRAINT scgrade_chk CHECK (SCGRADE BETWEEN 0 AND 100) );
约束的管理:
1. 增加约束
如果增加UNIQUE、PRIMARY KEY、FOREIGN KEY 和CKECK 必须使用ALTER TABLE语句的ADD子句;
如果增加NOT NULL约束,那么必须使用ALTER TABLE语句的MODIFY子句,如:
ALTER TABLE table_name ADD [CONSTRAINT constraint_name] constraint_type (column,...);
ALTER TABLE table_name MODIFY column [CONSTRAINT constraint_name] NOT NULL;
2.修改约束名
在同一个方案中,约束名必须惟一,并且约束名也不能与其他对象同名。当用IMPDP工具或者IMP工具导入其他对象时,如发现有同名的对象,将会出错
语法:
ALTER TABLE table_name RENAME CONSTRAINT old_constraint_name TO new_constraint_name;
例:
ALTER TABLE emp01 RENAME CONSTRAINT SYS_C005028 TO ck_emp01_salary;
3. 删除约束
当删除特定表的主键约束时,如果该表具有相关的从表,那么在删除主键约束时必须带有CASCAED选项
语法:
ALTER TABLE table_name DROP CONSTRAINT constraint_name | PRIMARY KEY
例1
ALTER TABLE emp01 DROP CONSTRAINT ck_emp01_salary;
例2
ALTER TABLE dept01 DROP PRIMARY KEY CASCAED
4. 禁止约束
禁止约束指使约束临时失效。当禁止了约束之后,约束规则将不再生效。在使用SQL*LOADER或INSERT装载数据之前,为了加快数据装载速度,应该首先禁止约束,然后装载数据。
语法:
ALTER TABLE table_name DISABLE CONSTRAINT constaint_name [CASCAED];--CASCAED用于指定级联禁止从表的外部键约束
例:
ALTER TABLE emp05 DISABLE CONSTAINT SYS_C00502;
9.3.5 激活约束
语法:
ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;
例:
ALTER TABLE emp05 ENABLE CONSTRAINT SYS_C005022;
9.4 显示约束信息
1.USER_CONSTRAINTS
2.USER_CONS_COLUMNS
相关推荐
### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...
李兴华Oracle全部笔记是一份详细记录了Oracle相关知识的学习资料,涵盖了从基础概念到高级特性的全面讲解。这些笔记可能是李兴华在深入研究Oracle后的心得体会,对于想要学习或提升Oracle技能的人来说是一份宝贵的...
Oracle学习笔记精华版是针对数据库管理系统Oracle的一份重要学习资源,涵盖了从基础概念到高级特性的全面知识。Oracle,作为全球广泛使用的大型企业级数据库系统,对于IT专业人员尤其是数据库管理员(DBA)来说,是...
在"Oracle培训笔记2"中,我们可以看到一系列的课程涵盖了XML基础和多行函数的应用,这些都是Oracle数据库管理和开发中的关键知识点。 XML(可扩展标记语言)在Oracle中的应用非常广泛,特别是在数据交换和存储非...
通过《韩顺平Oracle课堂笔记》,学习者可以系统地学习Oracle数据库,从基础到高级,从理论到实践,逐步提升自己的数据库管理能力。无论是初学者还是经验丰富的开发者,这份笔记都将提供宝贵的参考和指导。
总结来说,Oracle基础学习笔记涵盖了数据库管理的核心要素,从基本的SQL语法到复杂的存储过程和触发器,再到权限控制和递归查询,都是数据库管理员和开发人员必备的知识点。深入理解和熟练运用这些概念,将有助于你...
本文主要探讨Oracle数据库的入门基础知识,特别是与索引相关的概念。 首先,我们要理解ROWID的概念。ROWID是Oracle用于标识表中每一行的一个特殊数据类型,它是一个64位的编码,包含了数据对象编号、文件号、块号...
在Oracle学习笔记中,对安装卸载和配置的详尽讲解,不仅为学习者提供了操作指导,而且还涉及到了数据库管理的一些基础知识点。这些内容对于数据库管理员和开发人员来说都是十分重要的,因为它们是操作Oracle数据库的...
### Oracle基础知识与分类 #### DDL (Data Definition Language) 数据定义语言 - **DDL** 主要用于创建、修改或删除数据库对象,如表、索引等。 #### DML (Data Manipulation Language) 数据操作语言 - **DML** ...
这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...
Oracle数据库是世界上最流行的关系型数据库管理系统之一,...理解这些基本概念和操作是成为Oracle数据库管理员或开发人员的基础。通过不断学习和实践,可以更好地掌握Oracle数据库的精髓,满足各种复杂的企业级需求。
Oracle教程笔记涵盖了数据库管理系统Oracle的核心概念、安装配置、SQL语言基础、PL/SQL编程以及数据库管理等多个方面。这篇笔记旨在帮助初学者系统地理解和掌握Oracle技术。 首先,Oracle是全球最大的企业级数据库...
Oracle 基础学习笔记 本文档是 Oracle 基础学习笔记,旨在帮助初学者学习 Oracle 10g 的基础知识。笔记分为多个部分,包括 Oracle 的体系结构、后台进程、存储模式、数据类型和数据库对象等。 1. Oracle 的体系...
### Oracle 学习笔记概览 在Oracle学习过程中,掌握基础的命令与权限管理是至关重要的。以下内容将围绕Oracle数据库的基础操作、用户管理以及权限控制等方面展开。 ### 基础操作 1. **连接与断开** - 使用`conn...
1. **Oracle基础知识**:首先,笔记可能会介绍Oracle的基本概念,如数据库架构、表空间、数据块等。这包括数据库的创建、启动和关闭,以及如何管理和维护数据库实例。 2. **SQL语言**:Oracle支持结构化查询语言...
3. Oracle数据库的架构和存储结构,例如表空间、段、数据块等概念,对这些基础概念的深入理解对于数据迁移和性能优化至关重要。 4. Oracle的数据备份和恢复技术,因为数据迁移往往需要确保数据的安全性和完整性,...
《Oracle经典笔记》是一份深度探讨Oracle数据库管理系统的综合学习资料。这份笔记涵盖了从Oracle PL/SQL编程到SQL查询语言的广泛主题,旨在帮助读者深入理解Oracle数据库的运作机制和应用技巧。 首先,我们来看看...
超详细Oracle学习笔记,详细记录了oracle的学习过程中遇到的各种问题及基础知识,适合初中级oracle使用人员学习参考。
这种笔记通常包括了课程中的重点概念、Oracle数据库基础知识、实际操作案例以及配合视频教程的习题和答案。对于初学者来说,这是一个很好的学习资源,因为它能够帮助他们通过观看视频和阅读笔记的方式来加深理解。 ...