SQL语言简易教程(基础)_第1页
SQL语言简易教程(基础)_第2页
SQL语言简易教程(基础)_第3页
SQL语言简易教程(基础)_第4页
SQL语言简易教程(基础)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL语言教程一、什么是SQL语言?

SQL是结构化查询语言的缩写(StructureQueryLanguage),简单的说,SQL是一种关系数据库语言,它可以访问以逻辑集的形式有序地储存在数据库的数据,这些逻辑集称为表。实际上SQL是一种计算机编程语言,但它比传统的编程语言,如,BASIC,FORTRAN等简单的多。另外SQL是关系数据库语言,了解了SQL也就理解了关系数据库,因此在整个关系数据库体系中SQL是最基础、也是最重要的部分。

其显著的优点:1、它是一种非过程化的交互式语言,它对数据的处理是以集合为单位的,即每次处理一个记录集而不是每次处理一个单个记录。SQL对数据提供导航,这意味着用户在高层的数据结构上工作,而不必指定数据的存取方法。2、SQL是一种所有用户都可以使用的语言,这些用户包括系统管员、数据库管理员,程序开发人员,应用程序员及其它许多的终端用户,SQL可在任何Oracle产品中使用,它可以用于数据库的操作。如数据查询、修改和删除,对表进行插入、修改和删除行。控制对数据库和数据对象的存取,保证数据库的一致性和完整性。3、SQL是所有关系数据库的公共语言。它是世界公认的标准的关系数据库语言。用户可方便地移植用SQL语言编写的程序。ORACLE支持SQL语言的执行。ORALCE在标准SQL语言的基础上新增加了许多功能,使的它功能更加强大,使用起来更加灵活。在以后的学习中,如不特殊说明,提到的SQL指ORALCE化的SQL1.1、SQL与SQL*PLUS、PL/SQL几个概念的区别

SQL*PLUS:SQL*PLUS是ORACLE提供的一个用来处理ORACLE数据和生成报表的工具,主要实现二个功能

A、

它提供给用户与ORACLE交互式的界面,在此环境下可自由、灵活、方便的实现ORACLE的SQL对关系数据的处理活动。

B、

输出格式化报表

PL/SQL:从V6开始,ORACLE实现了一种过程处理语言,称为PL/SQL,它具有与大多数其它程序设计语言相似的编程结构,它是在SQL的基础上扩充形成的,可以理解为PL/SQL=SQL+过程控制、功能扩充语句。

1.2、其它几个需明确的常用术语

ORACLE中的对象:

是一个有意义的事务,可在其内部存放信息,我们常谈到的对象类型中表和视图是最常见的。

函数:是施加于数据的操作,它改变数据的特性。

提交:使用COMMIT语句将已修改的数据保存到数据库中。在此之前对数据库的数据修改只存在各自的缓存区内。COMMIT是将在缓存区中以修改的内容写到数据库文件中。

回滚:ROLLBACK当为了某各个对话更改数据库之后,由于某种原因不想提交此更改,ORALCE所采取的操作,这是一个把信息恢复到更改前的操作。

保留字:被ORACLE使用的具有特殊含义的字符,不能用做变量名。1.3、SQL语言的组成

1、数据定义语言

create,drop,alter

2、数据查询语言

select

3、数据操作语言

update,insert,delete

4、数据控制语言

grant,revoke(撤消权限)二、SQL语言的数据类型

CHAR

存放定长字符数据

最长2000

VARCHAR2

存放可变长字符数据

最长4000

NUMBER(L,D)存放数值数据,L代表总位数D代表小数点后位数

DATE

日期

范围公元前4712年1月1日到公元后4712年12月31日

NCHAR

与CHAR类似,只不过最大长度由数据库使用的字符集决定

BLOB

二进制大对象,最大长度4GB

LONG

存放可变字符数据,最大为2GB

RAW

纯二进制对象,最大长度为2000字节

VARCHAR

目前等同于CHAR一、字符型

