笔记081109 基础查询 单行函数 字符串操作 数字操作

来源:互联网 发布:网络社区超市 编辑:程序博客网 时间:2024/05/09 22:39

笔记081109

2008-11-11 下午7:52 发布人 tiger chang  [更新时间:2008-11-11 下午8:37]*************************************************
*    NAME    :ChangTiger            *
*    DATE    :19:28 2008-11-9      *
*    EMAIL    :o52tiger@yahoo.com.cn        *
*************************************************


**********************************************************************************
建表 TIGER2
建表脚本:

    mis% cat new_table.sql
    CREATE TABLE TIGER2 (
    ID NUMBER(4),
    NAME VARCHAR2(20),
    AGE NUMBER(3),
    ADDR VARCHAR2(50),
    BIRTH DATE                              --------日期类型   插入数据读取当前系统时间是用sysdate
    );
插入一些数据
    INSERT INTO TIGER2 VALUES(1,'CHANGHU',22,'NANCHANG HANGKONG DAXUE',SYSDATE);
    INSERT INTO TIGER2 VALUES(2,'CHANGTIGER',22,'BEIJING',SYSDATE);
    INSERT INTO TIGER2 VALUES(3,'WANGLIHONG',23,'TAIPEI',SYSDATE);
    INSERT INTO TIGER2 VALUES(4,'ZHOUHUAJIAN',45,'TAIPEI TAIWAN',SYSDATE);
查询结果   
SELECT * FROM TIGER2;

**********************************************************************************
调用脚本生成表 并插入数据 查询数据;
    SQL> start /export/home/changhu/shell/new_table.sql;
这是我的文件的地址,操作系统是UNIX
**********************************************************************************

基础查询
    SQL> SELECT * FROM TIGER2 WHERE AGE <> 45;  年龄不等于45的;
    SQL> SELECT * FROM TIGER2 WHERE AGE != 45;   同上
    SQL> SELECT * FROM TIGER2 WHERE AGE ^= 45;   同上
    SQL> SELECT * FROM TIGER2 WHERE AGE > 23;    年龄大于23的;
    SQL> SELECT * FROM TIGER2 WHERE AGE BETWEEN 22 AND 23;    年龄在22 和23之间的包括22 和23;
    SQL> SELECT * FROM TIGER2 WHERE AGE >= 22 AND AGE <=23;     与上面的等价;
    SQL> SELECT * FROM tiger2 WHERE age IN (22 ,23);                                查询年龄在是22 或23的数据;
    SQL> SELECT * FROM TIGER2 WHERE AGE IN (22,23,45);                      同上;
    SQL> SELECT * FROM TIGER2 WHERE AGE NOT IN (22,23 );                  与上面的正好相反 ;
    SQL> SELECT * FROM TIGER2 WHERE AGE = 22 OR AGE = 23 OR AGE = 45;           与上面的等价;
    SQL> SELECT * FROM TIGER2 WHERE NAME LIKE 'CHANG%';              查询以CHANG开头的名字;
    SQL> SELECT * FROM TIGER2 WHERE NAME LIKE 'CHANG__';              查询以CHANG开头并在其后只有两个        字符的数据;
    SQL> SELECT * FROM TIGER2 WHERE NAME NOT LIKE '%HU';             与上面的相反;
    SQL> SELECT * FROM TIGER2 WHERE NAME LIKE '%N%';                      查询名字中含有N的数据
    SQL> SELECT * FROM TIGER2 WHERE ADDR LIKE 'NAN%';
    SQL> INSERT INTO TIGER2 VALUES (5 ,'Z_HONG',33,'CHINA BEIJING ',SYSDATE);    插入一条含    有_的数据;
    SQL> SELECT * FROM TIGER2 WHERE NAME LIKE '%/_HONG' ESCAPE '/';              查询上述数据,用/表    示转义 ,并在其后添加ESCAPE '/' 说明;
    SQL> INSERT INTO TIGER2 VALUES (6,'BAI%DU',100,'SHENZHEN GUANGZHOU',SYSDATE); 同上
    SQL> SELECT * FROM TIGER2 WHERE NAME LIKE '%/%DU' ESCAPE '/'; 同上
    SQL> SELECT * FROM TIGER2 WHERE NAME LIKE '%&%DU' ESCAPE '&'; 用&也可以表示转义;用    法和上面的 /一样;
    SQL> SELECT * FROM TIGER2 WHERE NAME LIKE '%P%DU' ESCAPE 'P';
    SQL> SELECT * FROM TIGER2 WHERE ADDR IS NULL; 查询出地址为空的数据这里要用的是IS         NULL
    SQL> SELECT * FROM TIGER2 WHERE ADDR IS NOT NULL;   与上面的正好相反;   
   
   
    SQL> SELECT * FROM TIGER2 WHERE NAME LIKE '%N%' AND AGE < 24; 多个条件联合起来使用
    SQL> SELECT * FROM TIGER2 WHERE AGE = 100 OR ADDR LIKE 'SHENZHEN%';
    SQL> SELECT * FROM TIGER2 WHERE AGE > 24 AND ( NAME LIKE '%U' OR NAME LIKE '%E');
    前面的AND和OR前后都是相同的优先级,现在使用()将AND后面的一部分括起来,这样后面的就会成为一个整体;
    ————————————————————————————————————
    SQL> SELECT * FROM TIGER2 ORDER BY AGE DESC;  按照年龄的降序排列
    SQL> SELECT * FROM TIGER2 ORDER BY AGE ASC;   按照年龄的升序排列
    SQL> SELECT * FROM TIGER2 ORDER BY AGE;       默认为升序排列
    SQL> SELECT * FROM TIGER2 ORDER BY AGE,NAME;  如果名字相同则按照名字排序
    SQL> SELECT * FROM TIGER2 ORDER BY NAME DESC ,AGE ASC; 名字按照降序排列 年龄按照升序排列
    SQL> SELECT * FROM TIGER2 WHERE NAME LIKE 'C%' ORDER BY NAME DESC; ORDER BY 在条件判断的后面执行;
    ——————————————————————————————————————

