当前位置:  数据库>其它
本页文章导读:
    ▪通过Mysql语句得到mysql安装路径      通过Mysql语句得到mysql安装路径: select @@basedir as basePath from dual 作者:tbkken 发表于2013-2-26 13:56:58 原文链接 阅读:0 评论:0 查看评论 ......
    ▪Normal Form      Normal Form是我们在设计数据库结构过程中所要遵循的规则和指导方法   ◆ 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。简而言之,第一范式就是无重复的列。 .........
    ▪视图      一、什么是视图:  在ORACLE中,称视图为逻辑表。逻辑二字还是说明了视图不是真正的表。因为视图内根本就没有数据。视图的全部家当,也就是你创建视图时的SELECT语句。 二、创建视.........

[1]通过Mysql语句得到mysql安装路径
    来源: 互联网  发布时间: 2013-11-07
通过Mysql语句得到mysql安装路径:
select @@basedir as basePath from dual
作者:tbkken 发表于2013-2-26 13:56:58 原文链接
阅读:0 评论:0 查看评论

    
[2]Normal Form
    来源: 互联网  发布时间: 2013-11-07

Normal Form是我们在设计数据库结构过程中所要遵循的规则和指导方法

 

◆ 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。简而言之,第一范式就是无重复的列。

◆ 第二范式(2NF):首先要满足它是1NF,另外还需要包含两部分内容:一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。简而言之,第二范式就是非主属性非部分依赖于主关键字。
◆ 第三范式(3NF):首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

 

优点:范式可以避免数据冗余,减少数据库的空间,减轻维护数据完整性的麻烦。

缺点:按照范式的规范设计出来的表,等级越高的范式设计出来的表越多。表的数量越多,查询的时间要高很多。也就是说我们所用的范式越高,对数据操作的性能越低。

所以我们在利用范式设计表的时候,要根据具体的需求再去权衡是否使用更高范式去设计表。

 

在一般的项目中,我们用的最多也就是第三范式,第三范式也就可以满足我们的项目需求,性能好而且方便管理数据;

当数据量巨大时候我们就要考虑使用“反范式”,也就是添加数据冗余,使查询减少或者避免表之间的关联

作者:LZL102801 发表于2013-2-26 14:08:14 原文链接
阅读:43 评论:0 查看评论

    
[3]视图
    来源: 互联网  发布时间: 2013-11-07
一、什么是视图:
 在ORACLE中,称视图为逻辑表。逻辑二字还是说明了视图不是真正的表。因为视图内根本就没有数据。视图的全部家当,也就是你创建视图时的SELECT语句。


二、创建视图:
1、创建视图的主法是:
 CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
  [(alias[, alias]...)]
 AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];


2、例如,如下语句就创建了一个视图:
hr@OCM> CREATE VIEW     empvu30
  2   AS SELECT  employee_id, last_name, salary
  3      FROM    employees
  4      WHERE   department_id = 30;


View created.
视图的名字是empvu30。那它有什么用呢?很简单,如果以后你再想查看department_id(部门编号)为30的雇员信息,不必再使用“ SELECT  employee_id, last_name, salary FROM    employees WHERE   department_id = 30 ”,直接SELECT 视图即可:
hr@OCM> select * from empvu30;


EMPLOYEE_ID LAST_NAME                     SALARY
----------- ------------------------- ----------
        145 Russell                        14000
        146 Partners                       13500
        147 Errazuriz                      12000
        148 Cambrault                      11000
        149 Zlotkey                        10500
        150 Tucker                         10000
这样比你每次输入department_id = 30简单一些。我们可以将常用的比较复杂的查询操作像上面这样,建立为视图。这样每次查询视图就可看到结果,比输入复杂查询语句更省事。


 3、创建视图命令中的[OR REPLACE]的意义,REPLACE有替换的意思。它的主要作用是修改视图的定义,也就是修改视图内的SQL语句。比如说上面的empvu30,我想为empvu30中增加一个列first_name,命令如下:
hr@OCM>  CREATE OR REPLACE VIEW     empvu30
  2   AS SELECT  employee_id, first_name,last_name, salary
  3       FROM    employees
  4       WHERE   department_id = 30;


View created.


4、在创建视图时,对这种使用各种函数,或运算表达式的列,一定要起别名,如没有别名视图创建就会失败,例如:
   hr@OCM> CREATE OR REPLACE VIEW     empvu30 
  2     AS SELECT  department_id,count(*)
  3      FROM    employees
  4      GROUP BY department_id;
   AS SELECT  department_id,count(*)
                            *
