db2使用命令

本文档详细介绍了DB2数据库的管理操作,包括创建、启动和关闭数据库,连接和断开数据库,查询数据库列表,创建表空间及表,数据类型介绍,整型到字符型转换,表结构修改,数据插入、查询、更新和删除,以及视图、存储过程、触发器的创建和使用。此外,还涵盖了约束、主键和外键的概念,事务管理和锁机制,以及数据的导出和导入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:创建数据库

CREATE DATABASE sam_1 AUTOMATIC STORAGE  YES  ON '/home/db2inst1/db2data' USING CODESET UTF-8 TERRITORY CN;

2:启动数据库

db2start

3:关闭数据库

db2stop

4:连接数据库

CONNECT TO sam_1 USER db2inst1 USING pwd;

5:断开数据库

DISCONNECT sam_1

6:查询某个实例下的所有数据库

list db directory

7:创建表空间

create tablespace <tablespace_name> pagesize <4k或8k或16k或32k>

8:查看数据库中存在的表空间

 list tablespaces

9:查看表空间详细信息

list tablespaces show detail

10:查看表空间对应的容器信息

list tablespace containers for <tablespace_id>

11:在表空间中创建表

create table <table_name>(字段1 类型 状态,字段2类型 状态。。。) in <tablespace_name>

12:DB2支持的数据类型

» Data Types

     » Numeric

         » Integer

             » SMALLINT    -32768~32767(精度为5的两字节的整型)

             » INTEGER     -2147483648~2147483647(精度为10的4字节的整型)

» BIGINT     -9223372036854775808~9223372036854775807(精度为19的8字节整型)

         » DECIMAL

» DECIMAL    (小数点的位置是由该DECIMAL数的精度和规模决定,规模是该数的小数部分个数,其不能为负数和大于精度;最大精度为31)

         » FloatingPoint

» REAL      -3.402E+38~-1.175E-37或10175E-37~3.402E+38(单精度浮点数是一个实数的32位近似值)

» DOUBLE/FLOAT   (双精度浮点数是一个实数的64位近似值)

     » String

         » CharacterString

             » SingleByte

» CHAR   (字符串的长度是有序字节数;长度已分配好就固定了,其长度从1~254)

                 » VARCHAR   (32672字节长)

                 » LONGVARCHAR  (32700字节长)

                 » CLOB        2G字节长(2147483647字节长)

             » DoubleByte

                 » GRAPHIC

                 » VARGRAPHIC

                 » LONGVARGRAPHIC

                 » DBCLOB

         » BinaryString

             » BLOB

     » Datetime

         » DATE

         » TIME

         » TIMESTAMP

     » XML

13:在DB2数据库中如何将整型转换为字符型

在DB2中可以用函数char()来转换。

14:修改表结构,删除表

增加一列

alter table <table_name> add <字段><类型> <状态>

修改一列

alter table <table_name>alter COLUMN <字段>  set data type <类型> <状态>

删除一列

alter table <table_name>drop COLUMN <字段>

删除表

drop table <table_name>

注:对表进行任何操作都不被允许,提示SQLSTATE=57016 SQLCODE=-668 ,原因码 "7"的错误:SQL0668N Operation not allowed for reason code "7" on table XXX.
解决方法为:执行命令:reorg table XXX;即可。

15:向表中添加数据

根据字段插入数据

insert into <table_name>(字段1,字段2,字段3…) values(value1,value2,value3…)

插入整张表的数据

insert into <table_name> values(value1,value2,value3…)

16:查询表中数据

查询表中所有数据

select * from <table_name>

根据条件查询

select * from <table_name>where 字段名=‘条件‘

            例:select * from test_table where name=’zhangsan’

        注:条件要是某一字段所包含的完整信息。

模糊查询

select * from <table_name>where 字段名=‘%%’

            例:select * from test_table where name=’zhang’

        注:模糊查询的条件,只要写明某一字段所包含内容的部分信息。

查询表中前10条记录

select * from <table_name>fetch friest 10 rows only

查询表中的某一字段

select 字段名 from <table_name>

对查询结果排序(asc升序,desc降序)

select * from class order by<asc或desc>

整型,日期类型的字段可以制定范围,用between

select * from <table_name>where born between ‘2009-05-04’and ‘2010-0608’

17:更新表中数据

update <table_name> set 字段名=‘新内容‘ where字段名=’条件‘

18:删除表中数据

删除表中所有数据

delete from <table_name>

根据条件删除表中的信息

delete from <table_name> where 字段名=‘条件‘

19:显示当前用户所有表

list tables

20:显示系统中所有表

list tables for system

21:查询表的结构信息

describe table <table_name>

22:查看表的详细信息

select * from syscat.tables where tabname=’<table_name>’

23:查看表的约束

select * from syscat.checkd wheretabname=<table_name>

24:查看表的引用完整约束

select * from syscat.referenecs where tabname=<tb_name>

