我的编程空间,编程开发者的网络收藏夹
学习永远不晚

数据表和特殊的表

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

数据表和特殊的表

表空间的下一层次应该就是我们的数据表,也是我们最常用的对象,存储字段的关联字段的对象

我们来创建第一个表为test

    格式

        create table test(id number(10) not null primary key,name varchar(20) not null,age char(2) not null);

    解释

        create table 用于创建表的关键词,后面是表名test,括号里面是列信息(id号,name名字)紧接着类型,然后not null不能为空,为就是必须插入,primary key主键,全局唯一的标识符。

    格式

        select table_name,tablespace_name from user_tables from table_name='test';

    解释

        user_tables表用于查看所有用户表信息

    格式

        describe test;

    解释

        查看表结构,只描述当前对象的表结构,关键字可以缩写desc.

    格式

        alter table test rename to test1;

    解释

        修改数据表的名字 关键字rename to 

    格式

        alter table test modify (id number(20));

    解释

        修改数据表其中某一列的类型的长度

    格式

        alter table test rename column id to user_id;

    解释

        修改数据表列名

    格式

        alter table test add(sal int);

    解释

        数据表中增加一列数据(类型)

    格式

        alter table test drop column sal;

    解释

        删除数据库中某一列

    格式

        drop table test cascade constraints;

    解释

        删除整个表,cascade constrints表示当表与其他的表有关联或者约束,使用关键字强制删除这个表


    那么在Oracle中还有一类表叫做临时表,听名字大体就知道这个表应该是临时存在的,其实不然

    什么是临时表,那么简单来说我们用create table 创建的表叫做永久表或者普通标,临时表其实和普通标没什么区别,临时表的临时是指数据的临时性,也就是说表也是会一直存在的,但是数据会在Oracle中一些条件下被自动清空!

    清空临时表条件有两种:1、事物提交或者回滚 2、会话的结束

    那么Oracle中每次对数据库操作不是立刻就更新操作,而是以事物为单位修改提交到数据库,每个事物会议commit结束,从上一条到本次的commit,其中可能是一条或者多条SQL语句,那么也就意味事物的提交commit,事务回滚rollback废掉当前的事物操作,也就是刚刚做的SQL语句不算数

    Oracle中的会话是每个与用户交互的进程,临时表清空数据也分两类:1、事务级临时表 2、会话级临时表

    事务级临时表就是当数据每次事务的提交都会清空数据,会话级别是当断开本次会话清空数据,意味着Oracle会话用户线程的结束。

    会话级临时表

        格式

            create global temporary table  tmp_user_session(user_id) on commit preserve rows;

        解释

            创建一个会话临时表create global temporary

        格式

            commit

        解释

            提交数据,事物结束,为什么我们平常不需要这样去做因为我们默认吧自动提交事务功能打开了

     事务级别

        格式

            create global tempporary table ...... on commit delete rows;

        解释

            来创建事务级别的临时表,当我们提交或者回滚数据将会自动清除

        格式

            select table_name,tablespace_name from user_tables where table_name='T_USERS_SESSION' or .......;

        解释

            查看表空间信息与之前普通标比较发现,临时表表空间为空

    那么我们说了那么多,到底是干啥用呢,下面说一说他的应用尝尽

    1、大小表分割

        表创建索引可以很大程度上提高查询数据的效率,但是在亿级以上大量的数据,创建索引耗费时间相当大,而且查询大量的索引表与直接查询的效果相差不大,没什么性能上提升,这时候后常用的方法就是把分割大表,分割成多个小的临时表,对这临时表些操作,最后对查询结果进行综合处理

    2、并行问题

        并行基于多线程的为题,简答来说几个客户端同一时间对对象进行操作,会导致混乱,最常用的给文件或者表加上锁,防止多个用户一起修改对象造成混乱的结果。那么在频繁对表操作时候,锁表一定会对整个数据库性能有影响,这时候利用临时表,临时表会话中数据时透明的,不用对表锁定,大大提高数据库性能

    3、缓存

        程序段可能需要做很多的复杂运算,这时候创建临时表将数据存储临时表,可以向普通表一样操作。这时候临时表作为临时数据的存储空间。


        Oracle中还一种特殊的表叫做dual,也是很有意义的表,简单来说是Oracle中的虚表,也叫伪表。那么他是干什么用的,我们知道select * from 必须指定一个表才能输出结果,那么有一些应用场景没有表存储比如系统调用,需要指定表来输出,这时候dual的作用就显示出来,也就是说dual不是作为数据存储,而是作为from的源表。

        格式

            select sysdate from dual; or selec 3+2*5 as result from dual;

        解释

            时间是实时变化的,系统调用时间,这时候输出需要指向一个源表dual作用可显而知,而且可以作为运算的输出表。

        修改dual数据是否会产生影响,那么我们发现查询后dual只有一列,而且只有一个值Y,我们随便插入数据然后进行以上的运算发现结果都是相同,我们删除里面的表结构数值运算也是一样的,那么值的一提的是,Oracle 10g以前对dual做插入删除都会影响运算的结果,那么在oracle 10g之后做了很大改进,不论对dual内部数据进行了如何的操作都不会影响作为虚表的查询结果,对dual内部做了很多工作,无论真实的数据内容是啥,都保证了效果和单条记录是一样的,Oracle 10g对该表做了处理机制做了较大的改进。

        

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

