当前位置:首页 » 操作系统 » 数据库伪列

数据库伪列

发布时间: 2023-05-23 20:44:06

数据库常用查询操作

--注释

--select *|字段名1,字段名2... from 表名;

--1)

--查询|检索|获取 所有员工的所有信息

--查询的数据: 员工的所有信息

--数据的来源:员工表  emp

--条件:

select * from emp;

--2)

--查询所有的员工名字

select ename from emp;

--3)

--查询所有的员工编号和员工名称,员工上级的编号

--查询的数据: empno,ename,mgr

--数据的来源:员工表  emp

select empno,ename,mgr from emp;

--4)

--查询所有部门部门编号

select deptno from dept;

--5)

--查询出所有员工所在的部门的部门编号

select distinct  deptno from emp;

--对查询数据进行去重(非字段去重) distinct

--6)

--查询出所有存在员工的部门的部门编号,以及员工名称

select deptno,ename from emp;

select distinct sal,deptno from emp;

--7)

--查询表达式,结果是表达式的值,显示的字段名就是表达式,计算值

select 1+1 from emp;

select 'a' from emp;

--8)

--给字段取别名  select 字段1 (as) 别名1,字段2 别名2 from 表名 别名;  表的别名不能加as

--查询所有员工的名称(别名为:名字),员工编号(编号)

--别名默认变大写,别名中的内容原封不动出现 ""->中的内容原封不动出现

select 123+456 "get sum" from emp;

select empno as 员工编号,ename "员工 姓名" from emp;

--9)

--字符串 ''  原封不动显示""

select distinct '哈哈' 笑 from emp e;

--10)

--字符串拼接 java中使用+  这里使用||

--查询 ab--cd  表达式

select distinct 'ab-'||'-cd' from emp;

--查询所有的员工名字,给他们来一个前缀SXT

select 'sxt-'||ename from emp;

--11)

--伪列 : 不存在的列就是伪列  比如:表达式,字符串

--12)

--虚表: 在oracle中不存在的表,也可以说是这个表中没有任何数据,没有任何字段 --oracle中的虚表:al

--虚表的作用:可以不使用distinct就可以去重的效果,因为里面没有数据,不会出现多行

select * from al;

select distinct 123*456 from emp;

select 123*456 from al;

select sysdate from al;

--比如查询当前时间

--13)

--给每一个员工在原来的基础上+100块钱奖金

--null 空

--null与数字运算,结果还为null

--null与字符串运算,结果原串

--nvl(参数1,参数2) 处理null使用  如果参数1为null,最终结果参数2,如果参数1不为null,最终的结果就是参数1

select comm 原奖金,comm||'100' 新奖金 from emp;

select comm 原奖金,nvl(comm,0)+100 新奖金  from emp

--一节结尾小练习

--查询所有员工的名字, 工种, 年薪(不带奖金)

select ename,job,sal*12 年薪 from emp;

--查询所有员工的名字,工种,年薪(带12月奖金的)

select ename,job,(sal+nvl(comm,0))*12 年薪 from emp;

--查询所有员工的名字, 工种, 年薪(带一次奖金的)

select ename,job,sal*12+nvl(comm,0) 年薪 from emp;

--select *|表达式|字符串|伪列|字段1 别名1,字段2 as 别名2... from 表名 别名|结果集 where 行过滤条件;

--执行流程: from-->where-->select确定结果集

-- 查询20部门的员工信息

--数据: *

--来源: emp

--条件: deptno=20

select * from emp where deptno=20;

-- > < >=  <=  = !=  <>

-- 查询工资大于1000的员工的姓名 工作岗位  工资  所属部门编号

--数据: ename,job,sal,deptno

--来源: emp

--条件: sal>1000

select ename,job,sal,deptno from emp where sal=1000;

-- 查询不在20部门工作的员工信息

select * from emp where deptno != 20;

select * from emp where deptno <> 20;

--where 中不能使用字段的别名

-- 查询员工的年薪大于20000的 员工名称、岗位 年薪

select ename 姓名,job 岗位,(sal+nvl(comm,0))*12 sum from emp where ((sal+nvl(comm,0))*12)>20000;

select ename 姓名,job 岗位,(sal+nvl(comm,0))*12 sum from emp;

select 岗位, sum

  from (select ename 姓名, job 岗位, (sal + nvl(comm, 0)) * 12 sum from emp)

where sum > 20000;

-- 查询  any(任意一个)  some(任意一个)  all(所有)

select * from emp where deptno = any(10,20);