函数 
单行函数
    SQL> SELECT UPPER(NAME) FROM TIGER2;                        将查询出的数据转换成大写显示出来;
    SQL> SELECT LOWER(NAME) FROM TIGER2;                       转换成小写显示出来;
    SQL> SELECT INITCAP(NAME ) FROM TIGER2;                       把首字母转换成大写显示出来;
    SQL> SELECT LENGTH(NAME) FROM TIGER2;                      显示出字符串的长度;
    SQL> SELECT * FROM TIGER2 WHERE LENGTH(ADDR) > 15;
    SQL> SELECT SUBSTR(NAME ,1,3) FROM TIGER2;               截取NAME的第一到第三个字符并显示出来
    SQL> SELECT SUBSTR(NAME ,2,8) FROM TIGER2;
    SQL> SELECT CONCAT(NAME ,ADDR) FROM TIGER2;         将NAME和ADDR链接起来显示出来;
    SQL> SELECT ROUND(54.926,2) FROM TIGER2;                   将该数四舍五入到小数点的后两位;
    SQL> SELECT ROUND(45.663, 2) FROM TIGER2;
    SQL> SELECT TRUNC(45.965,2) FROM TIGER2;                   截取数据的小数点后两位
    SQL> SELECT TRUNC(45.632) FROM TIGER2;                      截取数据的整数部分;
    SQL> SELECT TRUNC(45.632,-1) FROM TIGER2;                  截取数据的十位数以上的部分

对字符串操作的
    SQL> SELECT TO_CHAR(4556.65365,'9,999.999') FROM TIGER2; --9表示
    SQL> SELECT TO_CHAR(4556.65365,'9,999.999') FROM TIGER2;

    TO_CHAR(45
    ----------
     4,556.654
     4,556.654
     4,556.654
     4,556.654
    SQL> SELECT TO_CHAR(45.65365,'0,999.999') FROM TIGER2;
    SQL> SELECT TO_CHAR(45.65365,'0,999.999') FROM TIGER2;

    TO_CHAR(45
    ----------
     0,045.654
     0,045.654
     0,045.654
     0,045.654

   
    SQL> SELECT TO_CHAR(45.65,'$999.999') FROM TIGER2;

    TO_CHAR(4
    ---------
      $45.650
      $45.650
      $45.650
      $45.650



    SQL> SELECT TO_CHAR(45.65,'L999.999') FROM TIGER2;

    TO_CHAR(45.65,'L99
    ------------------
               $45.650
               $45.650
               $45.650
               $45.650

    SQL> SELECT TO_CHAR(45.65,'fm$999.999') FROM TIGER2;   
    SQL> SELECT TO_CHAR(45.65,'fm$999.999') FROM TIGER2;

    TO_CHAR(4
    ---------
    $45.65
    $45.65
    $45.65
    $45.65
   
    SQL> SELECT TO_NUMBER('120') FROM TIGER2;

对数字操作的
    TO_NUMBER('120')
    ----------------
                 120
                 120
                 120
                 120
   
    SQL> SELECT TO_NUMBER('120')+3 FROM TIGER2;

    TO_NUMBER('120')+3
    ------------------
                   123
                   123
                   123
                   123
   


多行函数
    SQL> SELECT COUNT(*) FROM TIGER2; 统计行数

   
              
********************************************************************************
多表查询
___________________________________________________________
表的创建 并插入数据

CREATE TABLE CLASS2(
ID NUMBER(4),
NAME VARCHAR2(20)
);
CREATE TABLE STUDENT2 (
ID NUMBER(8),
SNAME VARCHAR2(20),
CID NUMBER(4)
);
INSERT INTO CLASS2 VALUES(1,'JAVA');
INSERT INTO CLASS2 VALUES(2,'C++');

INSERT INTO STUDENT2 VALUES(1001,'CHANGTIGER',1);
INSERT INTO STUDENT2 VALUES(1002,'NANCHANG',1),
INSERT INTO STUDENT2 VALUES(1003,'SHANGHAI',2),
INSERT INTO STUDENT2 VALUES(1004,'BEIJING',2);

___________________________________________________________
SELECT C.NAME , S.ID ,S.SNAME FROM CLASS2 C ,STUDENT2 S WHERE S.CID = C.ID ORDER BY S.ID ASC;


**********************************************************************************
原创粉丝点击