ERROR at line 2:
ORA-00998: must name this expression with a column alias


根据Oracle的报错,给count(*)取个别名为count,例如:
hr@OCM> CREATE OR REPLACE VIEW     empvu30 
  2    AS SELECT  department_id,count(*) count
  3    FROM    employees
  4    GROUP BY department_id;


View created.


用desc查看视图empvu30的结构
hr@OCM> desc empvu30
 Name            Null?    Type
 -----------------------------
 DEPARTMENT_ID       NUMBER(4)                                                                                           COUNT               NUMBER                                                                                              如果你没有指定别名的话,ORACLE将无法确定在视图中,它的列名是什么。因此,在创建视图时,对于这种复杂的表达式,一定要为它起别名。            
  
 5、当使用SELECT查询一个视图时,和查询表是一某一样的,我们就可以把视图当表一样去查询。SELECT语句中,所有适用于表特性,都同样适用性视图。比如我们可以增长条件:
hr@OCM> select * from empvu30  where department_id=30;


DEPARTMENT_ID      COUNT
------------- ----------
           30          6


显示empvu30视图中,部门编号(department_id)等于30的行。在使用这个命令时,我们完全可以把empvu30当作一个表,它有1行,两列,列名分别是DEPARTMENT_ID和COUNT。视图数据的来源,被称为视图的“基表”。视图的基表可以有多个。如果我根据连接命令创建一个视图,那么这个视图中的数据可能来自于多个表,这样它就有了多个基表。
基表中的数据变化时,视图也会跟着发生变化。例如,在EMPLOYEES表中我再向插入一行部门编号(department_id)等于30的部门新员工:
hr@OCM> insert into employees values(888,'Joe','guo','Joe@oracle.com',1388888888,sysdate,'AD_PRES',50000,null,200,30);


1 row created.


hr@OCM> commit;


Commit complete.


加了一行后,下面我再显示一下视图:
hr@OCM> select * from empvu30  where department_id=30;


DEPARTMENT_ID      COUNT
------------- ----------
           30          7
部门号为30号的现在有7个人了。也就是说,基表发生了什么变化,不需要任何操作,视图马上就可以反应出来。
这就是视图,我们先不深入的讨论它,仅从外观看,是看不出它和表有什么区别的。在SELECT时,你根据看不出来你SELECT的是一个表,还是一个视图。其实很多时候,我们都在SELECT视图,但是我们都以为在SELECT表。
我们还可以以视图为基表,再创建视图,比如上面的例子,我想把显示结果中的部门号和人数和DEPARTMETS表等值连接起来显示部门名称:
hr@OCM> select a.DEPARTMENT_ID,DEPARTMENT_NAME,COUNT from empvu30 a,departments b  where a.DEPARTMENT_ID=b.DEPARTMENT_ID and a.department_id=30;


DEPARTMENT_ID DEPARTMENT_NAME                     COUNT
------------- ------------------------------ ----------
           30 Purchasing                              7
连接的命令还是稍有点长的,下面我根据此命令,再创建一个视图:
hr@OCM> CREATE OR REPLACE VIEW v_emp30 as 
  2  select a.DEPARTMENT_ID,DEPARTMENT_NAME,COUNT 
  3  from empvu30 a,departments b
  4  where a.DEPARTMENT_ID=b.DEPARTMENT_ID and a.department_id=30;


View created.
视图的名字是v_emp30,名字是根据需要随变定的,如果觉得我这个复杂,可以换成简单的,主要是我想当我看到这个名字时,就能知道这个视图涉及两个表EMPLOYEES和DEPARTMETNS。
好了,下面我们显示一下这个视图,它的输出结果,将和上面的那条连接SELECT语句一样:
hr@OCM> SELECT * FROM  v_emp30;


DEPARTMENT_ID DEPARTMENT_NAME                     COUNT
------------- ------------------------------ ----------
           30 Purchasing                              7