25:索引(用于在查询数据时,加快查询速度

创建唯一索引

create UNIQUE index <index_name> on <table_name>(字段)

         注:在某个字段上创建唯一索引,即插入时,该字段不能重复。

删除索引

     drop index <index_name>

26:索引使用技巧与数据库性能调优

查询语句中,对于字符串型的字段,一定要用单引号括起来,对于整型不要用引号,对于日期型的字段,目前暂无定论,是否会对性能有影响.可进一步跟踪。

尽量不要用in子句,那样的话无法使用索引,导致查询效率低下,可以改用UNION来连接多个查询.这样可以提高效率。

多个查询条件,应该将过滤多的带索引的字段的条件放在前面。

查询条件中尽量用等号,不要用大于,小于等,那样可能会用不上索引。

在全部查询出所有结果时,要求带上条件1=1,可以避免使用索引,提高效率。

27:创建视图,删除与使用

» 创建

     » create view <view_name> as select <字段> from <table_name>

» 使用

     » select * from <view_name>

» 删除

     » drop view <view_name>

28:创建存储过程,删除与使用

» 创建存储过程

     » CREATE PROCEDURE get_avage_age

    --在存储过程中设置变量

    @class_namechar(10),

    @CheckDate[datetime]

AS

BEGIN

    --在存储过程中添加方法

    Select age fromstudent where class=@class_name and born<@CheckDate

END

» 执行存储过程

     » DECLARE@return_value int

 

EXEC @return_value=get_avage_age

@class_name =’gaosan’

@CheckDate = ‘2009-01-01’

 

SELECT  ‘Return Value’= @return_value

GO

» 删除存储过程

     » Drop procedure get_avage_age

29:创建触发器,使用触发器,修改触发器,删除触发器

» CREATE TRIGGER trigger_1

         ON class

        AFTER DELETE

        AS

       BEGIN

             --在触发器中创建方法

Delete from student where student.class not in (selectclass from class)

       END

 

» 注:此触发器的功能是:当class表有删除操作时,同步student表中的记录,将不存在的班级的记录全部删除。

   » 使用触发器

        » 先要去掉class表中的约束

            »alter table student drop CONSTRAINT FK_CLASS

        » 根据条件查询student和class表。

            »select * from student where class=’chuyi’

            » select * from class where class=’chuyi’

        » 根据条件删除class表中的信息。

            »delete from class where class=’chuyi’

        » 执行触发器之后,再次根据条件查询student和class表中的信息。

            »select * from student where class=’chuyi’

            »select * from class where class=’chuyi’

        » 现在可以看到student表中的记录也被更新了。

        » 修改触发器

            » ALTER TRIGGER trigger_1

                        ON  class

                   AS

                   BEGIN

Delect from student where student.class not in (selectclass from class)

END

        » 删除触发器

            » Drop trigger trigger_1

30:约束

» 约束是在修改一个表,或增加一个表记录时,规定表的各个字段之间必须满足的关系。

» ALTER TABLE student ADD CONSTRAINT age_negativeCHECK (student.age >= 0)

    » 约束是表结构的一部分内容,此例的约束是检查年龄字段不要为负值。

        » update student set age=-1   //将会报错

    » 删除一个约束:

        » alter table student dropconstraint age_negative

31:主键,外键

» 主键

» 表通常具有包含唯一标识表中每一行的值的一列或一组列。这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性。在创建或修改表时,您可以通过定义 PRIMARYKEY 约束来创建主键。

» 一个表只能有一个 PRIMARY KEY 约束,并且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束可保证数据的唯一性,因此经常对标识列定义这种约束。

» create table test_table(number int DEFAULT 23PRIMARY KEY),name varchar(25) not null DEFAILT ‘abc’

» 先将原来主键删除,再建联合主键

» alter table test_table ADD CONSTRAINTconstraint_1 PRIMARY KEY(number,name)  在两个字段上建立联合主键

» 外键

» 外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。当创建或修改表时可通过定义FOREIGN KEY 约束来创建外键。

     » 在外键引用中,当一个表的列被引用作为另一个表的主键值的列时,就在两表之间创建了链接。这个列就成为第二个表的外键。

» ALTER TABLE student ADD CONSTRAINT FK_classFOREIGN KEY(class) REFERENCES class(class)

  » 删除外键

        »alter table student dropCONSTRAINT FK_CLASS

  » 建立外键时,要注意几点:外键在外表中要是主键或索引. 两个表的此字段名称最好一样.其他注意事项,项目参考相关数据库的联机帮助文档.例如:外键在外表中重新生成,或重新组织后,或外键的索引被删除后,引起的后果.需要仔细调试

32:事务

» 一个完整的事务就是其中的每个操作要么都完成,要么都不做.回到事务开始前的状态。

   » begin TRANSACTION

    » ALTER INDEX idx_class on class REBUILD

    » select * from class

    » dbcommit TRANSACTION

» 需要注意的是,不同的数据库,事务的开始,结束语法可能不一样.例如:在informix中是:begin work和commit。

33:锁

» 常见的情况是:分为表锁和行锁

» 加锁与解锁

» 排它锁(独占锁)与共享锁

» 锁加在一个事务中读取或修改的行,以防止各种事务并发使用资源。例,如果一个排它锁被一个事务加在某一表的某一行上,在这个锁被释放前,其他事务都不可修改这一行。

» 在事务内加锁。

»SET TRANSACTION ISOLATION LEVELREPEATABLE REAO

    » BEGIN TRANSACTION

» select * from student with (rowlock) where id=1waitfor delay ’00:00:10’

» COMMIT TRANSACTION

» select * from student with (rowlock)where id=1

» update student set name=’efgh’ whereid=1

» 运行结果显示:两次查询的内容将会不同。而更新语句会等到事务结束时,才会得到提交。

» update student set name=’efgh’where id=4:此条更新语句会立即得到执行,因为被锁的行不是id=4的记录。

» 如果rowlock换成TABLOCK或HOLDLOCK,则第二条语句也会等待。TABLOCKX:是排它锁。

34:导出数据

» export to <文件名.类型> of <文件类型> select * from <table_name>

35:导入数据

» import from <文件名.类型> of <文件类型> insert into <table_name>

36:执行sql脚本

db2 -tvf <路径/文件名>

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值