数据表和特殊的表

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

VBS正则表达式的特殊字符说明

本篇内容主要讲解“VBS正则表达式的特殊字符说明”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VBS正则表达式的特殊字符说明”吧!特殊字符有不少元字符在试图对其进行匹配时需要进行特殊的处理。要匹
2023-06-09

为什么说中国式报表特殊-3、报表格式

为什么说中国式报表特殊- 3 、报表格式 下面是一个很常见的表-资产负债表。 资产负债表 。 在手工制表的时候,我们都是拿尺子来画表格。(也许中国式报表复杂是因为中国人先发明了尺子?) 现在的报表工具提供两种画表的方式:拖拽式和 Excel
2023-06-03

Linux中的特殊符号与正则表达式

第1章 linux的特殊符号 1.1 通配符 * {} 1.1.1 含义 方便查找文件 通配符是用来找文件名字的。 1.1.2 * 通过find 命令找以 .sh 结尾的文件,使用*替代文件名字。find /oldboy -type f
2022-06-04

获取特定 MySQL 数据库中的非空表列表

要获取特定 MySQL 数据库中的非空表列表,你可以使用以下 SQL 查询语句:SELECT TABLE_NAMEFROM INFORMATION_SCHEMA.TABLESWHERE TABLE_SCHEMA = 'your_databa
2023-10-20

获取特定 MySQL 数据库中的非空表列表?

要获取特定 MySQL 数据库中的非空表列表,语法如下 -SELECT table_type,table_name, table_schema from information_schema.tableswhere table_rows
2023-10-22

PHP正则表达式特殊字符有哪些

小编给大家分享一下PHP正则表达式特殊字符有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!PHP正则表达式特殊字符"[ ]"和"\",那么他们是什么呢?具体的操作是什么呢?之所以他们是特殊字符,那么有什么在使用过程中特
2023-06-17

Vue中怎么使用echarts定制特殊的仪表盘

这篇文章主要介绍了Vue中怎么使用echarts定制特殊的仪表盘的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中怎么使用echarts定制特殊的仪表盘文章都会有所收获,下面我们一起来看看吧。实现的效果:(
2023-06-29

如何检查特定MySQL数据库中表的表状态?

我们可以借助 show table status 语句来检查数据库中表的状态。例如,在名为tutorial的数据库中,通过执行此语句我们可以获取表的状态如下 -mysql> show table status \G*************
2023-10-22

编程热搜

目录