char和varchar2数据类型用来存储字符、数据,具有比二种类型的列可以存储任何一个字符。由于Oracle的空格填充值(即在字符中尾问用空格填充时的空格值)只存储在char列中,而不存varchar2列中,所以用varchar2存数要比用char存数占用的空间少,由于这个理由,在含varchar2列的大表在进行全表扫描比在char列中存储相同数据的表上,进行全表扫描的数据块较少,若应用程序经常需要在含字数大表中扫描时,应存在varchar2中而不存储在char列中,这样可改善程序的性能。但在决定使用什么数据类型时,性能不是唯一决定的因素,例如,在比较字符串的值时,希望Oracle忽略掉尾部空格,则必须把这些值存储在char列中,因而选什么数据类型,应该关心应用程序关心的语义间的不同。

1、char

用来存储固定长度的字符串,在建立具有char列的表时,必须说明该列长度(以字节为单位)。列的长度1-255间,default值为1。注意:如果指定的值比较短,则用空格填充该值固定长度,则Oracle返回一个错误信息。

若两个char型字符串比较大小时,若两值长度不同,则在较短值中插入空格。直到值有相同的长度。比较时,只有尾部空格数不同,其它部分相同的二个值被认为相等。

2、varchar2

存储可变长度的字符串,建立具有varchar2列的表时,说明该列长度(以字节为单位)。最大长度1-2000之间,对每条记录,该列的每一值都可作为可变长字段来存储,例如,一个列被说明为varchar2数据类型,长度为50,若一条特定记录中类varchar2列给出10个单字节,字符,则就在该列中存储10个字符而不最50个。两个varchar(2)列比较值时,只须在二个值须相同的字符,且还有相同的长度时才认为相等。

3、varchar

目前与varchar2数据类型相同,但在Oracle未来版中,varchar数据类型可能会使用不同的比较语义,所以最好用varchar2数据类型。二、数字型

即number用来存储0,正负,定点数长正负浮点数。用number数据类型的数字(精度最多为38位十进制数)保证能在运行Oracle的不同系统中移值。存储在number列中的数字范围。

说明数字列的方法:

1)column_namenumber

2)column_namenumber(精度,小数位数)若没有指出小数的位数,则隐含为没有小数,小数的位数范围。-84<=x<=127。注意:若给出的小数位数是负数,则实际数被舍入到小数点左边指定的位数,如,说明为(7,-2)就意味着舍入到最接近的百位数。三、日期型

即date数据类型,用来存储表中的日期和时间,存储的内部有年(包括世纪)、月、日、时、分和秒。对应于世纪、年、月、日、分和秒。输入、输出日期时,标准缺省格式,DD-MON-YY。

如:’04-JAN-98’

如果输入一个不当前缺省日期格式的日期,则用带有格式掩码的函数to_date。

如,to_date(‘november,13,1992’,’month,dd,yyyy’)dd_mon_yy则yy表示20世纪中的年。

例31-DEC-92表示1992.12.31。

存储时间格式(24小时):HH:MM:SS,若没有输时间,则日期字中时间取缺省值:12:00:00A.M,若没有输日期,只输入了时间,则日期部分取缺省值为当月的第一天,为了输入日期的时间部分,可以使用带有指出时间部分的格式掩码的函数to_date。如:insertintobirthdays(bname,bday)values(‘annie’,to_date(‘13-nov-3210:56am,’dd_mov_yynn:miam’);

要比较一个含有时间数据的日期,而不希望比较,则可使用函数据trunc,SQL函数sysdate返回系统的时期和时间。四、long数据类型

用long定义的列可以存储可变长字符数据,最多特性相同,根据式作站的可用内存量可以限制long值的长度。long数据的使用:

在数据字典中用long数类定义的列存储定义视图的稿文,可以在select,update语句中的set子句和insert语句的values子句中使用由long定义的列。long和lognraw数据的限制。

long和longraw列有许多作用,但使用它们时有限制。

1)每个表中只允许有一个long列。

2)long列不能出现在完整性约束中。

