精华内容
下载资源
问答
  • 一、什么是视图 二、什么是表 三、视图和表的关系 四、MySQL的相关操作 一、什么是视图 在数据库的独立性模型中,视图属于外模式...视图是原始数据库的一种变换,也就是说其实视图就是一组对原表的select操作的集合...

    一、什么是视图

    二、什么是表

    三、视图和表的关系

    四、MySQL的相关操作

    一、什么是视图
    在数据库的独立性模型中,视图属于外模式,其起到了将用户与模式和内模式的分开。视图是从一个或者多个基本表(或者视图,但是一般建议不要使用,效率比较低)导出来的虚拟的表。在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。视图是原始数据库的一种变换,也就是说其实视图就是一组对原表的select操作的集合,视图的定义存在数据库中,但是与此定义相关的数据并没有存放在数据库中。我们可以将视图看成一个窗口,通过这个窗口我们可以看到一些数据,而通过窗口我们所看到的数据存放在基表中(因此称视图为虚拟的表)。

    二、什么是表
    在关系数据库中,用表来表达主体之间的关系,表属于数据库层次模式当中的内模式,也就是与物理储存有关。在关系数据库中,所有的关系被转化为二维表储存。
    三、视图和表的关系
    联系:
    视图是建立在基本表之上建立的虚拟表,它的结构和内容都来自基本表,它一句基本表而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。

    区别:
    • 表是在物理空间实际存在的,并且在数据库的字典表中也有基本表的数据,而视图值储存了的定义。
    • 表示内容,视图是窗口
    • 视图是已经编译好的sql语句,而表不是
    • 表示内模式,视图是外模式
    • 视图是查看数据表的一种方式,可以查询数据表中的某些字段构成的数据,只是一些SQL语句的集合。从安全的角度来看,视图可以不给用户接触数据表,从而不知道表结构。
    • 表属于全局模式中的表,视图属于局部模式的表
    • 视图的建立和删除值影响视图的本身,不影响对应的基本表
    • 不能对视图进行update或者insert into操作,一般视图只能进行selet操作


    • 视图的作用:
      1、当一个子查询需要反复使用的时候,视图可以简化代码,直接调用而不是每次都重复写
      2、系统的数据管理员,需要给用户提供数据但是又不希望用户知道其他的任何数据的时候,可以给用户提供视图,也就是看数据的一个窗口,起到保护的作用

      性能分析: 通常来说直接查询和查询视图是没有什么区别的(SQL本身也会进行优化),除非是视图嵌套了视图,或者查询很复杂要计算。但是每次select视图的时候,视图都会重新计算创建它的规则(SQL算法),如果算法复杂,数据量大,就会比较慢,并且表的索引(可以提高速率)对于视图而言是无效的,它是全表扫描。

      四、MySQL中的相关操作
      1、表的创建:
    --------创建表-----------
    --判断表是否存在---
    if exists (select * from sysobjects where name = "S")
    ----存在就把表删除-----
    drop table S
    go
    creat table S
    (
       sno int  primary key,
       name vaechar(20) null
       )
       -----添加数据-----
       insert into S(sno,name) values(01,"张三”);
       insert into S(sno,name) values(02,"李四");
       ------查询数据------
       select * from S
    

    创建视图

    --------判断是否存在-------
    if exists (select * from sysobjects where name ="VIEW_S")
    drop view VIEW_S
    go
    -----创建视图-----
    ------由于视图是基于基表,所以其没有数据的插入环节----
    creat view VIEW_S
    as 
    select * from S where sno=01
    go
    ----使用视图----
    select * from VIEW_S
    
    展开全文
  • 数据库中主键索引的区别

    万次阅读 2015-03-14 22:06:29
    区别: 1:主键是为了标识数据库记录唯一性,不允许记录重复,且...4:索引可以提高查询速度,它就相当于字典的目录,可以通过它很快查询到想要结果,而不需要进行全扫描. 5:主键索引外索引值可以为空.  6:主键也可以由

    1、主键

    主键ID,主键既是约束也是索引,同时也用于对象缓存的键值。

    2、索引

           *组合或者引用关系的子表(数据量较大的时候),需要在关联主表的列上建立非聚集索引(如订单明细表中的产品ID字段、订单明细表中关联的订单ID字段)

           *索引键的大小不能超过900个字节,当列表的大小超过900个字节或者若干列的和超过900个字节时,数据库将报错。

           *表中如果建有大量索引将会影响INSERT、UPDATE和DELETE语句的性能,因为在表中的数据更改时,所有的索引都将必须进行适当的调整。需要避免对经常更新的表进行过多的索引,并且索引应保持较窄,就是说:列要尽可能的少。

           *为经常用于查询的谓词创建索引,如用于下拉参照快速查找的code、name等。在平台现有下拉参照的查询sql语句中的like条件语句要改成不带前置通配符。还有需要关注Order By和Group By谓词的索引设计,Order By和Group By的谓词是需要排序的,某些情况下为Order By和Group By的谓词建立索引,会避免查询时的排序动作。

           *对于内容基本重复的列,比如只有1和0,禁止建立索引,因为该索引选择性极差,在特定的情况下会误导优化器做出错误的选择,导致查询速度极大下降。

     

          *当一个索引有多个列构成时,应注意将选择性强的列放在前面。仅仅前后次序的不同,性能上就可能出现数量级的差异。

           *对小表进行索引可能不能产生优化效果,因为查询优化器在遍历用于搜索数据的索引时,花费的时间可能比执行简单的表扫描还长,设计索引时需要考虑表的大小。记录数不大于100的表不要建立索引。频繁操作的小数量表不建议建立索引(记录数不大于5000条)

    区别:

    1:主键是为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引.
    2:数据表中只允许有一个主键,但是可以有多个索引.
    3.使用主键会数据库会自动创建主索引,也可以在非主键上创建索引,方便查询效率.
    4:索引可以提高查询速度,它就相当于字典的目录,可以通过它很快查询到想要的结果,而不需要进行全表扫描.
    5:主键索引外索引的值可以为空. 
    6:主键也可以由多个字段组成,组成复合主键,同时主键肯定也是唯一索引.
    7:唯一索引则表示该索引值唯一,可以由一个或几个字段组成,一个表可以有多个唯一索引.
    展开全文
  • 1.数据库管理员 职责: 1.安装和升级Oracle数据库 ...2.建库、空间、、视图、索引 ...3.指定并实施备份恢复计划 ...管理数据库的用户主要有sys和system,区别有: 1. 存储数据重要性不同(最重要

    1.数据库管理员

    • 职责:

      1.安装和升级Oracle数据库

      2.建库、表空间、表、视图、索引

      3.指定并实施备份与恢复计划

      4.数据库权限管理、调优、故障排除

      5.对于高级DBA,要求能参与项目开发,会编写sql语句、存储过程、触发器、规则、约束、包...

    • 管理数据库的用户主要有sys和system,区别有:

      1. 存储的数据的重要性不同(最重要的区别)

    sys: 所有oracle数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库子句维护,任何用户都不能手动更改。sys用户拥有dba、sysdba、sysoper角色或权限,是oracle权限最高的用户。

    system:用于存放次一级的内部数据,如Oracle的一些特性或工具的管理信息。system用户拥有dba、sysdba角色或系统权限。

    2. 权限的不同

    sys用户必须以as sysdba或as sysoper形式登陆。不能以normal方式登陆数据库。

    system如果正常登陆,实际是一个普通的DBA;若以as sysdba登陆,实际是作为sys用户登陆的。

    注意:sysdba、sysoper、dba实际权限的不同:拥有sysdba或sysoper角色的特权用户可以执行启动实例、关闭实例等特殊操作;而DBA用户只有在启动数据库后才能执行各种管理工作。

    • 管理初始化参数

    初始化参数用于设置实例或是数据库的特征。

    1. 显示初始化参数

    ---show parameter;

    2. 如何修改参数

    若希望修改这些初始化的参数,可以到文件~\oracle\admin\myOrcl\pfile\init.ora文件中去修改。

    2.数据库(表)的逻辑备份与恢复

    介绍:

    逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程; 逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件吧数据对象导入到数据库的过程。 物理备份可在数据库open的状态下进行也可在关闭数据库后进行。但是逻辑备份和恢复只能在open的状态下进行。

    注:exp、imp的工作是在Oracle安装目录的bin下的exp.exe imp.exe环境中。

    • 备份(导出)

    导出具体的分为:导出表、导出方案、导出数据库三种方式。

    导出使用exp命令来完成的,该命令的常用选项有:

    userid --用于指定执行导出操作的用户名、口令、连接字符串

    tables --用于指定执行导出操作的表

    owner --用于指定执行导出操作的方案

    full=y ----用于指定执行导出操作的数据库

    inctype --用于指定执行导出操作的增量类型

    rows --用于指定执行导出操作是否要导出表中的数据

    file --用于指定导出文件名

    • 导出表

      1.导出自己的表

    exp userid=用户名/用户密码@数据库名 tables=(表1,表2,...) files=备份文件(.dmp)路径;

    2.导出其它方案的表

    如果用户要导出其它方案的表,则需要DBA的权限或是exp_full_database的权限,比如system就可以导出scott的表: exp userid=system/manager@myOracl tables=(scott.emp) files=d:\a.dmp;

    3.导出表的结构

    exp userid=用户名/用户密码@数据库名 tables=(表1,表2,...) files=备份文件(.dmp)路径 rows=n;

    4.使用直接导出方式

    exp userid=用户名/密码@数据库名 tables=(表1,表2,...) files=备份文件(.dmp)路径 direct=y; 使用这种方式比默认的常规方式速度快,数据量大时可以考虑。但是需要数据库的字符集要与客户端的字符集完全一致,否则报错。

    • 导出方案

    导出方案是指使用export工具导出一个方案或是多个方案中的所有对象和数据,并存放到文件中。

    1.导出自己的方案

    exp 用户名/用户密码@数据库名 owner=方案名 file=备份文件(.bmp)路径

    2.导出其它方案

    如果用户要导出其它方案,则需要DBA的权限或是exp_full_database的权限。

    exp system/system@myOrcl owner=(system, scott) file=d:\system.dmp;

    • 导出数据库

    导出数据库是指利用export导出所有数据库中的对象及数据,要求该用户具有DBA的权限或exp_full_database权限。

    eg: exp userid=system/manager@myOracl full=y inctype=complete files=d:\a.dmp;

    • 恢复(导入)

    导入就是使用工具import将文件中的对象和数据导入到数据库中,但是导入要使用的文件必须是export所导出的文件,与导出类似,导入也分为导入表、导入方案、导入数据库三种方式。

    该命令的常用选项有:

    userid --用于指定执行导入操作的用户名、口令、连接字符串

    tables --用于指定执行导入操作的表

    fromuser --用于指定源用户

    touser --用于指定目标用户

    file --用于指定导入文件名

    full=y ----用于指定执行导入整个文件

    inctype --用于指定执行导入操作的增量类型

    rows --用于指定执行是否要导入表行数据

    ignore --如果表存在,则只导入数据

    • 导入表

      1.导入自己的表

    imp userid=用户名/用户密码@数据库名 tables=(表1,表2,...) files=备份文件(.dmp)路径;

    2.导入表到其它用户

    需要用户具有DBA的权限或是imp_full_database的权限: imp userid=system/manager@myOracl tables=(emp) files=d:\a.dmp touser=scott; (fromuser= )

    3.导入表的结构

    只导入表的结构而不导入数据

    imp userid=用户名/用户密码@数据库名 tables=(表1,表2,...) files=备份文件(.dmp)路径 rows=n;

    4.导入数据

    如果对象(比如表)已经存在,可以只导入表的数据。

    imp userid=用户名/用户密码@数据库名 tables=(表1,表2,...) files=备份文件路径 ignore=y;

    • 导入方案

    导入方案是指使用import工具将文件中的对象和数据导入到一个或是多个方案中。如果要导入到其它方案,要求该用户具有DBA的权限,或是imp_full_database。

    1.导入自身的方案

    imp userid=用户名/用户密码 file=方案备份文件路径

    2.导入其它方案

    要求该用户具有DBA的权限

    imp userid=system/manager file=d:\xxx.dmp fromuser=system touser=scott;

    • 导入数据库

    在默认情况下,当导入数据库时,会导入所有对象结构和数据。

    imp userid=system/manager full=y file=d:\xxx.dmp;

    3.数据字典和动态性能视图

    数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息。 动态性能视图记载了例程启动后的相关信息。

    • 数据字典

    数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者是sys。用户只能在数据字典上执行查询操作,而其维护和修改是由系统自动完成的。

    • 数据字典的组成:

    数据字典包括数据字典基表数据字典视图,其中基表存储数据库的基本信息,普通用户是不能直接访问数据字典的基表;数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息,数据字典视图主要包括user_xxx、all_xxx、dba_xxx三种类型。

    1. user_tables

    用于显示当前用户拥有所有表,它只返回用户所对应方案的所有表。

    eg: select table_name from user_tables;

    2. all_tables

    用于显示当前用户可以访问所有表,它不仅会返回当前用户方案的所有表,还会返回当前用户可以访问的其它方案的表。 eg:select table_name from all_tables;

    3. dba_tables

    它会显示所有方案拥有的数据库表,但是查询这种数据库字典视图,要求用户必须是DBA角色或是有select_any_table系统权限。 eg:select table_name from dba_tables;

    • 用户名、权限、角色

    在建立用户时,oracle会把用户的信息放到数据字典中,当给用户授予权限或是角色时,oracle会将权限和角色的信息存放到数据字典中。

    1. 通过查询dba_users,可以显示所有数据库用户的详细信息。

    2. 通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限。

    3. 通过查询数据字典视图dba_tab_privs,可以显示用户所具有的对象权限。

    4. 通过查询数据字典dba_col_privs,可以显示用户具有的列权限。

    5. 通过查询数据字典视图dba_role_privs,可以显示用户所具有的角色。

    问题:

    (1).查询oracle中所有的系统权限,一般是DBA:

    select * from system_privilege_map order by name;

    (2).查询oracle中所有的角色,一般是DBA:

    select * from dba_roles;

    (3).查询oracle中所有对象权限,一般是DBA:

    select distinct privilege from dba_tab_privs;

    (4).查询数据库的表空间:

    select tablespace_name from dba_tablespaces;

    (5).查询一个角色包括哪些权限(系统权限+对象权限):

    角色包含的系统权限:select * from dba_sys_privs where grantee='角色名';

    或者:select * from role_sys_privs where role='角色名';

    角色包含的对象权限:select * from dba_tab_privs where grantee='角色名';

    (6).查询某个用户具有怎样的角色:

    select * from dba_role_privs where grantee='用户名';

    • 显示当前用户可以访问的所有数据字典视图

    select * from dict where comments like '%grant%';

    • 显示当前数据库的全称

    select * from global_name;

    • 动态性能视图

    动态性能视图用于记录当前例程的活动信息,当启动oracle server时,系统会建立动态性能视图;当停止oracle server时,系统会删除动态性能视图。

    4.管理表空间和数据文件

    介绍:表空间时数据库的逻辑组成部分。从物理上讲,数据库数据存放在数据文件中;从逻辑上讲,数据库数据则是存放在表空间中,表空间由一个或是多个数据文件组成

    • 数据库的逻辑结构

    介绍:oracle中逻辑结构包括表空间、段、区和块。数据库是由表空间构成,而表空间又是由段构成,而段又是由区构成,而区又是由oracle块构成的这样的一种结构,可以提高数据库的效率。

    • 表空间

    表空间用于从逻辑上组织数据库的数据。数据库逻辑上是由一个或是多个表空间组成。通过表空间可以达到以下作用:a.控制数据库占用的磁盘空间;b.DBA可以将不同数据类型部署到不同的位置,这样有利于提高I/O性能,同时有利于备份和恢复等管理工作。

    建立表空间

    建立表空间是使用create tablespace命令完成的,一般是由特权用户或是DBA或是具有create tablespace系统权限的普通用户来完成的。在建立数据库后,为便于管理表,最后建立自己的表空间。

    eg:create tablespace data01 datafile 'd:\test\data01.dbf' size 20m uniform size 128k;

    说明:执行完上述命令,会建立名为data01的表空间,并为该表空间建立名为data01.dbf的数据文件,区的大小为128K。

    使用表空间

    create table 表名(列 列类型,...) tablespace data01; (默认放在system表空间中)

    改变表空间的状态

    当建立表空间时,表空间处于联机的(online)状态,此时该表空间时可以访问的,并且该表空间是可以读写的。但是在进行系统维护或是数据维护时,可能需要改变表空间的状态,一般情况下,由特权用户或是DBA来操作。

    1.使表空间脱机 --alter tablespace 表空间名 offline;

    2.使表空间联机 --alter tablespace 表空间名 online;

    3.只读表空间 --当建立表空间时,表空间可以读写,如果不希望在该表空间上执行update、delete、insert操作,那么可以将表空间修改为只读: alter tablespace 表空间名 read only;

    4.使表空间可读写:alter tablespace 表空间名 read write;

    表空间的查询操作

    1.显示指定表空间下的所有表:select * from all_tables where tablespace_name='表空间名';

    2.查找指定表属于哪个表空间:select tablespace_name,table_name from user_tables where table_name='';

    删除表空间

    一般情况下,由特权用户或是DBA来操作,如果时其它用户操作,那么要求用户具有drop tablespace系统权限。

    eg:drop tablespace '表空间' including contents and datafiles;

    说明:including contents 表示删除表空间时,删除该空间的所有数据库对象,而datafiles表示将数据库文件也删除。

    扩展表空间

    表空间是由数据文件组成的,表空间的大小实际上就是数据文件相加后的大小。空间不足时就应扩展该表空间,增加更多的存储空间,有三种方法:(数据文件的大小不能超过500m)

    方法一:增加数据文件

    sql>alter tablespace sp01 add datefile 'd:\test\sp01.dbf' size 20m;

    方法二:增加数据文件的大小

    sql>alter tablespace 表空间名 'd:\test\sp01.dbf' resize 20m;

    方法三:设置文件的自动增长

    sql>alter tablespace 表空间名 'd:\test\sp01.dbf' autoextend on next 10m maxsize 500m;

    移动数据文件

    当数据文件所在的磁盘损坏时,为能重新使用数据文件,需要将这些文件的副本移动到其它的磁盘,然后恢复。

    步骤:

    1. 确定数据文件所在的表空间;

    select tablespace_name from dba_data_files where file_name='d:\sp01.dbf(数据文件路径)';

    2. 使表空间脱机;

    确保数据文件的一致性,使表空间转变为offline的状态; alter tablespace sp01 offline;

    3. 使用命令移动数据文件到指定的目标位置;

    sql>host move d:\sp01.dbf c:\sp01.dbf;

    4. 执行alter tablespace命令;

    在物理上移动了数据后,还必须执行alter tablespace命令对数据库文件进行逻辑修改:

    sql>alter tablespace sp01 rename datafile 'd:\sp01.dbf' 'c:\sp01.dbf';

    5. 使表空间联机;

    在移动了数据文件后,为使用户可以访问该表结构,必须将其转换为online状态:

    sql>alter tablespace data01 online;

    号外:

    1.显示表空间信息

    查询数据字典视图dba_tablespace,显示表空间的信息:

    select tablespace_name from dba_tablespaces;

    2.显示表空间所包含的数据文件

    查询数据字典视图dba_data_files,可显示表空间所包含的数据文件:

    select file_name,bytes from dba_data_files where tablespace_name='表空间名';



    展开全文
  • 2、掌握数据库表和自由表的区别。 3、了解数据字典使用。 4、掌握数据库表建立永久关系的作用和方法,学会数据库参照完整性的作用和设置。 5、掌握查询视图的基本概念和用法,建立和使用查询视图
  • 8.4 视图与表值函数 357 8.4.1 一般用法 358 8.4.2 使用视图实现可配置的行级安全 360 8.5 数据混淆 364 8.6 监视与审核 367 8.6.1 服务器与数据库审核 367 8.6.2 使用DML触发器查看表的变更历史 371 8.6.3 ...
  • 视图是由从数据库的基本中选出来数据组成逻辑窗口,它基本不同是,视图是一个虚数据库中只存放视图定义,而不存放视图包含数据,这些数据仍存放在原来基表中。所以基表中数据如果发生改变,...

    视图

    视图是由从数据库的基本表中选出来的数据组成的逻辑窗口,它与基本表不同的是,视图是一个虚表。数据库中只存放视图的定义,而不存放视图包含的数据,这些数据仍存放在原来的基表中。所以基表中的数据如果发生改变,从视图中查询出的数据也随之改变。

    视图是一个虚表,他是通过执行SQL查询所产生的。视图以select命名存储于数据字典当中。每当SQL查询包含有视图名称的时候,数据库管理系统会执行在视图定义当中所包含的查询,以建立其虚拟结果表。该结果表可以当做查询其余部分的源表使用。

    视图可以是建立在一个或多个表上,也可以建立在视图上,但是不管怎么样对视图数据的操作最终都会转换为对基本表的操作,因为视图是一个虚表,数据实际上保存在基本表中

    临时表

    临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。 

     临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。

    临时表是建立在系统临时文件夹中的表,如果使用得当,完全可以像普通表一样进行各种操作,在VFP退出时自动被释放。

    临时表是一种并不存储在数据库当中的基表。与之相反的是,临时表只存在于创建该临时表的数据库会话被激活的情况下。

    临时表存储在数据库会话中,不在数据库中,当使用show tables 时没有显示,但是可以查询,当关闭数据库(quit,exit)然后在打开在去数据库中查询的时候就不存在了。

    视图和临时表的区别

    1、视图只存在于单个查询当中,每次使用该视图名,其虚拟表就会根据现有的数据重新被创建。 2、临时表存在于它被创建的整个数据库会话过程中。 3、视图自动使用其所定义的查询检索出来的数据进行填充。 4、必须使用SQLINSERT命令来向临时表添加数据。 5、只有那些符合视图可更新能力标准的视图才可用于数据修改。当使用视图进行更新时,该更新会永久被传递至底层基表上。 6、由于临时表都是基表,因此所有的临时表都是可更新的。不过,这些更新对于这些表来说是临时性的。 7、由于视图的内容是在该视图每次被使用的时候才生成,因此视图当中的数据几乎每次都是最新的。 8、临时表当中的数据所反应的是数据库在该表被装载进数据库时的状态。如果临时表所装载的源表中的数据在临时表检索这些数据之后发生了改变,那么临时表当中的内容有可能与数据库当中的其他部分的数据脱离同步状态。

    优缺点

    1、由于视图的内容是在该视图每次被使用的时候才生成,所以数据和数据库中的数据是同步的,但是在每次查询的时候都要建立视图表结构,所以比较浪费时间。 2、临时表仅需创建一次,所以相比视图每次都创建视图结构,节省了大量时间,但是临时表的数据在数据源发生改变是没有进行更新的话,就会出现数据不同步现象。 3、简化数据查询语句——定义视图可以将表与表之间的复杂的连接操作和搜索条件对用户影藏起来,用户只需简单的对一个视图进行查询即可。 4、使用户能从多角度看待同一数据。 5、提高了数据的安全性———在建立视图的时候可以吧敏感的数据影藏起来,而吧需要的数据暴露给客户这样的话比较安全。 6、提供了一定程度的逻辑独立性——数据库中是三级模式两级映射,三级模式是 外模式、模式、内模式而这里的视图就是外模式,这样就提供了数据的逻辑独立性。

    什么时候使用视图呢?

    应用场景1:保密工作,比如有一个员工工资表,如果你只希望财务看到员工工资这个字段,而其他人不能看到工资字段,那就用一个视图,把工资这个敏感字段过滤掉

    应用场景2:有一个查询语句非常复杂,大概有100行这么多,有时还想把这个巨大无比的select语句和其他表关联起来得到结果,写太多很麻烦,可以用一个视图来代替这100行的select语句,充当一个变量角色

    什么时候用临时表呢?

    应用场景1:你在短期内有很多DML操作,比如京东淘宝亚马逊的购物车表,把东西放购物车(insert),变更数量(update),删除商品(delete),一旦结算金钱后,这些数据就要清掉,这时需要用临时表

    应用场景2:在导出数据时,你可能不想导完整的数据库,或者表,你可能只想要导出符合某些条件的数据,那么你可以创建临时表,把select语句插入到临时表,接着导出这个临时表,导完以后通过结束session或者事务的方式,让这些没用的数据自动清理掉

    应用场景3:你在写存储过程时,有很多的连接,比如你需要连接A,B,C,D,E,F,G,H那么多张表,才能得到你的结果表,同时做连接的消耗太大,你可以先A,B,C连接的结果,放在临时表,接着再把这张临时表,跟D,E,F连接,作为新的结果放在临时表,接着再把临时表与G,H连接,最后得到临时表数据,一次插入到结果表(永久表)。

    二者区别:

    空间分配:物理空间的分配不一样,视图不分配空间,   临时表会分配空间

    虚实:视图是一条预编译的SQL语句,并不保存实际数据,而临时表是保存在tempdb中的实际的表。即视图是一个快照,是一个虚表,而临时表是客观存在的表类型对象。它们的结构一个是表、一个快照。可以把视图想象成联合表的快捷方式。

    展开全文
  • 8.4 视图与表值函数 357 8.4.1 一般用法 358 8.4.2 使用视图实现可配置的行级安全 360 8.5 数据混淆 364 8.6 监视与审核 367 8.6.1 服务器与数据库审核 367 8.6.2 使用DML触发器查看表的变更历史 371 8.6.3 ...
  • 数据库索引以及索引实现(B+树介绍,和B树,区别) 索引 索引是提高数据库表访问速度方法。 分为聚集索引和非聚集索引。 聚集索引:对正文内容按照一定规则排序目录。 非聚集索引:目录按照一定顺序排列,...
  • 一、 池表簇表 1. 介绍   图-1 数据库表视角  除了透明表外,SAP 系统还能够在ABAP 字典中以相同的方法定义数据库级别上的池表和簇表。池表和簇表都是把ABAP字典中逻辑定义的多个... 也就是说这个表的结构可
  • oracle空间和数据字典的概念

    千次阅读 2014-12-19 14:40:06
     SQL Server数据库与Oracle数据库之间最大的区别要属空间设计。Oracle数据库开创性地提出了空间的设计理念,这为Oracle数据库的高性能做出了不可磨灭的贡献。可以这么说,Oracle中很多优化都是基于空间的设计...
  • 数据库索引设计优化

    千次阅读 2018-01-23 16:17:30
    数据库中,索引含义日常意义上“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。 A)索引可以避免全扫描。多数查询可以仅扫描少量索引页及数据页,而不是...
  • 索引是提高数据库表访问速度方法。 分为聚集索引和非聚集索引。 聚集索引:对正文内容按照一定规则排序目录。 非聚集索引:目录按照一定顺序排列,正文按照另一种顺序排列,目录正文之间保持一种映射关系...
  • 数据库面试题

    2020-06-02 17:40:22
    数据库面试题更新地址:数据库面试题 数据库面试题 文章目录数据库面试题数据库基础知识为什么要使用数据库数据库的发展阶段 ⭐文件系统与数据库系统之间的比较...什么是数据字典Oracle 和 MySQL 的区别数据库和非关系
  • 数据库索引

    2018-08-08 16:28:00
    数据库中,索引含义日常意义上“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。A)索引可以避免全扫描。多数查询可以仅扫描少量索引页及数据页,而不是...
  • 两者都可以对表进行删除操作,区别在于truncate是直接在数据字典中清除段定义实现,是DDL语句,不会产生重做日志。而delete是将数据块在数据库缓冲区高速缓存中清除,是DML语句,会产生重做日志。 在速度方面...
  • 数据库视图

    2017-07-10 00:03:12
    视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,视图是一个虚表,即视图所对应数据不进行实际存储,数据库中只存储视图定义,在对视图数据进行操作时,系统根据视图定义去操作与视图相...
  • Mysql数据库索引

    2020-08-10 18:43:30
    文章目录Mysql数据库索引概念索引利弊建立索引场景索引类型...在数据库中,索引含义日常意义上“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。 索引利弊 1
  • ORACLE数据字典与视图

    千次阅读 2013-12-17 16:20:29
    ORACLE数据字典与视图 当ORACLE数据库系统启动后,数据字典总是可用,它驻留在SYSTEM空间中。数据字典包含视图集,在许多情况下,每一视图集有三种视图包含有类似信息,彼此以前缀相区别,前缀为USER、ALL和DBA...
  • 索引分为主键索引、唯一索引、普通索引、聚集索引、全文索引几种,而索引其实就是在无序数据中建立索引,每次查询可以根据索引迅速查到我们想要数据(就像字典的目录a-z一样) 优点 提高数据查找速度 提高...
  • system是数据库内置一个普通管理员,你手工创建任何用户在被授予dba角色后都跟这个...sys用数据库的超级用户,数据库内很多重要东西(数据字典表、内置包、静态数据字典视图等)都属于这个用户,sys用户必须以...
  • 数据库中,索引含义日常意义上“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。 A)索引可以避免全扫描。多数查询可以仅扫描少量索引页及数据页,而不是...
  • system是数据库内置一个普通管理员,你手工创建任何用户在被授予dba角色后都跟这个...sys用数据库的超级用户,数据库内很多重要东西(数据字典表、内置包、静态数据字典视图等)都属于这个用户,sys用户必须以...
  • 全文搜索:是指计算机索引程序...这个过程类似于通过字典检索字查字过程。全文搜索搜索引擎数据库数据。 比如,我们查找“我们is中国人 而自豪”为例。 若context类型全文索引选择使用Chinese_vgr...
  • 漫谈数据库索引

    2015-01-06 22:32:45
     在数据库中,索引含义日常意义上“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。 主键也是一种索引,典型的数据库(如mysql,oracle等)会在建立主键同时...
  • 当ORACLE数据库系统启动后,数据字典总是可用,它驻留在SYSTEM空间中。数据字典包含视图集,在许多情况下,每一视图集有三种视图包含有类似信息,彼此以前缀相区别,前缀为USER、ALL和DBA。 l 前缀为USER视图...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 147
精华内容 58
关键字:

数据库字典与表的区别