`
luhantu
  • 浏览: 204520 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle 基础笔记(二)

阅读更多

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学习笔记 PDF

    ### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...

    李兴华Oracle全部笔记

    李兴华Oracle全部笔记是一份详细记录了Oracle相关知识的学习资料,涵盖了从基础概念到高级特性的全面讲解。这些笔记可能是李兴华在深入研究Oracle后的心得体会,对于想要学习或提升Oracle技能的人来说是一份宝贵的...

    Oracle学习笔记精华版

    Oracle学习笔记精华版是针对数据库管理系统Oracle的一份重要学习资源,涵盖了从基础概念到高级特性的全面知识。Oracle,作为全球广泛使用的大型企业级数据库系统,对于IT专业人员尤其是数据库管理员(DBA)来说,是...

    oracle培训笔记2

    在"Oracle培训笔记2"中,我们可以看到一系列的课程涵盖了XML基础和多行函数的应用,这些都是Oracle数据库管理和开发中的关键知识点。 XML(可扩展标记语言)在Oracle中的应用非常广泛,特别是在数据交换和存储非...

    韩顺平oracle课堂笔记

    通过《韩顺平Oracle课堂笔记》,学习者可以系统地学习Oracle数据库,从基础到高级,从理论到实践,逐步提升自己的数据库管理能力。无论是初学者还是经验丰富的开发者,这份笔记都将提供宝贵的参考和指导。

    oracle基础笔记整理

    总结来说,Oracle基础学习笔记涵盖了数据库管理的核心要素,从基本的SQL语法到复杂的存储过程和触发器,再到权限控制和递归查询,都是数据库管理员和开发人员必备的知识点。深入理解和熟练运用这些概念,将有助于你...

    oracle学习笔记-入门基础

    本文主要探讨Oracle数据库的入门基础知识,特别是与索引相关的概念。 首先,我们要理解ROWID的概念。ROWID是Oracle用于标识表中每一行的一个特殊数据类型,它是一个64位的编码,包含了数据对象编号、文件号、块号...

    Oracle学习笔记.pdf

    在Oracle学习笔记中,对安装卸载和配置的详尽讲解,不仅为学习者提供了操作指导,而且还涉及到了数据库管理的一些基础知识点。这些内容对于数据库管理员和开发人员来说都是十分重要的,因为它们是操作Oracle数据库的...

    Oracle课堂笔记(很全很详细的Oracle笔记)

    ### Oracle基础知识与分类 #### DDL (Data Definition Language) 数据定义语言 - **DDL** 主要用于创建、修改或删除数据库对象,如表、索引等。 #### DML (Data Manipulation Language) 数据操作语言 - **DML** ...

    oracle_sql笔记

    这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...

    Oracle数据库笔记大全

    Oracle数据库是世界上最流行的关系型数据库管理系统之一,...理解这些基本概念和操作是成为Oracle数据库管理员或开发人员的基础。通过不断学习和实践,可以更好地掌握Oracle数据库的精髓,满足各种复杂的企业级需求。

    oracle教程笔记

    Oracle教程笔记涵盖了数据库管理系统Oracle的核心概念、安装配置、SQL语言基础、PL/SQL编程以及数据库管理等多个方面。这篇笔记旨在帮助初学者系统地理解和掌握Oracle技术。 首先,Oracle是全球最大的企业级数据库...

    Oracle学习笔记 Oracle学习笔记

    ### Oracle 学习笔记概览 在Oracle学习过程中,掌握基础的命令与权限管理是至关重要的。以下内容将围绕Oracle数据库的基础操作、用户管理以及权限控制等方面展开。 ### 基础操作 1. **连接与断开** - 使用`conn...

    李兴华—oracle课堂笔记(全).rar

    1. **Oracle基础知识**:首先,笔记可能会介绍Oracle的基本概念,如数据库架构、表空间、数据块等。这包括数据库的创建、启动和关闭,以及如何管理和维护数据库实例。 2. **SQL语言**:Oracle支持结构化查询语言...

    ORACLE DBA工作笔记 运维数据迁移与性能调优

    3. Oracle数据库的架构和存储结构,例如表空间、段、数据块等概念,对这些基础概念的深入理解对于数据迁移和性能优化至关重要。 4. Oracle的数据备份和恢复技术,因为数据迁移往往需要确保数据的安全性和完整性,...

    oracle经典笔记

    《Oracle经典笔记》是一份深度探讨Oracle数据库管理系统的综合学习资料。这份笔记涵盖了从Oracle PL/SQL编程到SQL查询语言的广泛主题,旨在帮助读者深入理解Oracle数据库的运作机制和应用技巧。 首先,我们来看看...

    oracle学习笔记.txt

    超详细Oracle学习笔记,详细记录了oracle的学习过程中遇到的各种问题及基础知识,适合初中级oracle使用人员学习参考。

    2011Oracle笔记(李兴华视屏教程笔记)

    这种笔记通常包括了课程中的重点概念、Oracle数据库基础知识、实际操作案例以及配合视频教程的习题和答案。对于初学者来说,这是一个很好的学习资源,因为它能够帮助他们通过观看视频和阅读笔记的方式来加深理解。 ...

    MSDN oracle学习笔记

    总的来说,“MSDN Oracle学习笔记”是一份全面的资源,涵盖了Oracle数据库从基础到进阶的各个方面,无论你是初学者还是有经验的DBA,都能从中受益。通过深入学习和实践,你可以提升自己的Oracle技能,为在实际工作中...

Global site tag (gtag.js) - Google Analytics