3)在子句where,orderby,groupby或connectby以及在select语句的distinct操作符中不能使用long列。

4)在sql函数(如substr可insert)中不能引用long列。

5)在子查询的select中或有操作符union,onionall或minus的select中不能使用long列。

6)sql的表达式中不能使用long列。

7)用查询创立表时(createtable...asselect)或用查询插入一个表或视图(insertinto...select...)时不能引用long列。

8)不能用long数据类型说明PL/SQL程序单元的变量。

在设计包含有long或longraw数据的一些表时,把long或longraw列放入一个表中,与它们有关的数据放入另一个表中,然后用完整性约束把二个表连起来,这样设计的结果就能使sql语句只访有关的数据,避免去读整个long或longraw数据,从而提高速度。例:为了存储有关杂志的信息(包括每篇文本的稿文),可建两个表。五、Raw和LongRaw数据类型。

对Oracle不能解释的数据,即在不同的系统间传输它们时不能被转换的数据可以使用数据类型Raw和LongRaw。扩充这两种数据开的目的是将它们用于二进制数和字节串。

Raw相同于Varchar2而LongRaw相同于LongVarchar,但对Raw和LongRaw数据不进行字符集转换,对于Char,Varchar2,Logn数据。

Oracle会自动把它们从数据字符集转换到通过参数Nls_Lang由用户会话所定的字符集,这些就是它们的不同之处。

Oracle在Raw(LognRaw)数据与Char数据进行互相转换时,把数据看成一个能表示成每4个二进制位为一个位图的十六进制数。

例如,输入或显示一个字节的Raw数据。‘11001011’时,把它看作’cb’。

LongRaw列不可被索引,Raw可以。六、空与不空(NULL、NOTNULL)——另一类数据类型

空(NULL)在PL*SQL代表另一类数据类型,它们表示缺少任何值换句话是没有数据或是无信息。空值不同于零,很小的值,空白或其它任何数据,SQL*PLUS对NULL进行特殊处理。

PL*SQL应用这一特殊数据类型是为了正确处理SQL*PLUS中的一些函数,如平均值的统计或找最大、最小值。

空值(NULL)的使用:ISNULL、ISNOTNULL三、SQL*Plus的工作环境

SQL*Plus为用户提供了很方便的界面环境,使得用户可在SQL*Plus环境中输入、编辑和运行SQL、SQL*Plus命令和PL/SQL块,也可随时获得帮助信息。

3.1SQL*Plus程序

ORACLE_HOME\BIN\PLUS**w.EXE或PLUS**.EXE(区别:PLUS**.EXE

DOS环境下的PLUS)

ORACLE_HOME:95工作站ORAWIN95

NT服务器

ORANT

**代表版本号,常用的有PLUS33W.EXE、PLUS80W.EXE

3.2SQL*Plus的进入和退出

1、

直接运行。EXE文件

2、

菜单程序|ORACLEFORWIN95|SQL*PLUS

3、

登录

输入:用户、口令。

登录成功后,显示成功登录信息并出现SQL提示符

SQL>

4、

退出

输入:EXIT

3.3利用SQL缓冲区进行命令编辑和运行。

1)

输入SQL语句时可多行输入,语句以‘;’作为结束时

2)

SQL*PLUS缓冲区:运行SQL*PLUS时,ORACLE在缓冲区保留最后执行的命令,在SQL提示符下,输入斜杠“/”并输入“ENTER”,这个操作可再次执行保留在缓冲区里的SQL语句。利用系统文本编辑器,可以对缓冲区内容进行编辑,也称全屏幕编辑。命令是:Edit

3)

很多情况下,在输入命令时会发现输入错误,需要修改,这种情况下,使用SQL*PLUS命令行编辑器将使得输入更容易些,它可以很快的修改SQL缓冲区内的SQL语句。

提示:在使用LIST命令,可看到*号,有*号的行即可进行编辑的当前行。

SQL*PLUS行编辑命令

编辑器命令

