Linux下db2查询语句,DB2中常⽤sql语句语法
DB2 提供了关连式资料库的查询语⾔sql(structured query language),是⼀种⾮常⼝语化、既易学⼜易懂的语法。此⼀语⾔⼏乎是每个资料库系统都必须提供的,⽤以表⽰关连式的操作,包含了资料的定义(ddl)以及资料的处理(dml)。sql原来拼成sequel,这语⾔的原型以"系统 r"的名字在 ibm 圣荷西实验室完成,经过ibm内部及其他的许多使⽤性及效率测试,其结果相当令⼈满意,并决定在系统r 的技术基础发展出来 ibm 的产品。⽽且美国国家标准学会(ansi)及国际标准化组织(iso)在1987遵循⼀个⼏乎是以 ibm sql 为基础的标准关连式资料语⾔定义。
⼀、资料定义 DDL(data definition language)
资料定语⾔是指对资料的格式和形态下定义的语⾔,他是每个资料库要建⽴时候时⾸先要⾯对的,举凡资料分哪些表格关系、表格内的有什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。
1、建表格:
create table table_name(
column1 datatype [not null] [not null primary key],
column2 datatype [not null],
...)
说明:
datatype --是资料的格式,详见表。
nut null --可不可以允许资料有空的(尚未有资料填⼊)。
primary key --是本表的主键。
2、更改表格
alter table table_name
add column column_name datatype
说明:增加⼀个栏位(没有删除某个栏位的语法。
alter table table_name
开发app所需的各种费用add primary key (column_name)
说明:更改表得的定义把某个栏位设为主键。
alter table table_name
drop primary key (column_name)
说明:把主键的定义删除。
3、建⽴索引
create index index_name on table_name (column_name)
说明:对某个表格的栏位建⽴索引以增加查询时的速度。
4、删除
drop table_name
drop index_name
⼆、DDL的资料形态 datatypes
smallint 16 位元的整数。
interger 32 位元的整数。
decimal(p,s) p 精确值和 s ⼤⼩的⼗进位整数,精确值p是指全部有⼏个数(digits)⼤⼩值,s是指⼩数点后有⼏位数。如果没有特别指定,则系统会设为 p=5; s=0 。
float 32位元的实数。
double 64位元的实数。
char(n) n 长度的字串,n不能超过 254。
varchar(n) 长度不固定且其最⼤长度为 n 的字串,n不能超过 4000。
graphic(n) 和 char(n) ⼀样,不过其单位是两个字元 double-bytes, n不能超过127。这个形态是为了⽀援两个字元长度的字体,例如中⽂字。
vargraphic(n) 可变长度且其最⼤长度为 n 的双字元字串,n不能超过 2000。
date 包含了 年份、⽉份、⽇期。
time 包含了 ⼩时、分钟、秒。
timestamp 包含了 年、⽉、⽇、时、分、秒、千分之⼀秒。
三、资料操作DML (data manipulation language)
资料定义好之後接下来的就是资料的操作。资料的操作不外乎增加资料(insert)、查询资料(query)、更改资料(update) 、删除资料(delete)四种模式,以下分 别介绍他们的语法:
1、增加资料:
insert into table_name (column1,column2,...)
values ( value1,value2, ...)
说明:
1.若没有指定column 系统则会按表格内的栏位顺序填⼊资料。
2.栏位的资料形态和所填⼊的资料必须吻合。
3.table_name 也可以是景观 view_name。
insert into table_name (column1,column2,...)
select columnx,columny,... from another_table
说明:也可以经过⼀个⼦查询(subquery)把别的表格的资料填⼊。
2、查询资料:
基本查询
select column1,columns2,...
from table_name
说明:把table_name 的特定栏位资料全部列出来
select *
from table_name
where column1 = xxx
[and column2 > yyy] [or column3 <> zzz]
说明:
1.''''*''''表⽰全部的栏位都列出来。
2.where 之後是接条件式,把符合条件的资料列出来。
select column1,column2
css图片居中裁剪from table_name
order by column2 [desc]
说明:order by 是指定以某个栏位做排序,[desc]是指从⼤到⼩排列,若没有指明,则是从⼩到⼤排列
组合查询
组合查询是指所查询得资料来源并不只有单⼀的表格,⽽是联合⼀个以上的表格才能够得到结果的。
浏览器的跨域
select *
from table1,table2
lumn1
说明:
1.查询两个表格中其中 column1 值相同的资料。
2.当然两个表格相互⽐较的栏位,其资料形态必须相同。
3.⼀个复杂的查询其动⽤到的表格可能会很多个。
整合性的查询:
select count (*)
from table_name
where column_name = xxx
说明:查询符合条件的资料共有⼏笔。
select sum(column1)
from table_name
说明:1.计算出总和,所选的栏位必须是可数的数字形态。
个人博客手机登录2.除此以外还有 avg() 是计算平均、max()、min()计算最⼤最⼩值的整合性查询。
select column1,avg(column2)
from table_name
group by column1
having avg(column2) > xxx
说明:1.group by: 以column1 为⼀组计算 column2 的平均值必须和 avg、sum等整合性查询的关键字⼀起使⽤。
2.having : 必须和 group by ⼀起使⽤作为整合性的限制。
复合性的查询
select *
from table_name1
where exists (
select *
from table_name2
where conditions )
说明:1.where 的 conditions 可以是另外⼀个的 query。
select *
from table_name1
where column1 in (
select column1
from table_name2
where conditions )mysql语句的执行顺序
说明:1. in 後⾯接的是⼀个集合,表⽰column1 存在集合⾥⾯。
2. select 出来的资料形态必须符合 column1。
其他查询
select *
from table_name1
where column1 like ''''x%''''
说明:like 必须和後⾯的''''x%'''' 相呼应表⽰以 x为开头的字串。
select *
from table_name1
where column1 in (''''xxx'''',''''yyy'''',..)
说明:in 後⾯接的是⼀个集合,表⽰column1 存在集合⾥⾯。
select *
from table_name1
where column1 between xx and yy
说明:between 表⽰ column1 的值介於 xx 和 yy 之间。
3、更改资料:
update table_name
set column1=''''xxx''''
where conditoins
说明:
1.更改某个栏位设定其值为''''xxx''''。
4、删除资料:
delete from table_name
where conditions
说明:删除符合条件的资料。
说明:关于where条件后⾯如果包含有⽇期的⽐较,不同数据库有不同的表达式。具体如下:
oracle安装监听程序(1)如果是access数据库,则为:where mydate>#2000-01-01#
(2)如果是oracle数据库,则为:where mydate>cast(''''2000-01-01'''' as date)
或:where mydate>to_date(''''2000-01-01'''',''''yyyy-mm-dd'''')
在delphi中写成:thedate=''''2000-01-01'''';
query1.sql.add(''''select * from abc where mydate>cast(''''+''''''''''''''''+thedate+''''''''''''''''+'''' as date)'''');
如果⽐较⽇期时间型,则为:where mydatetime>to_date(''''2000-01-01 10:00:01'''',''''yyyy-mm-dd hh24:mi:ss'''')审校by lei
--------------
1、组合语句执⾏
BEGIN  ATOMIC
表达式1 分号 空格/回车
表达式2 分号 空格/回车
END
2、应该限制访问权限的表(应该撤销这些表PUBLIC SELECT访问权)
SYSCAT.DBAUTH
SYSCAT.TABAUTH
SYSCAT.PACKAGEAUTH
SYSCAT.INDEXAUTH
SYSCAT.COLAUTH
SYSCAT.PASSTHRUAUTH
SYSCAT.SCHEMAAUTH
⽐较有⽤的⽬录表
SYSCAT.COLUMNS:包含每⼀⾏对应于表或视图中定义的列
SYSCAT.INDEXCOLUSE:包含每⼀⾏包含的所有列
SYSCAT.INDEXES:包含每⼀⾏对应于表或视图中定义的每个索引
SYSCAT.TABLES:所创建每个表,视图,别名对应其中⼀⾏
SYSCAT.VIEWS:所创建每个视图对应其中⼀⾏或⼏⾏
通过索引保持数据唯⼀性:CREATE UNIQUE INDEX INDEXNAME ON TABLE (COLUMN)
消除重复⾏:SELECT DISTINCT COLUMN FROM TABLE

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。