【SQL】SELECT 语句

1.1 SELECT基本语法:

Select * |{[distinct]colum|expression [alias],…} from table;

1.2 查询当前用户所有在用的表及视图:

HR@ORA11GR2>select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
BIN$QVpuz+vXGO3gUwEAAH/YAA==$0 TABLE
BIN$QX3Co/ONIBTgUwEAAH9Xiw==$0 TABLE
BIN$QXf2P63XEXzgUwEAAH8s7A==$0 TABLE
BIN$QXf2P63YEXzgUwEAAH8s7A==$0 TABLE
BIN$QXf2P63aEXzgUwEAAH8s7A==$0 TABLE

1.3 查看表的结构定义

HR@ORA11GR2>desc employees;
 Name                                                  Null?    Type
 ----------------------------------------------------- -------- ------------------------------------
 EMPLOYEE_ID                                           NOT NULL NUMBER(6)
 FIRST_NAME                                                     VARCHAR2(20)
 LAST_NAME                                             NOT NULL VARCHAR2(25)
 EMAIL                                                 NOT NULL VARCHAR2(25)
 PHONE_NUMBER                                                   VARCHAR2(20)
 HIRE_DATE                                             NOT NULL DATE
 JOB_ID                                                NOT NULL VARCHAR2(10)
 SALARY                                                         NUMBER(8,2)
 COMMISSION_PCT                                                 NUMBER(2,2)
 MANAGER_ID                                                     NUMBER(6)
 DEPARTMENT_ID                                                  NUMBER(4)

1.4 查看表中所有数据

HR@ORA11GR2>select * from departments;

DEPARTMENT_ID DEPARTMENT_NAME                MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
           10 Administration                        200        1700
           20 Marketing                             201        1800
           30 Purchasing                            114        1700
           40 Human Resources                       203        2400
           50 Shipping                              121        1500
           60 IT                                    103        1400   

1.5 查看表中指定列的数据

HR@ORA11GR2>select first_name,last_name,employee_id from employees;

FIRST_NAME           LAST_NAME                 EMPLOYEE_ID
-------------------- ------------------------- -----------
Steven               King                              100
Neena                Kochhar                           101
Lex                  De Haan                           102
Alexander            Hunold                            103
Bruce                Ernst                             104
David                Austin                            105

1.6 显示某一列的唯一值

HR@ORA11GR2>select distinct first_name from employees;

FIRST_NAME
--------------------
Ellen
Mozhe
Hermann
Alberto
Britney

1.7sql语句中的加、减、乘、除运算
1)数值型字段的加、减、乘、除运算

HR@ORA11GR2>select first_name,salary,salary+1000,salary-1000,salary*2,salary/2 from employees where first_name='Sarath';

FIRST_NAME       SALARY SALARY+1000 SALARY-1000   SALARY*2   SALARY/2
------------ ---------- ----------- ----------- ---------- ----------
Sarath             7000        8000        6000      14000       3500

2)日期型字段进行加减(日期型字段不能乘除)

HR@ORA11GR2>select hire_date,hire_date-1,hire_date+1 from employees where first_name='Sarath';

HIRE_DATE           HIRE_DATE-1         HIRE_DATE+1
------------------- ------------------- -------------------
2006-11-03 00:00:00 2006-11-02 00:00:00 2006-11-04 00:00:00

1.8null的检索
注:null值无法用=或<>来进行判断,只允许用is null和is not null来进行判断

HR@ORA11GR2>select count(*) from employees where commission_pct is null;

  COUNT(*)
----------
        72

HR@ORA11GR2>select count(*) from employees where commission_pct is not null;

  COUNT(*)
----------
        35

1.9 NULL的计算
注:NULL值与任何值四则运算后,其结果均为NULL。

HR@ORA11GR2>select last_name,commission_pct,commission_pct+200,commission_pct-200,commission_pct*2 from employees;

LAST_NAME                 COMMISSION_PCT COMMISSION_PCT+200 COMMISSION_PCT-200 COMMISSION_PCT*2
------------------------- -------------- ------------------ ------------------ ----------------
OConnell
Grant
Whalen
Hartstein
Russell                               .4              200.4             -199.6               .8

LAST_NAME                 COMMISSION_PCT COMMISSION_PCT+200 COMMISSION_PCT-200 COMMISSION_PCT*2
------------------------- -------------- ------------------ ------------------ ----------------
Partners                              .3              200.3             -199.7               .6
Errazuriz                             .3              200.3             -199.7               .6
Cambrault                             .3              200.3             -199.7               .6
Zlotkey                               .2              200.2             -199.8               .4
Tucker                                .3              200.3             -199.7               .6

1.10 SQL连接符与单引号的使用<可用来编写批量脚本>

HR@ORA11GR2>select 'select * from '||tname||';' from tab;

'SELECT*FROM'||TNAME||';'
---------------------------------------------
select * from BIN$QVpuz+vXGO3gUwEAAH/YAA==$0;
select * from BIN$QX3Co/ONIBTgUwEAAH9Xiw==$0;
select * from BIN$QXf2P63XEXzgUwEAAH8s7A==$0;
select * from BIN$QXf2P63YEXzgUwEAAH8s7A==$0;
select * from BIN$QXf2P63aEXzgUwEAAH8s7A==$0;
select * from BIN$QXf2P63bEXzgUwEAAH8s7A==$0;
select * from BIN$QXf2P63dEXzgUwEAAH8s7A==$0;
select * from BIN$QXs3u7LlHOfgUwEAAH94zw==$0;
select * from COUNTRIES;
select * from COURSE;
select * from DEPARTMENTS;

1.11 Aslias别名
在SELECT选取字段后可接 as 或者空格,来替代字段别名,如果还有空格、特殊字符以及大小写需要用双引号

HR@ORA11GR2>select 'xiaoming' as "Name",1 id from dual;

Name             ID
-------- ----------
xiaoming          1

1.12 distinct 删除重复值

HR@ORA11GR2>select distinct manager_id from employees;

MANAGER_ID
----------
       100

       123
       120
       121
       147
       205
       108
       148
       149
       201

MANAGER_ID
----------
       102
       101
       114
       124
       145
       146
       103
       122

HR@ORA11GR2>select distinct manager_id,department_id from employees;

MANAGER_ID DEPARTMENT_ID
---------- -------------
       100            30
       147            80
                      90
       108           100
       149
       101            40
       100            90
       102            60
       103            60
       114            30
       100            50
原文地址:https://www.cnblogs.com/NextAction/p/7366706.html