数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

IBM DB2数据库的SQL语法参考手册


发布日期:2019年11月30日
 
IBM DB2数据库的SQL语法参考手册

DB 提供了关连式资料库的查询语言 SQL (Structured Query Language)是一种非常口语化既易学又易懂的语法 此一语言几乎是每个资料库系统都必须提供的用以表示关连式的操作包含了资料的定义(DDL)以及资料的处理(DML)SQL原来拼成SEQUEL这语言的原型以系统 R的名字在 IBM 圣荷西实验室完成经过IBM内部及其他的许多使用性及效率测试其结果相当令人满意并决定在系统R 的技术基础发展出来 IBM 的产品而且美国国家标准学会(ANSI)及国际标准化组织(ISO)在遵循一个几乎是以 IBM SQL 为基础的标准关连式资料语言定义

资料定义 DDL(Data Definition Language)

资料定语言是指对资料的格式和形态下定义的语言他是每个资料库要建立时候时首先要面对的举凡资料分哪些表格关系表格内的有什麽栏位主键表格和表格之间互相参考的关系等等都是在开始的时候所必须规划好的

建表格

CREATE TABLE table_name(

column DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY]

column DATATYPE [NOT NULL]

说明

DATATYPE 是资料的格式详见表

NUT NULL 可不可以允许资料有空的(尚未有资料填入)

PRIMARY KEY 是本表的主键

更改表格

ALTER TABLE table_name

ADD COLUMN column_name DATATYPE

说明增加一个栏位(没有删除某个栏位的语法

ALTER TABLE table_name

ADD PRIMARY KEY (column_name)

说明更改表得的定义把某个栏位设为主键

ALTER TABLE table_name

DROP PRIMARY KEY (column_name)

说明把主键的定义删除

建立索引

CREATE INDEX index_name ON table_name (column_name)

说明对某个表格的栏位建立索引以增加查询时的速度

删除

DROP table_name

DROP index_name

的资料形态 DATATYPEs

smallint

位元的整数

interger

位元的整数

decimal(ps)

p 精确值和 s 大小的十进位整数精确值p是指全部有几个数(digits)大小值s是指小数

点后有几位数如果没有特别指定则系统会设为 p=; s=

float

位元的实数

double

位元的实数

char(n)

n 长度的字串n不能超过

varchar(n)

长度不固定且其最大长度为 n 的字串n不能超过

graphic(n)

和 char(n) 一样不过其单位是两个字元 doublebytes n不能超过这个形态是为

了支援两个字元长度的字体例如中文字

vargraphic(n)

可变长度且其最大长度为 n 的双字元字串n不能超过

date

包含了 年份月份日期

time

包含了 小时分钟

timestamp

包含了 年千分之一秒

资料操作 DML (Data Manipulation Language)

资料定义好之后接下来的就是资料的操作资料的操作不外乎增加资料(insert)查询资料(query)更改资料(update) 删除资料(delete)四种模式以下分 别介绍他们的语法

增加资料

INSERT INTO table_name (columncolumn)

VALUES ( valuevalue )

说明

若没有指定column 系统则会按表格内的栏位顺序填入资料

栏位的资料形态和所填入的资料必须吻合

table_name 也可以是景观 view_name

INSERT INTO table_name (columncolumn)

SELECT columnxcolumny FROM another_table

说明也可以经过一个子查询(subquery)把别的表格的资料填入

查询资料

基本查询

SELECT columncolumns

FROM table_name

说明把table_name 的特定栏位资料全部列出来

SELECT *

FROM table_name

WHERE column = xxx

[AND column > yyy] [OR column <> zzz]

说明

*表示全部的栏位都列出来

WHERE 之后是接条件式把符合条件的资料列出来

SELECT columncolumn

FROM table_name

ORDER BY column [DESC]

说明ORDER BY 是指定以某个栏位做排序[DESC]是指从大到小排列若没有指明则是从小到大

排列

组合查询

组合查询是指所查询得资料来源并不只有单一的表格而是联合一个以上的

表格才能够得到结果的

SELECT *

FROM tabletable

WHERE lum=lumn

说明

查询两个表格中其中 column 值相同的资料

当然两个表格相互比较的栏位其资料形态必须相同

一个复杂的查询其动用到的表格可能会很多个

整合性的查询

SELECT COUNT (*)

FROM table_name

WHERE column_name = xxx

说明

查询符合条件的资料共有几笔

SELECT SUM(column)

FROM table_name

说明

计算出总和所选的栏位必须是可数的数字形态

除此以外还有 AVG() 是计算平均MAX()MIN()计算最大最小值的整合性查询

SELECT columnAVG(column)

FROM table_name

GROUP BY column

HAVING AVG(column) > xxx

说明

GROUP BY: 以column 为一组计算 column 的平均值必须和 AVGSUM等整合性查询的关键字

一起使用

HAVING : 必须和 GROUP BY 一起使用作为整合性的限制

复合性的查询

SELECT *

FROM table_name

WHERE EXISTS (

SELECT *

FROM table_name

WHERE conditions )

说明

WHERE 的 conditions 可以是另外一个的 query

EXISTS 在此是指存在与否

SELECT *

FROM table_name

WHERE column IN (

SELECT column

FROM table_name

WHERE conditions )

说明

IN 后面接的是一个集合表示column 存在集合里面

SELECT 出来的资料形态必须符合 column

其他查询

SELECT *

FROM table_name

WHERE column LIKE x%

说明LIKE 必须和后面的x% 相呼应表示以 x为开头的字串

SELECT *

FROM table_name

WHERE column IN (xxxyyy)

说明IN 后面接的是一个集合表示column 存在集合里面

SELECT *

FROM table_name

WHERE column BETWEEN xx AND yy

说明BETWEEN 表示 column 的值介于 xx 和 yy 之间

更改资料

UPDATE table_name

SET column=xxx

WHERE conditoins

说明

更改某个栏位设定其值为xxx

nditions 是所要符合的条件若没有 WHERE 则整个 table 的那个栏位都会全部被更改

删除资料

DELETE FROM table_name

WHERE conditions

说明删除符合条件的资料

说明关于WHERE条件后面如果包含有日期的比较不同数据库有不同的表达式具体如下

()如果是ACCESS数据库则为WHERE mydate>##

()如果是ORACLE数据库则为WHERE mydate>cast( as date)

WHERE mydate>to_date(yyyymmdd)

在Delphi中写成

thedate= ;

querySQLadd(select * from abc where mydate>cast(++thedate++ as date));

如果比较日期时间型则为

WHERE mydatetime>to_date( ::yyyymmdd hh:mi:ss)               

上一篇:SQL Server 2005 Beta 2 Transact-SQL功能(2)

下一篇:用 SQL Server从应用程序生成用户友好的报表