现在的位置: 首页 > 综合 > 正文

oracle9i学习心得之一 基本SQL语句

2013年09月12日 ⁄ 综合 ⁄ 共 3795字 ⁄ 字号 评论关闭

1.SQL语句包括:


  1) 数据查询:select
  2) DML(data manipulation language):insert、update、delete、merge
  3) DDL(data definition language):create、alter、drop、rename、truncate
  4) 事务控制:commit、rollback、savepoint
  5) DCL(数据控制语言):grant、revoke

 

2.基本SELECT语句


  SELECT * | {[DISTINCT] column [alias],...}
  FROM   table;

 

例:SELECT deptno,loc
          FROM   dept;
  
3.显示表的结构


  DESC[RIBE]  tablename

 

4.表说明


1)雇员信息表(emp)

  名称     是否为空?     类型 
  EMPNO    NOT NULL    NUMBER(4) 
  ENAME                VARCHAR2(10) 
  JOB                  VARCHAR2(9) 
  MGR                  NUMBER(4) 
  HIREDATE             DATE 
  SAL                  NUMBER(7,2) 
  COMM                 NUMBER(7,2) 
  DEPTNO               NUMBER(2)
 
2)部门表(dept)

  名称     是否为空?     类型 
  DEPTNO   NOT NULL    NUMBER(2) 
  DNAME                VARCHAR2(14) 
  LOC                  VARCHAR2(13)

 

3) 薪水等级表(salgrade)
   名称     是否为空?    类型 
   GRADE                NUMBER 
   LOSAL                NUMBER 
   HISAL                NUMBER 

 

5.SELECT语句练习

例1:
        SELECT *  FROM dept;

结果:
        DEPTNO     DNAME                    LOC 
          10              ACCOUNTING       NEW YORK 
          20              RESEARCH             DALLAS 
          30              SALES                     CHICAGO 
          40              OPERATIONS        BOSTON 

          ...
  
例2:
        SELECT deptno,loc
        FROM   dept;

结果:
        DEPTNO      LOC 
          10      NEW YORK 
          20      DALLAS 
          30      CHICAGO 
          40      BOSTON 

          ...

 

6.执行SQL语句的工具:


  1)SQL*Plus工具
  2)iSQL*Plus工具
  3)PL/SQL Developer工具

 

7.算术表达式

  使用+,-,*,/可创建一个数据型或日期型数据的表达式

例1:

       SELECT ename,sal,sal+300
       FROM   emp;
结果:
        ENAME      SAL      SAL+300 
        SMITH      2000     2300 
        ALLEN      1600     1900 
        WARD       1250     1550 
        JONES      2975     3275 
        ... 
例2:
       SELECT ename,sal,12*sal+100
       FROM   emp;
结果:
       ENAME     SAL    12*SAL+100 
       SMITH     2000     24100 
       ALLEN     1600     19300 
       WARD      1250     15100 
       JONES     2975     35800 
       ...
例3:
       SELECT ename,sal,12*(sal+100)
       FROM   emp
;
结果:
       ENAME    SAL    12*(SAL+100) 
       SMITH   2000       25200 
       ALLEN   1600       20400 
       WARD    1250       16200 
       JONES   2975       36900 
       ...

8.空值NULL

  -不同于零或者空格
  -是在一种无效的、未赋值、未知的或不可用的值
 

例:
       SELECT ename,job,sal,comm
       FROM   emp;
结果:
       ENAME     JOB       SAL      COMM    
       MARTIN  SALESMAN    1250     1400 
       BLAKE   MANAGER     2850    
       CLARK   MANAGER     2450         
       TURNER  SALESMAN    1500      0 
       ADAMS   CLERK       1100

       ...
  
注:任何包含空值的算术表达式运算后的结果都为空值NULL

例:
     SELECT ename,12*sal,12*sal+comm
     FROM   emp
     WHERE  ename='BLAKE';
结果:
        ENAME  12*SAL  12*SAL+COMM 
        BLAKE   34200    
 
9.列的别名:

  1)紧跟列名或在列名和别名之间加入可选关键字AS
  2)如果别名包含空格或特殊关键字符或区分大小写则需要使用双引号

例1:
     SELECT ename AS name,sal salary
     FROM   emp;
结果:
        NAME    SALARY 
        SMITH    2000 
        ...

例2:
       SELECT ename "Name",sal*12 "Annual Salary"
       FROM  emp;
结果:
        Name      Annual Salary 
        SMITH         24000 
        ALLEN         19200

 

10.连接操作符


  1)用于列与列、列和字符之间的连接
  2)形式上是连个竖杠:||
  3)用于创建字符表达式的结果列
  
例:
     SELECT ename||job AS "Employees"
     FROM   emp;
结果:
         Employees 
        SMITHCLERK 
        ALLENSALESMAN 
        WARDSALESMAN 
        JONESMANAGER 
        ...

  4)原义字符串:
    -是包含在SELECT列表中的字符、数字或日期
    -日期和字符字面值必须用单引号引起来
    -每个字符串都会在每个数据行输出中出现

 

例:
      SELECT ename||' is a '||job AS "Employees"
      FROM   emp;
结果:
               Employees 
        SMITH is a CLERK 
        ALLEN is a SALESMAN 
        WARD is a SALESMAN 
        JONES is a MANAGER 
        ...
 

11. 消除重复行

   在SELECT子句中使用关键字DISTINCT可消除重复行
 
   例:

           SELECT DISTINCT deptno
           FROM   emp;

 

 

 

练习题


1.显示emp表结构

 

  DESC emp

 

2.显示emp表中所有列的数据

 

  SELECT * FROM emp;

 

3.显示emp表雇员编号、雇员名、薪水信息

 

  SEELCT empno,ename,sal
  FROM   emp;

 

4.显示emp表中不重复的工作类别

 

  SELECT DISTINCT job
  FROM   emp;
 
5.显示emp表中empno、sal*12、job,它们对应的别名为编号、年薪、工作类别
 
  SELECT empno "编号",sal*12 "年薪",job "工作类别"
  FROM   emp;

 

6.显示emp表的ename和sal列,要求显示的格式为:XXXX雇员的薪水为XXX。

 

  SELECT ename ||'雇员的薪水为 '||sal
  FROM   emp;

抱歉!评论已关闭.