Oracle OCP(01):使用 SQL SELECT 语句检索数据

本文详细介绍了Oracle SQL的基础语法,包括SELECT语句的结构、特殊符号的使用、别名设置、去重查询、DESCRIBE命令以及常见查询实例。适合初学者快速掌握Oracle SQL的基本操作。

一、基础语法

SELECT {[distinct]列名,列名,…}|*
  FROM 表名
[WHERE 条件]
[GROUP BY 分组列名]
[HAVING 聚合函数]
[ORDER BY 排序列名 ASC|DESC];

二、符号

  • 单引号(’):在 Oracle 中,应该只使用单引号将文本和字符和日期括起来,不能使用引号(包括单双引号)将数字括起来。
  • 双引号("):在 Oracle 中,单双引号含义不同。双引号被用来将包含特定字符或者空格的列别名括起来。双引号还被用来将文本放入日期格式。
  • 撇号(’):在 Oracle 中,撇号也可以写成彼此相邻的两个单引号。为了在供应商名字中间查找所有带撇号的供应商名字,可以这样编写代码:
    select * from l_suppliers where supplier_name like '%''%';
    
  • &符号:在 Oracle 中,& 符号常用来指出一个变量。例如,&fox 是一个变量,稍微有点不同的一种 && fox。每当 &fox 出现在 Oracle 脚本中时,都会要求您为它提供一个值。而使用 &&fox,您只需要在 &&fox 第一次出现时为它提供变量值。如果想将&符号作为普通的符号使用,则应该关闭这个特性。要想关闭这个特性,可以运行以下的命令: set define off ,这是一个 SQLplus 命令,不是一个 SQL 命令。SQLplus 设置了 SQL 在 Oracle 中运行的环境。
  • 双竖线(||):Oracle 使用双竖线表示字符串连接函数。
  • 星号():select * 意味着选择所有的列,count() 意味着计算所有的行,表示通配符时,表示 0 个或任意多个字符。
  • 正斜杠(/):在 Oracle 中,用来终止 SQL 语句。更准确的说,是表示了“运行现在位于缓冲区的 SQL 代码”。正斜杠也用作分隔项。
  • 不等于:有多种表达方式:!=、^=、<>、not xxx=yyy、not(xxx=yyy)
  • 加减乘除:+ - * /

三、别名

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

四、去重

员工分布在哪些部门 ,列出部门ID

SELECT DISTINCT DEPARTMENT_ID FROM EMPLOYEES;

五、DESCRIBE

DESC OWNER.TABLE_NAME
​
SELECT COLUMN_NAME,
      DECODE(NULLABLE, 'Y', ' ', 'NOT NULL') NULLABLE,
      DECODE(DATA_TYPE,
              'RAW', DATA_TYPE || '(' || DATA_LENGTH || ')',
              'CHAR', DATA_TYPE || '(' || DATA_LENGTH || ')',
              'VARCHAR', DATA_TYPE || '(' || DATA_LENGTH || ')',
              'VARCHAR2', DATA_TYPE || '(' || DATA_LENGTH || ')',
              'NUMBER', NVL2(DATA_PRECISION,
                            DECODE(DATA_SCALE,
                                    0, DATA_TYPE || '(' || DATA_PRECISION || ')',
                                    DATA_TYPE || '(' || DATA_PRECISION || ',' || DATA_SCALE || ')'),
                            DATA_TYPE),
              DATA_TYPE) DATA_TYPE
  FROM DBA_TAB_COLUMNS
WHERE OWNER = UPPER('&sch')
  AND TABLE_NAME = UPPER('&tab')
ORDER BY COLUMN_ID;

六、查询例子

--*:表示查询所有列
select * from employees;--查询固定列
select DEPARTMENT_NAME, MANAGER_ID
from departments;--*:在运算符里表示乘以
select FIRST_NAME 名字,
SALARY * COMMISSION_PCT*12 年度奖金
from employees
where salary > 10000;--||:拼接字符串 
--'':表示单引号,在字符串里显示,用于区分'结束输出 
select last_name || ' ''s salary is : ' || salary aaa
from employees
where salary > 10000;
​
--多个单引号时使用q'[]',避免多次使用''
select last_name || q'[ 's sa'la'ry' is : ]' || salary aaa
from employees
where salary > 10000;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值