的(a)ppend填加文本到当前行尾(c)hange/old/nes/在当前行以新的文本代替旧的文本(c)hange/text/从当前行删除文本Del删除当前行(i)nputtext在当前行之后填加一行(L)ist显示在缓冲区所有的行(L)ist

N显示缓冲区的第N行

4)SQL*PLUS提供的一个有用的命令describe用desc(describe)命令显示一个指定表的每一个列的定义。语法:DESC<TABLENAME>四、SQL语言的运算符

算术+、-、*、/、正、负。

字符||(用于连接两个字符串)例:'jackis'||'aboy'等操作。

比较

>、<、=、!=(或)<>、<=、>=、IN、BETWEEN。。。AND、LIKE

逻辑

not(逻辑非)、and(与)、or(或)。

集合

union(并)、intersect(交)、minus(差)。五、创建练习用表

5.1CREATE

功能:在数据库中定义一新表

语法:CTEATE

TABLE

<TABLE_NAME>(

<COLUMN_NAME

DATATYPE

NULL说明>

)

例:CREATETABLEDJ_NSRJB(

NSRSBH

VARCHAR2(15)NOTNULL,

NSRMC

VARCHAR2(80));

分析:由四部分组成

1、

CREATE

通知ORACLE创建结构

2、

TABLE

通知ORACLE创建对象的类型,这里指表

3、<TABLE_NAME>

表名是唯一且合法的表名

4、

COLUMNS创建时需指出列名、数据类型及长度定义如有NULL说明,则在类型后做非空说明

附:数据命名规则如下(适用于其它对象):

1)长度在1-30个字符之间。

2)首字符必需为字母(A-Z)。

3)数据对象不能同已存在的名字冲突。

A、

在数据库中表名和视图名必需唯一。

B、

在同一张表中,列名必须是唯一。

4)在命名中不可使用ORACLE的保留字。

5.2

ALTER

功能一:用来向已存在表中增加列

语法:ALTER

TABLE

<TABLE_NAME>

ADD(<COLUMN_NAME

DATATYPE

NULL说明>)

例:ALTERTABLEDJ_NSRJBADD(JLX

VARCHAR2(4),HY

VARCHAR2(4));

分析:1)关键字ALTERTABLE。

2)<TABLE_NAME>所要修改的表名。

3)关键字ADD表明增加列

4)COLUMN定义略

功能二:用来修改已存在表中的列修改列的宽度、重新定义空值说明。

语法:ALTER

TABLE

<TABLE_NAME>

MODIFY(<COLUMN_NAME

DATATYPE

NULL说明>)

例:ALTERTABLEDJ_NSRJBMODIFY(NSRSBH

VARCHAR2(15)NOTNULL);

ALTERTABLEDJ_NSRJBMODIFY(NSRMC

VARCHAR2(120));

分析:

1)关键字ALTERTABLE

2)〈TABLE_NAME>所要修改的表名

3)关键字MODIFY表明修改列

4)COLUMN定义略5.3、DROP

功能:从数据库中删除一个现存表。

语法:DROP

TABLE

<TABLE_NAME>

5.4、录入练习用表中的数据

INSERT

语法:INSERTINTO〈TABLENAME〉(COL1,COL2,CL3。。。)VALUES(VAL1,VAL2,VAL2。。。);

分析:

1)SQL关键字INSERTINTO和VALUES

2)变量〈TABLENAME〉必须是数据库已存在的一个表,是准备插入数据的一个表。

3)变量(COL1,COL2,COL3。。)指表中已存在的列

4)值表(VAL1,VAL2,VAL2。。。)由SQL把表中每个值分配给它们相对应的列名插入数据必须在三个方面与它们的列定义相匹配数据类型必须相同。数据必须在它们特定的列大小要求范围之内数值和列必须是一一对应的(第一个值与第一个列相对应,以此类推)

提示:在向表中插入一行数据时,如果该表中定义了不为空的列,则在每一条插入语句都必须有该列的值。

例:INSERTINTODJ_NSRJB(NSRSBH,NSRMC,FGKS,FGR)VALUES(‘14020010010001’,‘通达器材’,‘ZG’,HYK’);

