Oracle笔记5

 

Oracle笔记

小知识

查询当前时间(具体)

 

select to_char(sysdate,'yyyy-mm-ddhh24:mi:ss') from dual;

 

select to_char(sysdate,'yyyy-mm-ddhh24:mm:ss') from dual;(bug)

星期几的前三个字母

dy

 

对货币的转换

select to_char(emp_salary,'L999,999,99')from emp;

 

select to_char(emp_salary,'L000,000,00')from emp;

 

9:显示的是数字,可以忽略值前面的0

0:显示的是数字,足的会补0

. :  小数点

, :  逗号

$: 美元符号

L:本地的货币币种

C:国际货币符号

G:指定位置显示分组符号

D:显示小数点符号

 

字符串转换为数字

to_number

 

select to_number(‘123423’) from dual;

 

系统函数:

sys_countext

terminal

language

db_name

nls_date_format

session_user

 

数据库建模

系统开发的周期

需求分析à系统设计(数据库设计,框架)à编码à测试à上线维护

 

数据开发:

是一个自顶向下的系统过程

将商业信息需求转化为一个可操作的数据库

由五个阶段组成:

1)     策略分析

2)     数据建模 (ER图)

3)     构建文档

4)     将ER图转化为表实例,列,对应的视图关系

5)     产品化,设计SQL语句,约束

6)     避免重复发明轮子

 

数据模型

ER

实体关系模型的概念

实体:生活中存在的一些事物

属性:描述实体的一些特征,品牌,型号

关系:两个实体质检的关联关系

 

数据建模

实体关系模型

根据业务规则和描述创建ER图

 

 

#:唯一(主键UID)

*:非空

O:可有可无,任意值

实线:mustbe 必须

虚线:maybe可有可无

竖杠(|):代表要强制在(|)一方建立一个联合组件,将对方的UID拿过来做联合组件

实线加虚线:有订单必须要有客户,有客户不一定有订单

 

实体关联关系的类型

one-to-one:一对一关系如果要建立主外键关系,如果是实线或者是虚线都可以随便建

one-to-many:一对多关系外键建立在多的一方

many-to-many:多对多可以拆分两个一个或建立一张桥表

 

完整型约束

主键(primary key  PK):一个表最多只能有一个主键,主键内容非空

如果多个列联合作为主键,则是联合唯一、单列非空

-代理主键:流程账号的数字、递增,没有任何逻辑含义,只是个数字,代号

-自然主键:(例如身份证号)具有一定的商业意义

外键(foreign key   FK)由一列或多列组成取值为本表或其他表位置约束列或主键列,可以为null如果外键是联合组件的一部分那么外键的值不能为空

 

非空(not null):一定要赋值

唯一(unique):取值不能重复

check:自定义约束限定列的内容

 

数据库设计

实体属性映射成表和列

命名规则定义

其他需求设计

-设计索引

-定义视图

-设计物理存储空间

-重新定义完整性约束

 

数据库设计步骤

创建表实例图

-映射实体到表

-映射属性到列

-映射UID到主键

-映射关联关系到外键

 

数据字典

包含数据库的相关信息,包括:

数据库用户的名字

授权给用户的权限信息

数据库的对象信息

表的约束信息

 

 

根据权限分类

-user:用户创建的对象对应的数据字典表。例如:user_object,user_tables等

 

-user

select * from user_objects;

-all :所有用户能访问的对象(包括用户创建的对象)

select * from all_objects;

-dba:所有对象对应的数据字典表。例:dba_objects,dba_tables

select * from dba_objects;

-v$:描述系统同性能相关的数据字典表

-dictionary:一个特殊的数据字典表,用来描述数据字段表相关信息的

-table_privileges:数据表权限

使用人员范围

dba: v$version  DBA

开发人员

       user_*:只能看到本用户schema下面的表

       all_*:可以看到其他用户的表(条件是必须要授予权限)

数据字典常用表的定义

select * from dictionary;

dictionary:数据字典表相关信息的数据字典表;

user_objects:存放当前用户(schema)下所有的对象(表、视图、索引、约束等)

select * from user_objects;

user_constraints:存放的是当前用户下所有的约束信息;

user_cons_columns:查看数据字典中所有视图所对应的列

user_users:存放当前用的信息

select * from user_users;

all_users:存放数据库中所有用户的信息

user_indexes:索引

all_indexes:所有用户的索引信息

user_tables:表的信息

all_tables:所有用户表的信息

user_views:     视图

all_views:

user_synonyms:存放当前用户所有表的同义词

 

数据库常见对象

序列:sequence

select * from emp;

在Oracle数据库中是一种特殊的对象,能够产生现需的整数值,

可以为数据库只多个对象共同使用,主要作用于作为主键值

 

创建sequence

-可选择位置

cache  n:可以每次预产生多个存放到内存中

默认情况下    cache 20

-sysle 用于循环,到最大值后循环

 

创建序列

create sequence name(emp_t)(姓名)

 

[increment by n](自增长)

[start with n](从哪开始)

[{maxvalue n | nomaxvalue}]

[{minvalue n |nominvalue}]

[{cycle | cache n |nocache}]

 

查询序列

select * from user_sequences;

 

select emp_s.nextval from dual;

select emp_s.currval from dual;

修改序列

alter sequence emp_s;

删除序列

drop sequence emp_s;

 

创建视图

create [or replace][force |noforce]view name

as subquery(查询是的视图);

例如:

create view emp_v as

select emp_name,emp_salary from emp whereemp_salary < 2000;

 

[with check option]

[with read only]

 

or replace:如果有相同名字的视图对象则替换

force | noforce: 如果subquery中源表不存在,先创建视图对象,这时视图对象然后创建,但不能正常使用,默认值是noforce,即源表不存在,不能正常创建视图

with check option: 表示可以进行crud操作,但应该满足where子句

with read only: 只允许进行select操作

简单视图

数据来源于一张表,不包含函数及进行分组,可以进行DML操作

复杂视图

数据来源于多个表,包含函数及进行分组,不能进行DML操作

创建视图的优点

限制数据库访问

简化查询

数据的独立性

对同一数据有不同的表现

 

查询视图

select * from emp_dept_v(视图名);

 

修改视图

update name(视图名)

set sal = 900 where emp_name =’smith’;



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值