您的位置:首页 > 其它

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

2008-11-13 10:34 453 查看


笔记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 *
*************************************************[/b]



**********************************************************************************
建表 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;

**********************************************************************************
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: