启动: db2start
停止: db2stop
示例:
[calrm@centos firserver]$ db2stop
2023-05-21 16:25:30 0 0 SQL1025N The database manager was not stopped because databases are still active.
SQL1025N The database manager was not stopped because databases are still active.
[calrm@centos firserver]$ db2start
2023-05-21 16:28:42 0 0 SQL1026N The database manager is already active.
SQL1026N The database manager is already active.
[calrm@centos firserver]$
语法:db2 connect to [schema_name]
语法:db2 connect to [schema_name] user [数据库账号] using [数据库密码]
示例:db2 connect to student_db user root using root1234
list tables
db2 describe table <table_name>
示例:db2 describe table user
1.truncate表数据
truncate table [tableName] immediate
示例:truncate table user immediate
语法:delete from <table_name>
db2 “delete from user where id=‘907020000’ or id=‘907010000’”
导出导入del格式文件
db2 export to /home/xxxx.del of del select * from [tablename]
db2 import from /home/xxxx.del of del insert into [tablename]
导出导入ixf格式文件
db2 export to /home/xxxx.IXF of IXF select * from [tablename]
db2 import from /home/xxxx.IXF of IXF insert into [tablename]
此命令可以用来查看schema下所有的表,以及查看表是否有记录
select tabname,card from syscat.tables where tabschema = '[schema name]'
tabname 表名
card 总行数
如: select tabname,card from syscat.tables where tabschema = 'manager';
-- 查看schema为manager下有记录的表
如: select tabname,card from syscat.tables where tabschema = 'manager' and card <> '0'
1. 添加普通索引
语法: create index 索引名 on 表名(列名,列名)
-- 添加一个组合索引
示例: create index index_name_age on user(name, age);
2. 添加唯一索引
语法: create unique index 索引名 on 表名(列名,列名)
-- 添加一个组合索引
示例: create unique index uniq_name_age on user(name, age);
3. 查询索引
语法: select * from syscat.indexes where tabname = '表名';
4. 删除索引
drop index 索引名
1.新增表字段
alter table <表名> add column <字段名> <字段类型> default '0'
示例: alter table user add column user_name varchar(30) default '张三'
设置字段默认时间为当前时间
alter table [table_name] alter column [column_name] set default current date;
注意:目前db2好像不支持添加字段到指定位置,所以添加的字段默认都是放在最后,若需要添加到指定的位置,可以考虑删除表后重新建表
2.删除表字段
alter table <表名> drop column <字段名>
示例: alter table user drop column user_name
注意:drop掉字段之后,可能会导致表查询/插入操作不能执行,需要对表进行reorg。
3.修改字段
注意:此操作需要执行重构表的语句,语句见本篇文章中的重构表
内容
语法: alter table <TABLE_NAME> alter column <COLUMN_NAME> set data type <NEW TYPE>
示例:alter table user alter column user_name set data type varchar(100)
注意: 更改字段类型是有限制的,如将字段改为比之前类型长度大的可以,如果要改小或者修改小数点长度,必须先drop掉原来的column,然后再重新添加.
例如我要将一个Varchar(10)的字段改为Varchar(6) 或者将一个DECIMAL(14, 2)的字段改为DECIMAL(14, 4)等,均不能使用上述语句修改,另外改为不同的类型,也需要先drop掉column。
4.对已有字段重命名
alter table <table name> rename column <column name> TO <new column name>
示例:alter talbe user rename column user_name to u_name
1.对表添加/修改注释
COMMENT ON COLUMN 表名 IS '描述'
示例:comment on column user is '用户表'
2.对字段添加/修改注释
COMMENT ON COLUMN 表名.字段名 IS '表字段的描述'
示例:comment on column user.user_name is '用户名'
改变了字段的类型、字段的长度、改变了索引、删除表字段等都需要重构表, 否则执行数据插入/更新操作时可能会抛出异常
语法一:reorg table 表名
语法二:CALL SYSPROC.ADMIN_CMD(‘reorg table 表名’)
示例:CALL SYSPROC.ADMIN_CMD('REORG TABLE user')
报错内容:
SQL0668N 不允许对表 "student_db.user" 执行操作,原因码为 "7"。 SQLSTATE=57016
报错场景:
对user表新增了性别sex字段,类型设置为Integer, 后来更改了该字段类型为VARCHAR,然后执行update语句对数据进行更新时抛出了该错误。
解决方法:
先执行重构表操作后,再执行update语句。
重构表语法:CALL SYSPROC.ADMIN_CMD(‘reorg table 表名’)
示例:CALL SYSPROC.ADMIN_CMD('REORG TABLE user')
注: 该篇文章持续更新,若有朋友觉得文章不全或有不错内容想更新的,可私信或在评论区留言。