本系列链接导航:

[独孤九剑]Oracle知识点梳理(一)表空间、用户

[独孤九剑]Oracle知识点梳理(二)数据库的连接

[独孤九剑]Oracle知识点梳理(三)导入、导出

[独孤九剑]Oracle知识点梳理(四)SQL语句之DML和DDL

[独孤九剑]Oracle知识点梳理(五)数据库常用对象之Table、View

[独孤九剑]Oracle知识点梳理(六)数据库常用对象之Procedure、function、Sequence

[独孤九剑]Oracle知识点梳理(七)数据库常用对象之Cursor

[独孤九剑]Oracle知识点梳理(八)常见Exception

[独孤九剑]Oracle知识点梳理(九)数据库常用对象之package

[独孤九剑]Oracle知识点梳理(十)%type与%rowtype及常用函数

5、数据库对象

  Oracle的常用字段类型有:

  • varchar2(128) 用于存储字符,
  • char(4)固定长度的字符串,不设置长度默认值为1,
  • number(p,s)数字型p是位数总长度,s是小树的长度,可存储负数,最长38位,不够位时会四舍五入
  • date 日期和时间类型
  • lob超长字符,最大可达4G
  • clob 超长文本字符串
  • blob超长二进制字符串
  • bfile超长二进制字符串,保存在数据库外的文件里是只读的

5.1、table的操作

5.1.1、创建表时可以给字段加上约束条件

  • 默认值,如date类型的 设置default sysdate,这样每次插入、修改时,不用程序操作这个字段,都能得到动作时间
  • 例如: 非空 NOT NULL
  • 不允许重复 UNIQUE
  • 关键字/主键 PRIMARY KEY
  • 按条件检查 CHECK (条件)
  • 外键 REFERENCES 表名(字段名)

5.1.2、创建表:

 create table person
(
  ID number primary key,
  name varchar2(32),
  gender char default 1
)
tablespace tablespaceName; --设置表空间,不加就默认为当前用户所在表空间 comment on table person is '人员表'; --添加备注
comment on column person.ID is '编号';
comment on column person.name is '姓名';
comment on column person.gender is '性别';

5.1.3、修改表

 rename person to people; --修改表名
alter table person rename column name to xingming; --修改列名
alter table person add phonenumber varchar2(11);--添加列
alter table person add birthday date default sysdate not null; --添加列,设置默认值,不可为空
alter table person drop column phonenumber; --删除列
alter table person modify name varchar2(64); --修改列长度
alter table person modify gender char(2); --修改列精度
alter table person modify gender varchar2(2); --修改列的数据类型
alter table person modify gender default 2;--修改列的默认值

5.1.4、约束操作

  • primary key
alter table person add constraint pk_person_id parmary key(id);--将id列设置为主键
  • foregin key
alter table person add constraint fk_person_gender foreign key(gender); --将gender列设置为外键
  • check
alter table person add constraint ck_person_gender check (gender in (1,2));--检查gender列的值必须在1、2中
  • not null
alter table person modify name constraint not_null_person_name not null;--name列不能为空
  • unique
alter table person add constraint uq_emp_name unique(name); --设置name列唯一约束
  • default
alter table person modify birthday date default sysdate; --设置birthday列的默认值
  • 约束的控制
 --禁用约束
alter table person disable constraint uq_person_name;--禁用uq_person_name这个约束
--启用约束
alter table person enable constraint un_person_name;
--延迟约束
alter table person drop constraint fk_person_gender;
alter table person add constraint fk_person_gender foreign key(gender)
    reference genderInfo(genderNo) deferrable initially deferred;

5.1.5、清除、删除表

 truncate table person where id>10; --清除表person中的数据,不可恢复
delete table person where id>10; --删除表person中的数据,可恢复
drop table person; --删除表

5.2、View的操作

  这里泛指普通视图view,Oracle还包含一种叫物化视图(materialized view)的视图。这里暂不涉及。
  视图分为简单视图( 基于单个基表,且不包含函数和数据分组操作 ) 和复杂视图( 基于多个基表或视图);简单视图可以通过视图修改数据. 这些修改包括插入数据. 更新数据和删除数据. 但是对于复杂视图来说, 通过视图修改数据必须满足一定的规则.

  在视图定义中没有设定READ ONLY 的前提下, 如果视图包含了下面的内容, 那么不能通过视图删除表中的数据:

  1. 分组函数, 如SUM,AVG,MIN,MAX 等 * GROUP BY 子句
  2. 包含了表达式 * ROWNUM 伪列

  [关于通过视图修改数据的操作这里不做介绍]

5.2.1、创建view

 create or replace view v_person --创建或修改视图
[columnName1,columnName2] --设置列名,也可在select中设置别名
as -- 注1
select a.f1,b.f2 from table1 a,table2 b where a.f0=b.f0;

注1:关于Oracl的is和as,

  在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别,
  在视图(VIEW)中只能用AS不能用IS,
  在游标(CURSOR)中只能用IS不能用AS。

5.2.2、union 和union all

  使用union关键字进行合并查询的时候,数据库引擎会自动过滤掉结果集中的重复记录。
  使用union all关键字进行合并查询的时候,数据库引擎就不会过滤结果集中的重复数据,因此在执行效率上将union all比union要高上很多。

5.2.3、删除视图

drop view v_person;

最新文章

  1. .NET基础拾遗(5)多线程开发基础
  2. 关于ipa和apk文件的解压
  3. ios移动端部分手机不支持background-attachment: fixed 的解决办法
  4. LeetCode Combination Sum III
  5. PHP批量替换MySql数据库中的数据内容(替换MySql数据库内容源码)
  6. Sql Server数据库
  7. vim中光标的前进和后退
  8. android小结
  9. hdu 1403 Longest Common Substring(最长公共子字符串)(后缀数组)
  10. [C#学习]在多线程中如何调用Winform[转]
  11. [转] Epoll 相对Poll和Select的优点
  12. js实时监听input中值的变化
  13. HTML5 前端框架和开发工具【下篇】
  14. 获取当前页面URL信息
  15. 浅析SQLite的锁机制和WAL技术
  16. 在ETH交易区块链里查看北大的那封信
  17. weechat 常用指令
  18. 解密DNSPOD应对DDoS攻击招式!
  19. Linux 中同名进程的查杀
  20. Wrapper模式(Decorator模式)

热门文章

  1. ubuntu安装java jdk
  2. iOS 视频全屏功能 学习
  3. Docker容器技术-第一个容器
  4. Shell编程基础及变量
  5. HashSet,TreeSet和LinkedHashSet的区别
  6. iOS_数据存取(一)
  7. java定时任务Quartz Demo(2.X)
  8. c# 判断字符串中是否含有汉字,数字
  9. linux基础(4)-常用命令
  10. Node.js的原型继承函数 util.inherits