这样,以后我想查看30号部门的总人数。直接查看这个视图就行了。
这个视图的基表有DEPARTMETNS表和empvu30视图,而empvu30的基表是EMPLOYEES表。也就是说一个视图可以作为其它视图的基表。再强调一下,在进行SELECT操作时,我们可以把视图当作表一样去用,我们干脆暂时称视图为视图表。我们可以认为视图表的数据,来自于基表。那么,既然视图是表了,我基于这个表再创建其它视图当然是没有问题的。



    
最新技术文章:
▪gc buffer busy/gcs log flush sync与log file sync    ▪让你的PL/SQL更好用    ▪ADO.NET中的非脱机数据库查询
▪参数job_queue_processes与Oracle jobs    ▪11gR2游标共享新特性带来的一些问题以及_cursor...    ▪_library_cache_advice和latch:shared pool、latch:shared poo...
▪SQL: Date Utility    ▪DB2 分区表增加分区    ▪DB2第一步 — 创建表
▪oracle 数据库    ▪插入10万条记录测试    ▪rebuild index VS. rebuild index online
▪如何处理undo tablespace 表空间太大的问题    ▪ado执行存储过程中包含结果集获取输出参数为...    ▪oracle函数的demo
▪Entity Framework 学习建议及自学资源    ▪存储过程的编写    ▪Linux/Unix shell 自动发送AWR report(二)
▪第二章 Oracle恢复内部原理(基础数据结构)    ▪Redis源码学习之【Tcp Socket封装】    ▪Java Jdbc减少与Oracle之间交互提升批量处理性能...
▪南大通用GBase8a Vs Oracle11g 单机测试亲测    ▪oracle 中行列转换    ▪rhel下安装oracle10g+asm---测试环境搭建
▪Redis系列-主从复制配置    ▪MySQL索引与查询优化    ▪INDEX受到NULL值的影响
▪测试人员的SQL语言 系列    ▪SQL数据库基本语句    ▪MySQL Replication常见错误整理[持续更新...]
▪eclipse下建立esper的demo    ▪把oracle rac 转化为单机数据库    ▪Redis系列-存储篇sorted set主要操作函数小结
▪基本的SQL*Plus报表和命令    ▪druid简单教程    ▪11g调度--scheduler使用
▪EF基础一    ▪db2存储过程中循环语句while do的continue有没有...    ▪oracle 创建DBLINK
▪DB2数据库备份还原    ▪Warning: prerequisite DBD::mysql 1 not found错误解决方...    ▪innotop性能监视mysql,innodb工具
▪数据迁移:DataGuard配置    ▪QX项目实战-19.跨库数据同步    ▪Mysql EXPLAIN
▪Oracle 11g AWR 系列七:Active Session History (ASH) 报...    ▪Oracle 11G新特性(共36个)    ▪父子节点问题
▪OEM简介及按钮乱码问题    ▪NoSql之MongoDB的常用类管理    ▪ORA-39700: database must be opened with UPGRADE option
▪node.js 访问redis数据库,pub/sub    ▪使用DBMS_REDEFINITION在线重定义分区表    ▪SQL Developer 使用问题与解决方法汇总
▪oralce 11g dataguard 概念    ▪ORA-30004 错误处理    ▪oracle分组函数rollup,cube
▪Sql Developer 使用问题与解决方法汇总    ▪Configure Oracle Dataguard Primary-ASM to Physical-ASM    ▪Oracle Data Guard 理论知识
▪Control File 恢复    ▪Oracle数据文件收缩    ▪Oracle 11g AWR 系列五:如何生成 AWR 报告?
▪Wireshark数据包分析实战(第2版)    ▪MySql用户权限控制    ▪db2和oracle查询序列区别
▪更新blob字段的存储过程    ▪MySQLReport分析报告三    ▪DB2中的序列
▪Oracle中DBMS_RANDOM.STRING 的用法    ▪SQL SERVER无法安装成功,sqlstp.log文件提示[未发...    ▪Data Guard 部署物理备库的 10 大注意事项
▪万能数据库查询分析器使用技巧之(九)    ▪SQL 自定义Split函数    ▪视图 v$sql,v$sqlarea,$sqltext,v$sqltext_with_newlines 的...
▪Data Guard Standby_archive_dest 和 Log_archive_dest_n 的...    ▪机房收费系统数据库设计(一)    ▪利用putty的SSH tunnel连接Oracle
▪DBCA建库偶遇ORA-27125    ▪使用PowerPivot建立简单的分析模型    ▪Linux/Unix shell 自动发送AWR report
▪写入到blob字段的存储过程    ▪关于JDBC中ResultSet接口的一点细节探究    ▪Data Guard 配置 Standby Redo Log
▪linux下redis的安装    ▪windows下redis的安装    ▪手动创建数据库步骤(简单翻译官方文档)
▪Ubuntu安装Mongodb    ▪SQL CLR应用    ▪redis的配置文件参数--详细说明
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3