语法二:INSERTINTO

表名1(列1,列2,。。。)查询语句

分析:一次插入多行数据

例:INSERTINTODJ_NSRJB(NSRSBH,NSRMC)SELECTNSRSBH,NSRMCFROMDJ_NSRJBBAK;比较单行插入,用SELECT语句的值代替VALUES子句。练习

1、创建第一个练习表dj_nsrjb

纳税人基本信息

NSRSBH

VARCHAR2(15)

--纳税人识别号

NSRMC

VARCHAR2(80)

--纳税人名称

FGKS

VARCHAR2(4)

--分管科室

FGR

VARCHAR2(5)

--分管人

JJLX

VARCHAR2(3)

--经济类型(注册类型)

ZZSNSLX

VARCHAR2(1)

--增值税纳税类型

2、向表中增加下面的列

HY

VARCHAR2(2)

--行业

BZRQ

DATE

--办证日期

3、修改表中字段NSRMC到120位长度,同时加NSRSBH约束不能为空。

4、

修改表中字段ZZSNSLX增加缺省值‘0’

小规模

5、

创建第二个练习用表ZSJB

6、

插入练习数据六、数据查询语句SELECT

功能:SELECT命令用于从ORACLE数据库中检索数据。

语法:SELECT〈列名〉FROM〈表名〉WHERE〈条件〉ORDERBY〈列名〉

分析:SELECT(什么?)子句,体现用户检索的信息,表中一个或多个列的名字。如果选择多个列,列名之间必须用逗号分隔开,但最后的列名后面没有逗号,即与FROM相临的列名之间没有逗号。(必须)

FROM(哪里?)子句,正确的表名(必须)WHERE〈条件〉子句,后面跟条件ORDERBY(排序)子句,排序列

提示:查看所有的列时,SELECT语句使用SELECT*

6.1简单查询,只有必须的查询子句

1、

查询表中部分字段的值。

例:SELECTNSRSBH,NSRMCFROMDJ_NSRJB;

2、

查询表中的所有字段的值。

例:SELECT*FROMDJ_NSRJB;

3、

消除冗余行的查询

例:SELECT

DISTINCTNSRSBH

FROM

ZS_JB;/*有几户申报*/

例:SELECT

DISTINCTJJLX

FROM

DJ_NSRJB;/*DJ_NSRJB表中有几种注册类型的纳税户*/

4、

用被选择列的别名来指定显示选择结果时的列名

例:SELECTNSRMC‘MC‘

FROM

DJ_NSRJB;在显示结果时用MC代替NSRMC

5、

虚表DUAL的使用(选学内容)

DUAL用于测试函数或完成快速计算,是一个小而有用的ORACLE表,ORACLE只为其提供一行一列的内容。SQL〉DESCDUAL;

DUMMY

CHAR(1)

DUAL的作用:在ORACLE的许多函数即可以用于列也可以用于常量,通过DAUL可以发现某些函数只能用于常量,在下面的列子中SELECT语句没有指明是表中的哪一行,哪一列。

例:计算POWRE(4,3)

即4的3次方SQL〉SELECT

POWRE(4,3)FROMDUAL;

结果显示:64

提示:也可以把DUAL表理解成是一块随时可用内存。

6.2条件查询

比较运算符

单值测试

YBSE〉1000

应补税额大于1000

YBSE〈1000

应补税额小于1000

YBSE〉=1000

应补税额大于等于1000

YBSE〈=1000

应补税额小于等于1000

YBSE〈〉1000

应补税额不等于1000

YBSE!=1000

应补税额不等于1000

值列表测试(对多值测试)

应补税额在400和1500之间的包括400和1500

YBSEBETWEEN400AND1500

应补税额小于400和大于1500

YBSE

NOTBETWEEN400AND1500

税种在列表(‘01‘,’02‘,’03‘)中

SZ

IN(‘01‘,’02‘,‘03)

税种不在列表(‘01‘,’02‘,’03‘)中