select * from emp where deptno = some(10,20);

--大于最小的

select * from emp where sal> any(1500,2000); --薪资>1500的就可以

--大于最大的

select * from emp where sal> all(1500,2000); --薪资>2000的就可以

-- 查询 工种不为’SALESMAN’的员工信息 (注意 内容区分大小写)

select * from emp where not job ='SALESMAN';

--or或 and并且|都  not取反

-- -检索 工资 1600, 3000员工名称 岗位 工资

select ename,job,sal from emp where sal=1600 or sal=3000;

select ename,job,sal from emp where not (sal=1600 or sal=3000);

-- 工资在2000到3000之间的员工信息

select * from emp where sal>2000 and sal<3000;

--between 小范围值  and 大范围的值  两者之间  <= >=

select * from emp where sal between 1600 and 3000;

---查询 岗位 为 CLERK 且部门编号为 20的员工名称 部门编号,工资

select ename ,deptno ,sal from emp where job='CLERK' and deptno=20;

-- 查询 岗位 为 CLERK 或部门编号为 20的员工名称 部门编号,工资

select ename ,deptno ,sal,job from emp where job='CLERK' or deptno=20;

--查询 岗位 不是 CLERK 员工名称 部门编号,工资

select ename ,deptno ,sal,job from emp where job!='CLERK';

select ename ,deptno ,sal,job from emp where not job='CLERK';

select ename ,deptno ,sal,job from emp where job<>'CLERK';

-- 查询 岗位 不为 CLERK 并且部门编号不为 20的员工名称 部门编号,工资

select ename ,deptno ,sal,job from emp where job!='CLERK' and deptno!=20;

select ename ,deptno ,sal,job from emp where not (job='CLERK' or deptno=20);

--存在佣奖金的员工名称

select ename,comm from emp where not comm is null;

select ename,comm from emp where comm is not null;

--不存在奖金的员工名称

select ename,comm from emp where comm is null;

--集合

--Union,并集(去重) 对两个结果集进行并集操作,不包括重复行同时进行默认规则的排序;

--Union All,全集(不去重) 对两个结果集进行并集操作,包括重复行,不进行排序 ;

--Intersect,交集(找出重复) 对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

--Minus,差集( 减去重复 ) 对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序

--查询工资大于1500 或 含有佣金的人员姓名

select ename,sal,comm from emp where sal>1500 or comm is not null;

select ename,sal,comm from emp where sal>1500;

select ename,sal,comm from emp where comm is not null;

--并集

select ename,sal,comm from emp where sal>1500

Union

select ename,sal,comm from emp where comm is not null;

select ename,sal,comm from emp where sal>1500

Union all

select ename,sal,comm from emp where comm is not null;

--查询显示不存在雇员的所有部门号。

--求出所有的部门号

select deptno from dept;

--有员工的部门号

select distinct deptno from emp;

select deptno from dept

Minus

select distinct deptno from emp;

-- 查询显示存在雇员的所有部门号。

select deptno from dept

Intersect

select distinct deptno from emp;

--模糊匹配  like %任意任意字符  _一个任意字符  一起使用

--查询员工姓名中包含字符A的员工信息

select * from emp where ename like '%A%';

--完全匹配

select * from emp where ename like 'SMITH';

--查询员工姓名以'A'结尾的员工信息

select * from emp where ename like 'A%';

--查询员工姓名中第二个字母为A的员工信息

select * from emp where ename like '_A%';

insert into emp(empno,ename,sal) values(1000,'t_%test',8989);

insert into emp(empno,ename,sal) values(1200,'t_tes%t',8000);

--escape('单个字符')指定转义符

--查询员工姓名中包含字符%的员工信息

select * from emp where ename like '%B%%' escape('B');

--当执行插入数据,删除数据,修改的时候,默认开启事务

--可提交  commit 

--可回滚  rollback

--多个人中任意一个值就可以

select * from emp where sal=1600 or sal=3000 or sal=1500;

select * from emp where sal in(1500,1600,3000);

--select 字段.. from 结果集 where 行过滤条件 order by 排序字段 desc降序|asc升序(默认)..;

--执行流程: from--> where-->select-->排序

select empno,ename,sal from emp order by sal desc,empno asc;

--按照奖金升序排序,如果存在null值,所有的奖金null值的数据最先显示

select empno,ename,sal,comm from emp where deptno in (10,30) order by comm asc nulls first;

⑵ 谁能介绍下oracle数据库的ORA_rowscn这个东西

