【数据库】Oracle数据库程序设计学习笔记(三)

目录

 

数据更新操作:插入、修改、删除

1. 插入

2. 修改

3. 删除:

 

表操作:增、删、查

1、新建表

2、删除表(回收站操作)

3、修改表

 

约束

视图

同义词(SYNONYM)

序列


数据更新操作:插入、修改、删除

复制表:CREATE TABLE 新表名 AS 数据来源(SELECT 语句)

可以复制全部数据或者复制部分数据

1. 插入:

    (1插入单值

      标准写法(推荐)

  INSERT INTO 表名(列名1, 列名2, ...) VALUES(值1, 值2, ...);


  INSERT INTO (SELECT 列名1, 列名2, ... FROM myemp) VALUES(值1, 值 2, ...);


  INSERT INTO 表名(列名1, 列名2, ...) SELECT 值1, 值2, ... FROM dual;

 

   (2)利用子查询插入数据(批量插入)

INSERT INTO 表名(列名1, 列名2, ...) SELECT 语句;

//如果要进行大量数据的插入(装载)操作,可以利用“/*+APPEND*/”关键字来实现

INSERT /*+APPEND*/ INTO 表名(列名1, 列名2, ...) SELECT 语句;

 

  (3)向多个表插入数据

//1、无条件多表插入

INSERT ALL

INTO表1 VALUES(值1, 值2, ...)

INTO表2 VALUES(值1, 值2, ...)

......

子查询;

//2、有条件多表插入

INSERT ALL | FIRST

WHEN 条件 THEN INTO 表1(列1, 列2, ...)

WHEN 条件 THEN INTO 表2(列1, 列2, ...)

......

ELSE INTO 表n(列1, 列2, ... )

子查询;

 

  (4)多表插入的应用

    非关系型数据库向关系型数据库的转换

 

2. 修改:

//1、全部修改 

UPDATE 表名 SET 列=值, 列=值;

//2、局部修改

UPDATE 表名 SET 列=值, 列=值 WHERE 条件;

 

3. 删除:

1、全部删除

 DELETE [FROM] 表名;

2、局部删除

 DELETE FROM 表名 WHERE 条件;
//截断表:彻底删除数据,使其不能进行回滚

TRUNCATE TABLE 表名;


//oracle 中的一些关键字

ROWNUM 表示行号

COL[UMN]命令

HEADING 指定列标题名字

JUSTIFY 字体对齐方式

CLEAR 清除样式

FORMAT 字体格式



//压缩列值

BREAK ON 列名 [SKIP 值](组和组之间的距离)

COMPUTE 配合使用才可以分组统计

COMPUTE 组函数 LABEL 内容 OF 求值列 ON 分组列



//设置标题和页脚

TTITLE 对齐方式 名字

BTITLE 对齐方式 名字

TTITLE OFF

BTITLE OFF



//层次查询

SELECT [level] 列名

FROM 表名

[WHERE]

[START WITH 列名=值]

[CONNECT BY 条件]

 

表操作:增、删、查

1、新建表

CREATE TABLE 表名 (

列名 数据类型 [DEFAULT 默认值],

列名 数据类型 [DEFAULT 默认值],

...

);

 

2、删除表(回收站操作)

//将表放进回收站里

DROP TABLE 表名;


//从回收站里恢复表

FLASHBACK TABLE 表名 TO BEFORE DROP;


//查询回收站里的表

SELECT object_name, original_name, operaction, type FROM recyclebin;


//不经过回收站删除表

DROP TABLE 表名 purge;


//从回收站里删除某个表

PURGE TABLE 表名;


//清空回收站

PURGE RECYCLEBIN;

 

3、修改表

//增加新的列

ALTER TABLE 表名 add(列名 数据类型 DEFAULT 默认值, ...);


//修改列的类型和长度、非空约束

ALTER TABLE 表名 MODIFY(列名 数据类型 DEFAULT 默认值, ...);


//修改列名

ALTER TABLE 表名 RENAME COLUNM 现列名 TO 新列名;


//删除列

ALTER TABLE 表名 DROP COLMUN 列名;


//表的重命名

RENAME 旧名 TO 新名;


//修改列的状态

ALTER TABLE 表名 SET UNUSED COLUNM 列名;


//删除无用的列

ALTER TABLE 表名 DROP UNUSED COLUMNS;


//为表添加注释

COMMENT ON TABLE 表名 IS 注释内容;

 

约束

根据约束的位置进行分类:

(1)列级别约束      ( 2)表级别约束

约束的分类:(根据类型进行分类)

(1)主键约束:表示唯一的,不能为空的 primary key

(2)唯一约束:表示唯一的 unique

(3)非空约束:表示不能为空(只有列级别)not null

(4)检查约束:检查一个列的内容是否合法 check

(5)外键约束:关联性 references 表名(列名)

注:通过使用 CONSTRAINT 可以自定义约束名称,便于出错是判断错误类型

   CONSTRAINT   约束名称     约束类型(列名);

范例:

CONSTRAINT person_pid_pk PRIMARY KEY(pid);

CONSTRAINT fk_emp_dept FOREIGN KEY(deptno) REFERENCES dept(deptno);

 

追加约束

   ALTER TABLE 表名 ADD 约束;

范例:

alter table emp add constraint emp_empno_uq unique(empno);

 

删除约束

ALTER TABLE 表名 DROP CONSTRAINT 约束;(推荐)

ALTER TABLE 表名 列名 DROP 约束;

范例:

alter table emp drop constraint emp_empno_uq;

 

查看约束

SELECT * FROM user_constraints WHERE table_name = 表名;

范例:

SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = emp;

 

约束的禁用与启动

ALTER TABLE 表名 DISABLE CONSTRAINT 约束名 [CASCADE];

注:添加cascade表明要让所有的依赖约束都失效

ALTER TABLE 表名 ENABLE CONSTRAINT 约束名;

范例:

alter table emp disable constraint emp_empno_uq [cascade];

alter table emp enable constraint emp_empno_uq;

 

视图

视图:获取一个或多个表中的数据集合

CREATE [OR REPLACE] [FORCE UNFORCE] VIEW 视图名

AS

SELECT语句

[with check option 约束]

[with read only]

REPLACE 如果已存在,则修改

FORCE 表存在不存在都创建视图

UNFORCE 表不存在不创建视图

with check option 把约束也创建

with read only 只读

删除视图

DROP VIEW 视图名 [CASCADE CONSTRAINT];

注:指定 CASCADE CONSTRAINT 子句以删除引用视图中唯一键和主键的所有参照完整性约束

 

同义词(SYNONYM)

同义词是数据库中表、视图、索引或其他模式对象的别名,是一种映射关系

创建同义词:

create 【public】 synonym 同义词名 for 用户名.表名;

删除同义词:

drop 【public】 synonym 同义词名;

查看同义词:

select * from dba_synonyms;

 

序列

序列:按照一定规则自动增加/减少数字的这一种数据库对象

CREATE SEQUENCES 序列名

[INCREAMENT BY n]

[START WITH n]

[MAXVALUE n]

[MINVALUE n]

[CYCLE|NOCYCLE] 是否继续生产

[CACHE n|NOCACHE]; 预先存储空间



NEXTVAL 伪列:序列返回的下一个值

CURRVAL 伪列:序列返回的当前值

CURRVAL 在被引用之前,必须先使用NEXTVAL来产生一个序列值

 

修改序列

ALTER SEQUENCE 序列名

[START WITH n]

[MAXVALUE n]

[MINVALUE n]

[CYCLE | NOCYCLE]

[CACHE n | NOCACHE];

 

删除序列

DROP SEQUENCE 序列名;

 

注:ROWID 伪列,系统自动生成,ROWID表示的每个数据库中的记录的物理地址,这个物理地址是唯一的,好处是可以快速定位到记录上

数据对象编号 相关文件编号 块编号 行编号

000000 fff BBBBBB RRR

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值