SQL语句培训教材Word下载.docx
- 文档编号:16897373
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:64
- 大小:49.24KB
SQL语句培训教材Word下载.docx
《SQL语句培训教材Word下载.docx》由会员分享,可在线阅读,更多相关《SQL语句培训教材Word下载.docx(64页珍藏版)》请在冰豆网上搜索。
!
=或<
>
或^=
不等于测试
wherename!
=’王五’;
<
小于测试
Wheresal<
5000;
大于测试
Wheresal>
小于等于测试
=5000;
大于等于测试
Notin
测试某值是否在一个指定的结果集中
Selectname,addrfromexpert
wherelocalnotin(‘北京’,’上海’);
ANY
将一个值与一组值进行比较,返回满足条件的结果。
必须跟!
=,<
>
<
=,>
selectename,salfromempwheresal<
=any(selectsalfrom
empwheredeptno=10)
SOME
同ANY,必须跟!
ALL
将一个值与一组值比较,返回满足条件的所有列值。
Selectname,salfromemp
Wheresal<
all(500,800,1200);
Notbetween
AandB
判断某个值是否界于两者之间。
Selectname,salfromempWhere
salbetween500and1200;
[not]exists
判断某个列是否存在于一组值中。
selectdname,deptnofromdeptwhereexists
(select*fromempwheredept.deptno=emp.deptno)
A[not]likeb
[Escape‘char’]
比较两个模式是否相似,当使用like语句时Oracle不去访问索引。
Select*fromemp
Whereenamelike‘TH%’;
Is[not]null
测试值是否为空。
Selectename,deptnofromemp
Wherecomm.Isnullorcomm.=0;
Not
对结果的否定。
Wheresalnot(sal<
1000);
等价于
selectename,salfromempwheresal>
=1000;
AND
用于判断两个条件十分都满足。
Select*fromempwhere
Ename=’SIMTH’andsal>
OR
用于判断两个条件中是否有一个满足。
Ename=’SIMTH’orename=’SCOTT’;
UNION
用于返回(组合)两个查询中所有唯一的行。
Selectenamefromempunion
Selectenamefromemp;
UNIONALL
用于返回(组合)两个查询中所有所有的行。
INTERSECT
用于返回两个查询中相同的行。
Selectenamefromemp1intersectselectenamefromemp2;
MINUS
用于返回两个查询中的不同的行。
2、简单查询
当我们可以用SQL*PLUS登录到SQL>
下后,我们可以用DESC显示某表的结构,也可以用select语句简单查询表中的一些列的内容。
例:
要查询T_person表中人员的姓名、出生日期及出生地,则:
SQL>
selectname,dob,natal_placefromt_person;
3、伪列及伪表
Oracle系统为了实现完整的关系数据库功能,系统专门提供了一组称为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象(如建表)时由我们完成的,而是在我们建立对象时由自动Oracle完成的。
Oracle目前有以下的伪列:
●CURRVALandNEXTVAL使用序列号的保留字
●LEVEL查询数据所对应的级
●ROWID记录的唯一标识
●ROWNUM限制查询结果集的数量
有关伪列的详细解释和使用见相关章节。
Oracle还提供了一个DUAL的伪表,该表主要目的是保证在使用SELECT语句中语句的完整性而提供的,如:
我们要查询当前的系统日期及时间,而系统的日期和时间并是放在一个指定的表里。
所以在from语句后就没有表名给出。
为了使用from后有个表名,我们就用DUAL代替。
如:
例1:
查询Oracle系统日期及时间:
selectto_char(sysdate,'
yyyy.mm.ddhh24:
mi:
ss'
)fromDUAL;
TO_CHAR(SYSDATE,'
YY
-------------------
2001.06.0207:
28:
09
例2:
计算一下5000+5000*0.1的结果是多少,则:
select5000+5000*0.1fromDUAL;
5000+5000*0.1
5500
三、数据基本类型
Oracle数据库的数据类型与其它的数据库系统相比,它的数据类型不多,Oracle在表示数据方面比其他数据库系统来说要省去许多关键字。
Oracle只用NUMBER(m,n)就可以表示任何复杂的数字数据。
其它如日期类型等也简单得多,只DATE就表示日期和时间。
下面以列表形式给出Oracle8i版本以上系统数据类型的表示方法。
数据类型
说明
Char
定长字符,≤2000个字符
Varchar
(同Varchar2)可变字符,≤4000个字符
Varchar2
变长字符,≤4000个字符
Date
固定长度(7字节)的日期型
Number
数字型,可存放实型和整型
Long
可变字符,≤2GB个字符
Raw
可变二进制数据,≤4000字节
Longraw
可变二进制数据,≤2GB
MLSLABEL
仅TrustedOracle用长度在2~5字节间
Blob
大二进制对象,≤4GB
Clob
大字符串对象,≤4GB
Nclob
多字节字符集的Clob,≤4GB
Bfile
外部二进制文件,大小由OS决定
createtablenchar_tst(namevarchar2(10),addrvarchar2(16),salnumber(9,2));
表已创建。
四、常用函数
1、单记录字符函数
函数
说明
ASCII
返回对应字符的十进制值
CHR
给出十进制返回字符
CONCAT
拼接两个字符串,与||相同
INITCAT
将字符串的第一个字母变为大写
INSTR
找出某个字符串的位置
INSTRB
找出某个字符串的位置和字节数
LENGTH
以字符给出字符串的长度
LENGTHB
以字节给出字符串的长度
LOWER
将字符串转换成小写
LPAD
使用指定的字符在字符的左边填充
LTRIM
在左边裁剪掉指定的字符
RPAD
使用指定的字符在字符的右边填充
RTRIM
在右边裁剪掉指定的字符
REPLACE
执行字符串搜索和替换
SUBSTR
取字符串的子串
SUBSTRB
取字符串的子串(以字节)
SOUNDEX
返回一个同音字符串
TRANSLATE
TRIM
裁剪掉前面或后面的字符串
UPPER
将字符串变为大写
NVL
以一个值来替换空值
ASCII(<
c1>
)
是字符串。
返回与指定的字符对应的十进制数。
selectascii('
A'
)A,ascii('
a'
)a,ascii('
0'
)zero,ascii('
'
)spacefromdual;
AaZEROSPACE
----------------------------------------
65974832
赵'
)zhao,length('
)lengfromdual;
ZHAOLENG
--------------------
547401
CHR(<
I>
[NCHAR])
给出整数,返回对应字符。
selectchr(54740)zhao,chr(65)chr65fromdual;
ZHC
---
赵A
||(<
c2>
select(‘010-88018159’)||'
转23'
王五电话fromdual;
王五电话
-----------------
010-88018159转23
INSTR(<
[,<
j>
]])
在一个字符串中搜索指定的字符,返回发现指定的字符的位置。
C1:
被搜索的字符串
C2:
希望搜索的字符串
I:
搜索的开始位置,缺省是1
J:
出现的位置,缺省是1。
SELECTINSTR('
OracleTraining'
'
ra'
1,2)"
Instring"
FROMDUAL;
Instring
----------
9
LENGTH(<
c>
)
返回字符串c的长度。
l
1selectname,length(name),addr,length(addr),sal,length(to_char(sal))
2*fromnchar_tst
/
NAMELENGTH(NAME)ADDRLENGTH(ADDR)SALLENGTH(TO_CHAR(SAL))
------------------------------------------------------------------------
王五2北京市海淀区699999.998
LOWER(<
返回字符串并将所有字符变为小写。
selectlower('
AaBbCcDd'
)AaBbCcDdfromdual;
AABBCCDD
--------
aabbccdd
UPPER(<
与LOWER相反,将给出字符串变为大写。
selectupper('
RPAD和LPAD(粘贴字符)
RPAD(string,Length[,'
set'
])
LPAD(string,Length[,'
RPAD在列的右边粘贴字符;
LPAD在列的左边粘贴字符。
selectRPAD(City,35,'
.'
),temperaturefromweather;
RPAD(City,35,'
)temperature
------------------------------------------
CLEVELAND......85
LOSANGELES..81
.........................
(即不够35个字符用'
填满)
LTRIM(左截断)RTRIM(右截断)函数
LTRIM(string[,’set’])
LeftTRIM(左截断)删去左边出现的任何set字符。
RTRIM(string[,’set’])
RightTRIM(右截断)删去右边出现的任何set字符。
SELECTRTRIM(‘MotherTheresa,The’,‘The’)“ExampleofRight
Trimming”FROMDUAL;
ExampleofRight
----------------
MotherTheresa,
SUBSTRSubstr(string,start[,Count])
取子字符串中函数
对字串(或字段),从start字符开始,连续取count个字符并返回结果,如果没有指count则一直取到尾。
selectphone,substr(phone,1,3)||‘0’||substr(phone,4)
fromtelecommunicationwheremaster=’中国电信’;
SUBSTRB(string,start[,Count])
对字串(或字段),从start字节开始,连续取count个字节并返回结果,如果没有指count则一直取到尾。
TRIM([<
leading>
]<
trailing>
FROM<
trim_char>
TRIM可以使你对给定的字符串进行裁剪(前面,后面或前后)。
●如果指定LEADING,Oracle从trim_char中裁剪掉前面的字符;
●如果指定TRAILING,Oracle从trim_char中裁剪掉尾面的字符;
●如果指定两个都指定或一个都没有给出,Oracle从trim_char中裁剪掉前面及尾面的字符;
●如果不指定trim_character,缺省为空格符;
●如果只指定trim_source,OracleOracle从trim_char中裁剪掉前面及尾面的字符。
例子:
将下面字符串中的前面和后面的‘0‘字符都去掉:
SELECTTRIM(0FROM0009872348900)"
TRIMExample"
TRIMexample
--------------------------------
98723489
2、单记录数字函数
函数
Value1+value2
Value1-value2
Value1*value2
Value1/value2
ABS(value)
CEIL(value)
COS(value)
COSH(value)
EXP(value)
FLOOR(value)
LN(value)
LOG(value)
MOD(value,divisor)
NVL(value,substitute)
POWER(value,exponent)
ROUND(value,precision)
SIGN(value)
SIN(value)
SINH(value)
SQRT(value)
TAN(value)
TANH(value)
TRUNC(value,按precision)
VSIZE(value)
加
减
乘
除
绝对值
大于或等于value的最小整数
余弦
反余弦
e的value次幂
小于或等于value的最大整数
value的自然对数
value的以10为底的对数
求模
value为空时以substitute代替
value的exponent次幂
按precision精度4舍5入
value为正返回1;
为负返回-1;
为0返回0.
value的平方根
正切
反正切
按照precision截取value
返回value在ORACLE的存储空间大小
ABS(<
n>
返回指定值的绝对值。
selectabs(100),abs(-100)fromdual;
ABS(100)ABS(-100)
--------------------
100100
CEIL(<
返回大于或等于给出数字的最小整数。
selectceil(3.14159)fromdual;
CEIL(3.14159)
-------------
4
FLOOR(<
对给定的数字取整数,如:
selectfloor(123.45),floor(45.56)fromdual;
FLOOR(123.45)FLOOR(45.56)
-------------------------
12345
MOD(<
n1>
n2>
Selectmod(10,3),mod(10,2),mod(10,4)fromdual;
MOD(10,3)MOD(10,2)MOD(10,4)
------------------------------
102
POWER(<
<
返回n1的n2次方值,如:
selectpower(2,10),power(3,3)fromdual;
POWER(2,10)POWER(3,3)
---------------------
102427
ROUND(value,precision)
按照指定的精度进行舍入;
selectround(55.5),round(-55.5),trunc(55.5),trunc(-55.5)
fromdual;
round(55.5)round(-55.5)trunc(55.5)trunc(-55.5)
-----------------------------------------------
56-5655-55
SIGN(<
取数字n的符号,大于0返回1;
小于0返回-1;
等于0返回0。
如:
selectsign(123),sign(-100),sign(0)fromdual;
sign(123)sign(-100)sign(0)
------------------------------
1-10
SIN(<
返回一个数字的正弦值。
selectsin(1.57079)fromdual;
SIN(1.57079)
------------
1
SINH(<
返回双曲余弦的值,如:
selectsin(20),sinh(20)fromdual;
SIN(20)SINH(20)
.912945251242582598
SQRT(<
返回数字n的根,如:
selectsqrt(64),sqrt(10)fromdual;
SQRT(64)SQRT(10)
83.16227766
TRUNC(value,precision)
按照指定的截取一个数。
SELECTTRUNC(124.16666,-2)trunc1,trunc(124.16666,2)fromdual;
TRUNC1TRUNC(124.16666,2)
----------------------------
100124.16
3、单记录日期函数
函数
描述
ADD_MONTH
在日期date上增加count个月
GREATEST(date1,date2,...)
从日期列表中选出最晚的日期
LAST_DAY(date)
返回日期date所在月的最后一天
LEAST(date1,date2,...)
从日期列表中选出最早的日期
MONTHS_BETWEEN(date2,date1)
给出Date2-date1的月数(可以是小数)
NEXT_DAY(date,’day’)
给出日期date之后下一天的日期,这里的day为星期,如:
MONDAY,Tuesday等。
NEW_TIME(date,’this’,’other’)
给出在this时区=Other时区的日期和时间
ROUND(date,’format’)
未指定format时,如果日期中的时间在中午之前,则将日期中的时间截断为12A.M.(午夜,一天的开始),否则进到第二天。
时间截断为12A.M.(午夜,一天的开始),否则进到第二天。
TRUNC(date,’format’)
未指定format时,将日期截为12A.M.(午夜,一天的开始).
ADD_MONTHS(<
d>
增加月份和减去月份,如:
selectto_char(add_months(to_date('
199712'
'
yyyymm'
),1),'
)add_month
2fromdual;
ADD_MO
------
199801
selectto_char(add_months(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 语句 培训教材