《Oracle数据库编程笔记》之07-01:DQL

1、简单Select

1.1、查询所有列(不敢随便用)

--------------------------------------------------------------------------------
--Sample1:查询所有列(不敢随便用)
SELECT * FROM EMP;

SELECT * FROM Dept;

SELECT * FROM SALGRADE;
--------------------------------------------------------------------------------

1.2、查询指定列/限定列

--------------------------------------------------------------------------------
--Sample2:查询指定列/限定列
select  ENAME,EMPNO  from  emp;

select  Ename,JOB from  emp;

--------------------------------------------------------------------------------

1.3、算数运算

--------------------------------------------------------------------------------
--Sample3:算数运算
select  Ename,SAL,SAL  * 12 from  emp;

select  ename ,sal ,sal /20  from  emp;

select  ename ,sal ,comm, sal  +  comm   from  emp;

--------------------------------------------------------------------------------

1.4、连接符

连接符--列与列连接。

--------------------------------------------------------------------------------
--Sample1:连接符--列与列连接
select EMPNO,ENAME,  Empno || ename  From  EMP;

--Sample2:连接符--列与字符串的连接
select  empno ,Ename,      '职位:'  ||    JOB  from  emp;

--------------------------------------------------------------------------------

1.5、DISTINCT消除重复行

--------------------------------------------------------------------------------
--Sample1--在 SELECT 子句中使用关键字‘DISTINCT’删除重复行
select DISTINCT deptno  from emp;

--Sample2:查出所有当领导的职员编号
select DISTINCT mgr  from  emp;

--------------------------------------------------------------------------------

1.6、列别名

列别名的用途:

  • 重命名一个列。
  • 便于计算。
  • 紧跟列名,也可以在列名和别名之间加入关键字‘AS’,以便在别名中包含空格或特殊的字符并区分大小写。

注意:
""用于包含列名;当列名中有空格或者其它特殊字符时,必须使用""强制包含列名;

--------------------------------------------------------------------------------
--Sample1:列名 别名
select  ename 员工姓名,sal 工资 ,sal /20 年薪 from  emp;

--Sample2:列名 "别名"  (推荐使用)
select  ename "员工姓名",sal "工资" ,sal /20 "年薪" from  emp;


--Sample3:列名 as  别名
select  ename as  员工姓名,sal as   工资 ,sal /20 as   年薪 from  emp;

----Sampl41:列名 as  "别名"  (推荐使用)
select  ename as  "员工姓名",sal as   "工资" ,sal /20  as   "年薪" from  emp;

--------------------------------------------------------------------------------
-------------------------------------------------------------------------------

--Sample1:列别名,自定义列,“”符号

SELECT  EMPNO,
        ENAME,
        JOB,
        MGR,
        HIREDATE,
        SAL  "工资",
        300  涨薪,
        SAL + 300 AS "最新   工资" 
        FROM  emp;

--列别名,""符号

-------------------------------------------------------------------------------
SELECT "empno" AS 员工编号  ,ename 员工姓名  FROM emp;

SELECT  'Hello' FROM  emp;
SELECT  300 常量 FROM  emp;
SELECT  300 AS 常量 FROM  emp;
SELECT  300 AS "常  量" FROM  emp;
SELECT  300 AS "常!@#$%^&量" FROM  emp;

-------------------------------------------------------------------------------

2、特殊查询(此处了解即可)

2.1、查询表中行数

--------------------------------------------------------------------------------

--查询表中行数
select  Count(*) from UserInfo;

--------------------------------------------------------------------------------

2.2、查询行编号和ID

--------------------------------------------------------------------------------

--查询行编号和ID
select ROWID ,UserInfoID,NickName,Sex From  UserInfo;
select ROWNUM ,UserInfoID,NickName,Sex From  UserInfo;

--------------------------------------------------------------------------------

2.3、查询分页数据(子查询)

--------------------------------------------------------------------------------

--查询分页数据(子查询)
SELECT * 
  FROM (select ROWNUM ,UserInfoID,NickName,Sex From  UserInfo) tmpUserInfo;
  
--------------------------------------------------------------------------------

2.4、Top N查询

--------------------------------------------------------------------------------
  
--查询第一页,每页2条(Top N查询)
SELECT * 
  FROM (select ROWNUM ,UserInfoID,NickName,Sex From  UserInfo) tmpUserInfo
  Where Rownum > 5  ;
  
--------------------------------------------------------------------------------

3、WHERE过滤/条件查询

注意:
字符和日期:
字符和日期要包含在单引号中。
字符大小写敏感,日期格式敏感。
默认的日期格式是 DD-MON-RR。


