drop table example;
CREATE TABLE example(
ID Number(4) NOT NULL ,
NAME VARCHAR(25),
constraint example_id primary key(id)
);
drop SEQUENCE example_sequence;
CREATE SEQUENCE example_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区
;
drop TRIGGER example_triger;
CREATE TRIGGER example_triger
BEFORE INSERT ON example
FOR EACH ROW
WHEN (new.id is null) --只有在id为空时,启动该触发器生成id号
begin
select example_sequence.nextval into :new.id from dual;
end;
insert into example(name) values('张三');
insert into example(id, name) values(111,'李四');
insert into example(name) values('张三1');
insert into example(name) values('张三2');
insert into example(name) values('张三3');
select * from example;
drop table xxx;
create table xxx as select * from example; --复制一个表的数据和结构,但约束不会被复制
select * from xxx;
--修改主键
--1查主键
SELECT * from user_cons_columns c where c.table_name = 'example';
SELECT * from user_cons_columns c where c.table_name = 'xxx';
--2删除主键
alter table example drop constraint example_id;
--3增加新的主键约束
alter table example add constraint example_id primary key(id);
--4添加列
alter table example add age number;
--5删除列
alter table example drop column age;
--6修改列(修改列类型的前提:需删除存在的数据库)
alter table example modify age varchar(2);
alter table example modify id varchar(20);
--7添加约束
-- foreign key
alter table example add constraint fk_example_xxx foreign key(pid) references xxx(pid);
insert into example(name,age) values('张三1',1);
insert into example(name,age) values('张三2',2);
insert into example(name,age) values('张三3',113);
insert into xxx(name,pid) values('张三2',21);
insert into xxx(name,pid) values('张三3',1111);
select * from example;
select * from xxx;
drop table xxx;
create table xxx as select * from example;
select * from xxx;
--alter table xxx add pid number(10);
-----处理复制表约束
alter table xxx rename column id to sid;
alter table xxx add id number;
update xxx set id=sid;
alter table xxx drop column sid;
-----处理添加字段并为主键
alter table xxx add pid varchar2(20);
update xxx set pid=id;
alter table xxx add constraint xxx_pid primary key(pid);
select * from xxx ;
----为example表添加外键
alter table xxx add constraint fk_xxx foreign key(id) references example(id);
--删除约束
alter table xxx drop constraint fk_example_xxx;
---------处理已有数据的字段类型修改(前4步操作会使表中的约束丢失)
--1重命名字段
alter table example rename column id to sid;
--2添加id字段
alter table example add id varchar2(200);
--3更新数据
update example set id = sid;
--4删除备份数据的字段
alter table example drop column sid;
--5新增约束
alter table example add constraint exmaple_id primary key(id);
-------------------------------------------------------------------
alter table example add unique(age);
alter table example drop unique(age);
--查找表的唯一性约束(包括名称,构成列)
select column_name
from user_cons_columns cu, user_constraints au
where cu.constraint_name = au.constraint_name
and cu.table_name = 'example';
-----视图( 如果权限不足,grant connect,resource,dba to 你的实例)
create table bbb as select * from example;
CREATE OR REPLACE VIEW exam_sum_v1
(name,age)
AS
SELECT d.name,d.age
FROM bbb d;
insert into exam_sum_v1(name,age) values('lisii',1221);
insert into exam_sum_v1(name,age) values('lisii',1221);
insert into exam_sum_v1(name,age) values('lisii',0000);
insert into exam_sum_v1(name,age) values('lisii',111);
select * from exam_sum_v1;
select * from bbb;
alter table bbb drop column id;
select * from example;
select * from xxx;
--USER_TAB_COLS中记录了用户表的列信息
SELECT USER_TAB_COLS.TABLE_NAME as 表名,
USER_TAB_COLS.COLUMN_NAME as 列名,
USER_TAB_COLS.DATA_TYPE as 数据类型,
USER_TAB_COLS.DATA_LENGTH as 长度,
USER_TAB_COLS.NULLABLE as 是否为空,
USER_TAB_COLS.COLUMN_ID as 列序号,
user_col_comments.comments as 备注
FROM USER_TAB_COLS
inner join user_col_comments
on user_col_comments.TABLE_NAME = USER_TAB_COLS.TABLE_NAME
and user_col_comments.COLUMN_NAME = USER_TAB_COLS.COLUMN_NAME;
--关联到表的所有字段信息
select col.column_name,
uc.constraint_type,
case uc.constraint_type
when 'P' then
'√'
else
''
end "PrimaryKey"
from user_tab_columns col
left join user_cons_columns ucc
on ucc.table_name = col.table_name
and ucc.column_name = col.column_name
left join user_constraints uc
on uc.constraint_name = ucc.constraint_name
and uc.constraint_type = 'P'
where col.table_name = 'example';
--查询某个表中的外键字段名称、所引用表名、所应用字段名
select distinct (col.column_name), r.table_name, r.column_name
from user_constraints con,
user_cons_columns col,
(select t2.table_name, t2.column_name, t1.r_constraint_name
from user_constraints t1, user_cons_columns t2
where t1.r_constraint_name = t2.constraint_name
and t1.table_name = 'example') r
where con.constraint_name = col.constraint_name
and con.r_constraint_name = r.r_constraint_name
and con.table_name = 'example';
分享到:
相关推荐
首先,我们来看`proc_sql.txt`,这可能包含了一系列存储过程或函数的SQL脚本,存储过程是Oracle中的预编译SQL语句集合,可以提高数据库操作的性能,并提供模块化编程,便于复用和管理复杂的业务逻辑。在PowerBuilder...
本书讲解在Oracle 11g中使用PL/SQL语言的方法,每章都突出了PL/SQL语言的使用技巧,每个关键技术都给出了示例,每个实例都在真实的环境中演练。本书从认识PL/SQL语言起步,到使用PL/SQL语言编程,再到最后掌握优化PL...
在IT领域,Oracle数据库因其强大的数据处理能力和高度的可靠性而备受企业青睐。掌握Oracle SQL不仅能够提升个人技能,还能在数据分析、数据库管理等岗位上发挥关键作用。以下是从《Oracle SQL》一书提炼出的学习最佳...
### Oracle 数据恢复与管理操作详解 #### 一、Oracle 数据恢复方法 在Oracle数据库中,误删数据或表是常见的问题之一。以下是一些恢复策略和技术: **1. 恢复表数据** - **时间戳查询**: 如果只需要恢复表中的...
### ORACLE PL/SQL 实例精解(第4版)知识点概述 #### 一、PL/SQL基础 **1.1 PL/SQL简介** - **定义**:PL/SQL(Procedural Language for SQL)是一种过程化语言,专门用于增强Oracle数据库的功能。它将SQL命令与...
1. **识别问题**:首先,确定哪个数据文件被误删,这通常通过查看数据库错误日志或通过`SQL`查询`V$DATAFILE`视图来实现。 2. **备份检查**:检查最近的数据库备份,包括全备和增量备份,看是否包含被删除的数据...
综上所述,《精通Oracle.10g.Pl/SQL编程》这本书将带领读者深入理解Oracle 10g环境下的PL/SQL编程,通过实例解析和实战演练,提升读者在数据库编程和管理方面的专业能力。通过学习,读者不仅可以编写高效的PL/SQL...
### Oracle 数据库高可用性配置(DataGuard) #### 概述 Oracle Data Guard 是一项关键的高可用性技术,它能够确保在主数据库(也称为主数据库或生产数据库)发生故障时,可以无缝地切换到备用数据库(即备用数据库...
Oracle PL/SQL是一种过程化编程语言,它扩展了SQL的功能,允许编写存储过程、函数、触发器等,实现数据库内的逻辑处理。学习这部分内容,开发者可以更好地理解如何在数据库层面上实现高效的应用程序设计。 三、...
《大话Oracle.RAC:集群、高可用性、备份与恢复(第2版)》是一部深入探讨Oracle数据库Real Application Clusters(RAC)技术的专业书籍,主要围绕Oracle RAC的集群架构、高可用性策略以及数据库的备份与恢复策略...
Oracle Database 12c SQL Fundamentals(1z0-061)是针对Oracle数据库管理员和开发人员的一门基础考试。通过这门考试可以证明考生具备使用SQL语言对Oracle数据库进行基本操作的能力。考试内容覆盖了SQL语言的核心...
本文档介绍了 Oracle 11G 数据库 DataGuard 灾备切换方案,旨在帮助数据库管理员快速实现灾备切换,确保数据安全和可用性。 一、检查 在进行灾备切换之前,需要检查以下几个方面: 1. 确定 MRP 进程在正常运行。...
第2篇介绍了oracle pl/sql的基本知识,包括sql查询、更新数据、字符型处理、数值型处理、日期型处理、复杂数据处理、控制语句;第3篇以数据库对象为主线讲述了包括视图、约束、游标、触发器、序列、用户角色与权限...
根据给定文件的信息,我们可以将"MOC7033A: SQL Server 2005 for Oracle DBA"这一课程的主要知识点归纳为以下几部分: ### 模块0:介绍 - **概述**:该模块提供了对整个培训课程的一个简要介绍。 - **工作坊目标**...
本课件专注于Oracle数据库的实践操作,旨在帮助学习者深入理解Oracle的核心概念和技术,通过大量的习题和实战演练提升技能。 一、Oracle数据库基础 Oracle数据库是一个基于SQL的、高度可扩展的、分布式数据库系统。...
Oracle 11g 数据库应用简明教程是针对学习Oracle数据库管理系统的一个综合教程,主要针对的是11g版本,这是Oracle公司的一个重要版本,提供了许多增强功能和优化,旨在提高数据库性能、可用性和安全性。本教程由十八...
最后,了解Oracle的最新版本特性,如Oracle 12c的多租户架构(Multitenant Architecture),Oracle 19c的性能增强等,可以帮助你跟上技术的发展步伐,更好地应对现代企业的需求。 这个“Oracle学习记录Oracle-...
1. RAC(Real Application Clusters):学习Oracle的集群技术,如何实现多节点数据库集群,提高可用性和性能。 2. 数据分区:理解表和索引的分区技术,如何通过分区提高查询性能和管理大规模数据。 3. 数据库链接...
### Oracle 11g RAC 关闭与启动顺序详解 #### 一、关闭顺序 在 Oracle 11g RAC 环境中,为了确保数据的安全性和系统的稳定性,在进行关闭...此外,定期进行此类操作的演练也有助于提高系统的整体健壮性和恢复能力。
1. **Oracle数据库安装与配置**:包括如何下载安装Oracle数据库软件,设置环境变量,创建数据库实例,以及进行数据库的启动和关闭操作。 2. **SQL基础**:SQL(Structured Query Language)是用于管理关系型数据库...