SZ

NOT

IN(‘01‘,’02‘,‘03)

提示:

YBSEBETWEEN

400AND1500

等价于

YBSE〉=400ANDYBSE〈=1500

SZ

IN(‘01‘,’02‘,‘03)等价于SZ=’01‘ORSZ=’02‘ORSZ=’03‘

LIKE模式匹配

SQL*PLUS通配符_(下划线)

表示任意一字符

%(百分号)表示一个不确定的串

语法:LIKE

‘查找串’

分析:查找串可以是字母、数字、特殊字符和SQL*PLUS通配符百分号(%)和下划线(_)的组合。百分号代表“零或任意多个字”。下划线代表“列特定位置上的任意一个字符”一个且仅一个字符。除了通配符外,查找串中所有其它字符只能表示自身,查找串放在单引号内。通过NOT和LIKE的结合使用,可以查找列值不在查找串中的行。例:

NSRMCLIKE‘%计算机%‘

纳税人名称包括计算机的

NSRMCLIKE‘计算机%‘

纳税人名称以计算机开头

NSRMCLIKE

NOT‘%计算机‘

纳税人名称不以计算机结尾

NSRMCLIKE‘_计%‘

纳税人名称第二个字是‘计’字的

WHERE(条件)子句

WHERE子句:后面跟条件,条件是由一个列名,比较操作符和比较值组成。

例:NSRSBH=‘1343423’

纳税人识别号等于

YBSE>1500

应补税额大于20

由多个条件组成复合条件,条件之间用AND、OR组合。

例:NSRSBH=‘1343423’

ANDYBSE〉1500

纳税人识别号等于‘1343423’而且应补税额大于1500

SBRQBETWEEN‘01-JAN-99’AND‘31-JAN-99’ANDYBSE〉1500

一月份申报的而且应补税额大于1500

SZ

IN

(‘01’,‘02,’03)

ANDJJLX=‘110’

税种是增值税、消费税、营业税而且注册类型是国有企业的

NSRMCLIKE‘计算机%‘

OR

JJLX=‘110’

纳税人名称以计算机开头或注册类型是国有企业的

6.3排序结果表:ORDERBY

通过在SELECT语句中增加一个ORDERBY排序子句可以控制输出的显示顺序。ORDERBY按照所要求的列值条件把结果表中的行进行排序,也可以对多个列中的行进行排序,列名用逗号分开。

ORDERBY〈列名〉ASC(默认)

升序方式排序

ORDERBY〈列名〉DESC

降序方式排序

多列排序ORDERBY〈COLUMN1〉,〈COLUMN2DESC〉,〈COLUMN3〉,。。。。。

排序规则:较高:字母

高:

数字(按代数值大小)

NULL最低(大型机系统中,NULL最高)

例:ORDERBY

SZ,NSRSBH,YBSEDESC

先按税种,纳税人识别号,再按应补额从大到小。

6.4学会使用五个组值函数(行函数)

SQL是一个非过程数据访问语言,它没有IF-THEN–ELSE结构,也没有直接存储和操作临时值的机制,仅仅利用标准的SELECT-FROM–WHERE操作,它不能完成像在列中求最大、最小等一些典型的数据分析工作,SQL开发人员意识到这一点,因此该用户提供了五个组值函数:

AVG

计算列的平均值

SUM

计算列的总合

MIN

显示列的最小值

MAX

显示列的最大值

COUNT

统计结果表中的行数

语法:FUNCTION(列名或单值表达式)

提示:

1、

需要处理的列名必须在括号之间函数(列名)

2、

如果使用一个函数,SELECT子句中的所有列都必须带有函数(使用GROUPBY时例外)

3、

对于算术表达式可以使用函数

4、

对列中包含有NULL值时,大多数函数将忽略该值。

详解

AVG

语法:AVG(列名)或AVG(DISTINCT(列名))

提示:AVG只能处理数字类型列AVG忽略所处理列中的有NULL值的行如列名前加上DISTINCT关键字,对于列中重复的值只处理一次NULL值示例