-------------------------------------------------------------------------------
SELECT  *  FROM  emp;

--Sample1:查询部门编号为30的所有员工信息
SELECT  *  FROM emp
WHERE deptno = 30;

--Sample1:查询员工姓名为james的员工信息
SELECT * FROM emp
Where ename  = 'JAMES';

SELECT * FROM emp
Where ename  = 'james';

--Sample3:查询入职日期为1980年12月17日的员工信息
SELECT *  FROM   emp
Where   hiredate = '17-12月-80';


--Sample4:过滤条件+ 排序
SELECT  *  FROM  emp 
    WHERE  hiredate = '03-12月-81'
    Order by sal
    ;
    
--Sample5:多条件
SELECT  *  FROM  emp 
    WHERE  DEPTNO = 30 or sal  > 2000
    ORDER BY sal
    ;
    
-------------------------------------------------------------------------------

4、ORDER BY

-------------------------------------------------------------------------------
-- 默认排序。只指定了排序列但没有明确指定排序方式,默认为升序ASC。
SELECT  *  FROM emp ORDER BY sal;

--降序
SELECT  *  FROM emp ORDER BY sal  DESC;
  
--升序
SELECT  *  FROM emp ORDER BY sal  ASC;
  
--多列排序,
SELECT  *  FROM emp ORDER BY deptno DESC, sal  DESC;

--按照别名排序。年薪
SELECT EMPNO, ENAME, SAL * 12 Annsal
FROM   emp
ORDER BY Annsal ;

--按照别名排序。日薪
SELECT empno, ename, round( sal/30 , 2 ) salofday 
FROM emp
ORDER BY salofday;


-------------------------------------------------------------------------------

5、Dual表

dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。主要用来测试表达式;


-------------------------------------------------------------------------------
DESC  dual;
SELECT * FROM dual;
INSERT INTO dual VALUES ('A');
INSERT INTO dual VALUES ('B');
INSERT INTO dual VALUES ('C');
COMMIT;

--1、查看当前用户,可以在 SQL Plus中执行下面语句:
SELECT  USER  FROM  dual;

--2、用来调用系统函数
SELECT  sysdate FROM  dual;--获得当前系统时间
select TO_CHAR(sysdate,'yyyy-mm-dd hh24:mi:ss') FROM dual;--获得当前系统时间
select SYS_CONTEXT('USERENV','TERMINAL') FROM dual;       --获得主机名
select SYS_CONTEXT('USERENV','language') FROM dual;       --获得当前 locale
select dbms_random.random FROM dual;                      --获得一个随机数
--3、得到序列的下一个值或当前值,用下面语句

create  sequence  my_sequence ;

select my_sequence.nextval FROM dual;--获得序列my_sequence的下一个值
select my_sequence.currval FROM dual;--获得序列my_sequence的当前值
--4、可以用做计算器
SELECT  7*9 FROM  dual;


--查询Dual的Object类型
SELECT  owner,  object_name ,  object_type  FROM  dba_objects  WHERE  object_name LIKE '%DUAL%' order  by object_name;


SELECT  owner,  object_name ,  object_type  FROM  dba_objects  WHERE  object_name LIKE '%DUAL%';
--显示Dual表结构
DESC dual;


-------------------------------------------------------------------------------

6、DESCRIBE

-------------------------------------------------------------------------------


--显示表结构
DESCRIBE UserInfo;


--简写
DESC UserInfo;


--------------------------------------------------------------------------------
--Sample1:Desc显示表结构
DESC emp;

--Sample2:DESCRIBE显示表结构
DESCRIBE emp;

--------------------------------------------------------------------------------


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
支付 ¥20.00 继续阅读
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容

  • SQL ==SQLPLUS== DML(Data Manipulation Language,数据操作语言)---...
    蝌蚪1573阅读 593评论 0 4
  • 设置列别名 设置列别名,需要在列名和别名中间加AS或者空格,如 值得注意的是,这个别名只能用双引号括起来,也可以不...
    Azur_wxj阅读 682评论 0 1
  • 手动不易,转发请注明出处 --Trance 数据库系统命令: (1).查看存储过程状态:show pro...
    Trance_b54c阅读 1,665评论 0 8
  • 闺蜜兼饭友,因为小腿过敏去医院了 所以,今天的一分一秒我都是交给自己 自己看书,思考, 听歌,吃饭,刷帖,看电影 ...
    Cedarm阅读 193评论 0 0
  • 因简书改版后无法添加扩展链接,20170306问题解析请到公众号查看,问题解析在公众号首发,公众号ID:wekno...
    weknow阅读 255评论 0 4