基于行跟踪的ROWDEPENDENCIES ORA_ROWSCN信息
在Oracle 10g中的引入了ORA_ROWSCN伪列新特性。基于此种伪列所提供的信息,我们可以方便地找出某个数据块或某一个行最近被修改的时间戳。在亩改茄默认情况迅察下,10g下表会以非行依赖歼备性(NOROWDEPENDENCIES)的属性创建,这意味着我们可观察的ORA_ROWSCN信息是
以块级跟踪的,无法分辨同一块内的多行间不同的修改时间。为了达到行级粒度的跟踪我们需要在建表时指定基于行依赖性的ROWDEPENDENCIES字
句。如:

sql Server里有没有类似Oracle里的rownum的伪列

rownum和Dual表,应该是Oracle所特有的东西。 SQL Server和Sybase都没有这个,其它的数据库不好说。 rownum关键字,是Oracle为查询返回的行,顺序分配的编号,当然也可以作为Where条件来使用。 Dual表:也是Oracle方便查询而使用的芦森首特殊表。Oracle内部机制可以确保该表始终只有一行一列一个X值。 下陪数面是从网上找到的使春燃用临时表的方法,因为没有Sql server环境,未测试,仅供参考: select rownum=identity(int,1,1),id,name into #t from table1 select * from #t drop table #t 如果只想查询记录,可以参考下面的子查询代码: select * from 表 where id = ALL (select id from 表); select * from 表 where id <= ALL (select id from 表);

⑷ oracle中uid是什么关键字

一、

伪列就像Oracle中的一个表列,但实际上它并未存储在表中。伪列可以从表中查询,但是不能插入、更新或删除它们的值。常用的伪列:rowid和rownum。
Rowid:数据库中的每一行都有一个行地址,Rowid伪列返回该行地址。可以使用Rowid值来定位表中的一行。通常情况下,Rowid值可以唯一地标识数据库中的一行。
Rowid伪列有以下重要用途:
1)能以最快的方式访问表中的一行;
2)能显示表的行是如何存储的。
3)可以作为燃扮表中行的唯一标识。
如:SQL> select rowid,ename from emp;
Rownum:对于一个查询返回的每一行,Rownum伪列返回一个数值代表的次序。返回的第一行的Rownum值为1,第二行的Rownum值为2,依此类推。通过使用Rownum伪列,用户可以限制查询返回的行数。
如:SQL>select * from emp where rownum<11; 从EMP表中提取10条饥段铅记录

二、

oracle中不支持select top n from tablename 查询,但是通过 order by 和 rownum 组合可以实现此功能。例如:SELECT列名1...列名nFROM
(SELECT列名1...列名nFROM 表名 ORDER BY 列名1...列名n)
WHERE ROWNUM <= N(抽出记录烂好数)
ORDER BY ROWNUM ASC

⑸ oracle怎么给表的列加注释

Oracle添加注释的语法为:

commentoncolumn字段名is'注释名';

举例:

创建表:

CREATETABLEt1(
idvarchar2(32)primarykey,
nameVARCHAR2(8)NOTNULL,
agenumber,
);

添加表注释:

COMMENTONtablet1IS'个人信息';

添加字段注释:

commentoncolumnt1.idis'id';
commentoncolumnt1.nameis'姓名';
commentoncolumnt1.ageis'年龄';

⑹ 数据库中的伪列指的是什么

数据库术语,指的是在物理上这个列并不存在,只是在查询时才构喊枯团造出来。伪列通常是败慎自由分配的,用户无法执行修改等操作。比如Oracle中的RowID字段,使用RowID可以快速地定位到郑橘某个对应的数据,因为它标记了记录所对应的物理地址,是唯一的。

⑺ Oracle伪列,伪表是什么有什么用与普通表、普通列有什么区别

伪列:数据库没有实际保存的列。
例如,rownum。 就是行号。你可以在任何一个talbe,view,或者select中查到这个列,但是,这个列不存在任何的物理的存储。
另外的例子: level , rowid 都是伪列
普通的列,是实际有存储的,在物理存储上就有这个数据。伪列就没有,是算出来的。可以认为是一种特殊的函数。

⑻ 在ORACLE数据库中什么叫伪列

伪列的数据是由ORACLE进行维护和管理的,用户不能对这个列修改,只能查看。
所有的伪列要得到值必须要显式的指定。
最常用的两个伪列:rownum和rowid。
1、

