下面为工作中有时候遇到的基础的数据库语句,感觉有用的话,点下赞,没用的话,勿喷。
1.表中添加字段:
alter table 表名 add column 字段名 字段类型
2.给表中的字段重新命名:
altet table 表名 rename column 原字段名 to 现字段名;
3.修改表名:
rename table 旧表名 to 新的表名;
4.添加联合主键:
alter table 表名 add constraint 联合主键名称 primary key(主键1,主键2);
5.删除表中的主键:
alter table 表名 drop primary;
添加主键:
ALTER TABLE WFI_JOIN ADD CONSTRAINT pk_id_value PRIMARY KEY (INSTANCEID,PK_VALUE);
6.修改表中的字段类型或者长度:
alter table 表名 alter column 字段名 set data type 字段类型(或字段长度);
7.创建联合索引:
CREATE INDEX IDX_RPT_SDSX_XDHS_01 ON RPT_SDSX_XDHS ( STAT_MON ASC, MAIN_BCH ASC,MAIN_USR ASC ) ALLOW REVERSE SCANS;
删除索引:ALTER TABLE NCMIS.WFI_JOIN DROP CONSTRAINT SQL170704023230710;
7.添加索引
create index 索引名称 on 表名(字段名称);//给表中的某个字段加上索引(索引名称要见名知意,index_XX)
8.重构表
db2 reorg table 表名;
9.字段加上注释
comment on column 表名.字段名 is '注释名'
7.创建联合索引:
CREATE INDEX IDX_RPT_SDSX_XDHS_01 ON RPT_SDSX_XDHS ( STAT_MON ASC, MAIN_BCH ASC,MAIN_USR ASC ) ALLOW REVERSE SCANS;
删除索引:ALTER TABLE NCMIS.WFI_JOIN DROP CONSTRAINT SQL170704023230710;
5.添加联邦:
select * from syscat.servers;-查看库所使用的联邦
CREATE NICKNAME YCLOANS.MONTH_REPORT FOR YCSER.NCMIS.MONTH_REPORT;
ALTER NICKNAME NCMIS.MONTH_REPORT ADD PRIMARY KEY (loan_no);
select * from YCSER.YCLOANS.MONTH_REPORT;-- 用这个查一下能不能连上
6.runstat/REORG表:
call Sysproc.admin_cmd('runstats on table NCMIS.ACC_LOAN_ZX_CP with distribution and detailed indexes all');
call Sysproc.admin_cmd('reorg table ncmis.wfi_join');
db2 "load query table RPT_SDSX_SXNX"; 此时提示
Tablestate:
Load Pending
只需执行命令:db2 "load from /dev/null of del terminate into RPT_SDSX_XD" 解挂即可
7.全库runstate :select 'RUNSTATS ON TABLE ' || table_schema||'.'||table_name ||';' from sysibm.tables where table_schema='NCMIS';
8.执行存储过程:
db2 -td@ -f 执行的文件名称
9.--保留两位小数 select CAST('10000000.23' AS DECIMAL(16,2)) AMT from SYSIBM.dual;
10.在db2中想获取前几行:select * from s_com_cde where com_typ ='STD_ZB_TEMPLET_TYPE' fetch first 100 rows only;
11.添加联合主键:alter table XXX add constraint pk_XXXX primary key (A,B);
ALTER TABLE NCMIS.WFI_JOIN DROP CONSTRAINT SQL171204125113680;
ALTER TABLE NCMIS.WFI_JOIN ALTER COLUMN PK_VALUE SET NOT NULL;
12.导入导出文件del
db2 "export to ./CCR_RULE_INFO.del of del modified by codepage=1208 select * from ncmis.CCR_RULE_INFO";
db2 "load from /home/ncmis/s_usr.del of del modified by codepage=1208 delprioritychar usedefaults insert into ncmis.s_usr nonrecoverable"---数据量大使用此导入
db2 "import from prd_rul_set.del of del MODIFIED BY DELPRIORITYCHAR commitcount 1000000 insert into ncmis.prd_rul_set"
13.--导出联邦DDl
db2look -d xdyydb -e -o dbfile20180508 -i ncmis -w ncmis -z ncmis
14.--导出sequenceDDl
db2look -l xdyydb -e -o dbfile20180508 -i ncmis -w ncmis -z ncmi
15.--导出表结构
db2look -d xdyydb -e -t temp_cus_blk1 -o temp1.dml
16.创建序列
CREATE SEQUENCE "NCMIS "."CMIS_SEQ_4001_1008" AS INTEGER
MINVALUE 1 MAXVALUE 99999999
START WITH 301 INCREMENT BY 1
CACHE 100 CYCLE NO ORDER;
序列号:VALUES(nextval for SEQ_CAL_PK), VALUES(nextval for CMIS_SEQ_6001_1028)
举例:select ('A294F301092018051412121212'||nextval for SEQ_CAL_PK) pk_id, c.RULE_NO from S
重置序列号:ALTER SEQUENCE LS_0001 RESTART WITH 1
17.建表使用表空间: IN XDYYDB_DAT01_TBS INDEX IN XDYYDB_IDX01_TBS ORGANIZE BY ROW;
18.//空备数据
连接数据库: db2 connect to xdhsdb
查看表空间状态: db2 list tablespaces show detail
正常状态为 0x0000
处于 0x0004 停顿的独占
解决: db2=》select tabname from syscat.tables where tablid=50 通过锁住的id号找出那个 tabName
db2=》 quiesce tablespaces for table tabName reset 执行该命令清除状态
处于 0x0020 备份暂挂
db2 backup database dbName tablespace tabSpaceName online to /dev/null
db2 list tablespaces show detail
db2 backup database XDYYDB tablespace XDYYDB_IDX01_TBS online to /dev/null
19.查看端口正常否:
netstat -an|grep 9080 --
netstat -tunlp| grep 9101
20.db2top -d cmisdb
db2 "force application()"//杀死单个进程
db2 "force application all"//杀死全部进程