1,2,3,4,NULL

结果:2。5

1,2,3,4,0

结果:2

例:SELECT

AVG(YBSE)FROM

ZS_JB

WHERE

ZZSNSLX=‘2’;

一般纳税人平均应补税额。

MAX

语法:MAX(列名)

提示:MAX可对所有数据类型进行操作

当列为字符类型时,返回按ASCII排序的最大值

当列为数值类型时,返回最大代数值

当列为日期类型时,返回列中最大的日期值

AVG忽略所处理列中的有NULL值的行

例:SELECT

MAX(YBSE)FROM

ZS_JB

WHERE

ZZSNSLX=‘2’ANDSZ=‘01’;

一般纳税人增值税最大的应补税额。

MIN(略)

SUM

语法:SUM(列名)

提示:SUM只能处理数字类型列

SUM忽略所处理列中的有NULL值的行

如列名前加上DISTINCT关键字,对于列中重复的值只处理一次

例:SELECT

SUM(SBSE)FROM

ZS_JB

WHERE

HZLXHRQBETWEEN‘01-JAN-99’AND‘31-JAN-99’;

一月份的入库税额。

COUNT

1、

返回一个表示结果表行数的整数

SELECTCOUTN(*)

因为COUNT(*)在行一级上工作,因此有NULL域的行也统计在内

例:SELECTCOUNT(*)FROM

DJ_NSRJB

WHEREJJLX=‘110’;

国有企业的纳税户登记户数。

2、

返回列中具有不同的值的个数

SELECTCOUNT(DISTINCT(列名))

因为它是在列一级工作。因此它将不统计NULL域

例:SELECTCOUNT(DISTINCT(JJLX))FROM

DJ_NSRJB;

现有登记户数共有几种注册类型。

6.5学会使用列值函数(列函数)

函数:SQL语言提供了许多可以直接调用的函数。

一、字符函数。

1、LPAD

格式:LPAD(char1,n[char2])

功能:在char1的左边加上char2的字符序列,直到新的字符串长为n。

例:LPAD('A',4,'0')='000A'

2、RPAD

格式:RPAD(char1,n[char2])

功能:在char1的右边加上char2的字符序列,直到新的字符串长为n。

例:RPAD('a',4,'0')='A000'

3、SUBSTR

格式:SUBSTR(char,m[,n])

功能:从char的第m个字符开始取n个字符。

4、LTRIM

格式:LTRIM(char[,set])

功能:从char的左边移去属于set字符集中的字母,直到第一个不属于set中的字符为止。set缺省为空格。

例:LTRIM('aac','a')='c';

LTRIM('

c')='c';

5、RTRIM

格式:RTRIM(char[,set])

功能:从char的右边移去属于set字符集中的字母,直到第一个不属于set中的字符为止。

6、LENGTH

格式:LENGTH(char)

功能:返回字符串char的长度。

二、日期函数

1、ADD_MONTHS

格式:ADD_MONTHS(d,n);

功能:d日期加n个月返回的日期。

2、LAST_DAY

格式:LAST_DAY(d);

功能:包含日期d的月份的最后一天。

3、MONTHS_BETWEEN

格式:MONTHS_BETWEEN(d1,d2)

功能:返回d1与d2之间含有多少个月。

三、数值函数

1、CELL

格式:CELL(n)

功能:返回大于或等于n的最大整数。

例:CELL(4.5)=5

2、FLOOR

格式:FLOOR(n)

功能:返回小于或等于n的最大整数。

例:FLOOR(-3.1)=-4

3、ROUND

格式:ROUND(n[,m])

功能:返回将n舍入到小数点右边m位的值。

例:ROUND(8.99,1)=9

4、TRUNC

格式:TRUNC(n[,m]

功能:返回在m位截断的n值,当m省略时,在0位截断,m为页数,小数点左边m个数字截去。

例:TRUNC(8.99,1)=8.9

5、TO_CHAR

格式:TO_CHAR(n[,fmt])

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论