ROWNUM(迅模行号):是在查询操作时由亩码缓ORACLE为每一行记录自动生成的一个编号。
每一次查询ROWNUM都会重新生成。(查询的结果中Oracle给你增加的一个编号,根据结果来重新生成)
rownum永远按照默认的顺序生成。(不受order by的影响)
rownum只能使用 <、 <= ,不能使用 > 、>= 符号,原因是:Oracle是基于行的数据库,行号永远是从1开始,即必须有第一行,才有第二行。
2、
ROWID(记录编号):是表的伪列,是用来唯一标识表中的一条记录,并且间接给出了表行的物理位置,定位表行最快的方式。
主键:标识唯一的一条业务数据的标识。主键是模好给业务给用户用的。不是给数据库用的。
记录编号rowid:标识唯一的一条数据的。主要是给数据库用的。类似UUID。

⑼ 数据库中数据类型有哪些

Character 数据类型

Character 数据类型用来存储字母数字型数据。当你在oracle 中定义一个character 数据时,通常需要制定字段的长度,它是该字段的最大长度。ORACLE提供以下几种character 数据类型:

CHAR() CHAR数据类型是一种有固定长度和最大长度的字符串。存储在数据类型为CHAR字段中的数据将以空格的形式补到最大长度。长度定义在1——2000字节之间。

当你创建一个CHAR型字段,数据库将保证在这个字段中的所有数据是定义长度,如果某个数据比定义长度短,那么将用空格在数据的右边补到定义长度。如果长度大于定义长度将会触发错误信息。

VARCHAR() varchar型数据是varchar2型数据的快照。

VARCHAR2() varchar2数据唤巧类型是一种可变长度的、有最大长度的字母数字型数据。Varchar2类型的字段长度可以达到4000字节,Varchar2类型的变量长度可以达到32676字节。

一个空的varchar2(2000)字段和一个空的varchar2(2)字段所占用的空间是一样的。

NCHAR() 和 NVARCHAR2() NCHAR() 和 NVARCHAR2()数据类型分别与CHAR() 和 VARCHAR2()类型是相同的,只不过它们用来存储NLS(National Language Support)数据。

LONG LONG 数据类型是一个遗留下来的而且在将来不会被支持的数据类型。它将被LOB(Large Object)数据类型所代替。

比较规则 Varchar2和char数据类型和差键根据尾部的空格有不同的比较规则。对Char型数据,尾部的空格将被忽略掉,对于Varchar2型数据尾部带空格的数据排序比没有空庆宴格的要大些。比如:

Char 型数据: ‘YO’=‘YO’

Varchar2型数据:‘YO’<’YO’

Numberic 数据类型

Numberic 数据类型用来存储负的和正的整数、分数和浮点型数据,范围在-1*10-103 和9.99999*10125之间,有38位的精确度。标识一个数据超出这个范围时就会出错。

Number(

) Number数据类型存储一个有p位精确度的s位等级的数据。

DATE 数据类型

DATE 数据类型用来存储日期和时间格式的数据。这种格式可以转换为其他格式的数据去浏览,而且它有专门的函数和属性用来控制和计算。以下的几种信息都包含在DATE数据类型中:

Century

Year

Month

Day

Hour

Minute

Second

LOB 数据类型

LOB(Large Object) 数据类型存储非结构化数据,比如二进制文件,图形文件,或其他外部文件。LOB 可以存储到4G字节大小。数据可以存储到数据库中也可以存储到外部数据文件中。LOB数据的控制通过DBMS_LOB 包实现。BLOB, NCLOB, 和CLOB 数据可以存储到不同的表空间中,BFILE存储在服务器上的外部文件中。LOB数据类型有以下几种:

BLOB: 二进制数据

CLOB: 字符型数据

BFILE: 二进制文件

其他数据类型

ROWID ROWID 数据类型是ORACLE数据表中的一个伪列,它是数据表中每行数据内在的唯一的标识。

热点内容
g代码编译器 发布:2025-04-22 20:25:20 浏览:272
段式编译器 发布:2025-04-22 20:15:45 浏览:202
android原版 发布:2025-04-22 20:15:04 浏览:77
特种兵一个组怎么配置 发布:2025-04-22 20:01:15 浏览:733
oracle数据库命令 发布:2025-04-22 19:47:55 浏览:564
python异或运算符 发布:2025-04-22 19:45:21 浏览:832
网络为什么改不了服务器 发布:2025-04-22 19:44:38 浏览:535
js压缩base64 发布:2025-04-22 19:29:53 浏览:200
飓风加密工具 发布:2025-04-22 19:27:50 浏览:640
发票江苏服务器地址 发布:2025-04-22 19:21:29 浏览:35