本文最后更新于:3 年前
                  
                
              
            
            
              
              DB2学习 
参考:《DB2从入门到精通》 - 明日科技
DB2转换为DECIMAL: https://qa.1r1g.com/sf/ask/3114613141/ 
DB2数据库学习总结(一) - round函数用法: https://blog.csdn.net/qq_36501591/article/details/82773762 
DB2数据类型: https://www.cnblogs.com/xiaojianblogs/p/6288108.html 
https://blog.csdn.net/weixin_40983306/article/details/87862270 
DB2数据库中的常用的数据类型: https://blog.csdn.net/WziH_CSDN/article/details/111191816 
DB2中数据类型DECIMAL的用法: https://blog.csdn.net/love_hanyu/article/details/84362922 
什么时候索引会失效?: ttps://www.zhihu.com/question/377039636 
索引失效的情况及解决(超详细):  https://blog.csdn.net/sy_white/article/details/122112440 
 
1. DB2数据类型 
参考:https://www.cnblogs.com/xiaojianblogs/p/6288108.html 
 
DB2数据库的内置数据类型主要分成数值型(numeric)、字符串型(character string)、图形字符串(graphic string)、二进制字符串型(binary string)和日期时间型(datetime)。还有一种叫做 DATALINK 的特殊数据类型。DATALINK 值包含了对存储在数据库以外的文件的逻辑引用。
1) 数值型(numeric) 数值型 数据类型包括 SMALLINT、INTEGER、BIGINT、DECIMAL(p,s)、REAL 和 DOUBLE。所有数值都有符号和精度。精度是指除符号以外的二进制或十进制的位数。如果数字的值大于等于零,就认为符号为正。
小整型,SMALLINT:小整型是两个字节的整数,精度为 5 位。小整型的范围从 -32,768 到 32,767。 
大整型,INTEGER 或 INT:大整型是四个字节的整数,精度为 10 位。大整型的范围从 -2,147,483,648 到 2,147,483,647。 
巨整型,BIGINT:巨整型是八个字节的整数,精度为 19 位。巨整型的范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。 
小数型,DECIMAL(p,s)、DEC(p,s)、NUMERIC(p,s) 或 NUM(p,s):小数型的值是一种压缩十进制数,它有一个隐含的小数点。压缩十进制数将以二-十进制编码(binary-coded decimal,BCD)记数法的变体来存储。小数点的位置取决于数字的精度(p)和小数位(s)。小数位是指数字的小数部分的位数,它不可以是负数,也不能大于精度。最大精度是 31 位。小数型的范围从 -10^31+1 到 10^31-1。 
单精度浮点数(Single-precision floating-point),REAL:单精度浮点数是实数的 32 位近似值。数字可以为零,或者在从 -3.402E+38 到 -1.175E-37 或从 1.175E-37 到 3.402E+38 的范围内。 
双精度浮点数(Double-precision floating-point),DOUBLE,DOUBLE PRECISION 或 FLOAT:双精度浮点数是实数的 64 位近似值。数字可以为零,或者在从 -1.79769E+308 到 -2.225E-307 或从 2.225E-307 到 1.79769E+308 的范围内。 
 
2) 字符串型(character string) 字符串 是字节序列。字符串包括 CHAR(n) 类型的定长字符串和 VARCHAR(n)、LONG VARCHAR 或 CLOB(n) 类型的变长字符串。字符串的长度就是序列中的字节数。
定长字符串,CHARACTER(n) 或 CHAR(n):定长字符串的长度介于 1 到 254 字节之间。如果没有指定长度,那么就认为是 1 个字节。 
变长字符串,VARCHAR(n)、CHARACTER VARYING(n) 或 CHAR VARYING(n):VARCHAR(n) 类型的字符串是变长字符串,最长可达 32,672 字节。 
LONG VARCHAR:LONG VARCHAR 类型的字符串是变长字符串,最长可达 32,700 字节。 
字符大对象字符串(Character Large Object String),CLOB(n[K M G]):CLOB 是变长字符串,最长可以达到 2,147,483,647 字节。如果只指定了 n,那么 n 的值就是最大长度。如果指定了 nK,那么最大长度就是 n1,024(n 的最大值为 2,097,152)。如果指定了 nM,那么最大长度就是 n 1,048,576(n 的最大值为 2,048)。如果指定了 nG,那么最大长度就是 n*1,073,741,824(n 的最大值是 2)。CLOB 用于存储基于大单字节字符集(single-byte character set,SBCS)字符的数据或基于混合(多字节字符集(MBCS)和 SBCS)字符的数据。 
 
3) 图形字符串(graphic string) 图形字符串 是表示双字节字符数据的字节序列。图形字符串包括类型为 GRAPHIC(n) 的定长图形字符串和类型为 VARGRAPHIC(n)、LONG VARGRAPHIC 和 DBCLOB(n) 的变长图形字符串。字符串的长度就是序列中双字节字符的数目。
定长图形字符串,GRAPHIC(n):定长图形字符串的长度介于 1 到 127 个双字节字符之间。如果没有指定长度,就认为是 1 个双字节字符。 
变长图形字符串,VARGRAPHIC(n):VARGRAPHIC(n) 类型的字符串是变长图形字符串,最大长度可达 16,336 个双字节字符。 
LONG VARGRAPHIC:LONG VARGRAPHIC 类型的字符串是变长图形字符串,最大长度可达 16,350 个双字节字符。 
双字节字符大对象字符串,DBCLOB(n[K M G]):双字节字符大对象是变长双字节字符图形字符串,最长可达 1,073,741,823 个字符。如果只指定了 n,那么 n 就是最大长度。如果指定了 nK,那么最大长度就是 n1,024(n 的最大值为 1,048,576)。如果指定了 nM,那么最大长度就是 n 1,048,576(n 的最大值为 1,024)。如果指定了 nG,那么最大长度就是 n*1,073,741,824(n 的最大值是 1)。DBCLOB 用于存储基于大 DBCS(双字节字符集,double-byte character set)字符的数据。二进制字符串是字节序列。 
 
4) 二进制字符串(binary string) 二进制字符串 包括 BLOB(n) 类型的变长字符串,它用于容纳非传统型的数据,诸如图片、语音或混合媒体等,还可以容纳用户定义的类型及用户定义的函数的结构化数据。
  * 二进制大对象,BLOB(n[K M G]):二进制大对象是变长字符串,最长可达 2,147,483,647 字节。如果只指定了 n,那么 n 就是最大长度。如果指定了 nK,那么最大长度就是 n1,024(n 的最大值为 2,097,152)。如果指定了 nM,那么最大长度就是 n 1,048,576(n 的最大值为 2,048)。如果指定了 nG,那么最大长度就是 n*1,073,741,824(n 的最大值是 2)。
5) 日期时间型(datetime) 日期时间型 数据类型包括 DATE、TIME 和 TIMESTAMP。日期时间值可在某些算术和字符串操作中使用,而且兼容某些字符串,但它们既不是字符串,也不是数字。
DATE:DATE 是一个由三部分组成的值(年、月和日)。年份部分的范围是从 0001 到 9999。月份部分的范围是从 1 到 12。日部分的范围是从 1 到 n,其中 n 的值取决于月份。DATE 列长 10 个字节。 
TIME:TIME 是一个由三部分组成的值(小时、分钟和秒)。小时部分的范围是从 0 到 24。分钟和秒部分的范围都是从 0 到 59。如果小时为 24,分钟和秒的值都是 0。TIME 列长 8 个字节。 
TIMESTAMP:TIMESTAMP 是一个由七部分组成的值(年、月、日、小时、分钟、秒和微秒)。年份部分的范围是从 0001 到 9999。月份部分的范围是从 1 到 12。日部分的范围是从 1 到 n,其中 n 的值取决于月份。小时部分的范围是从 0 到 24。分钟和秒部分的范围都是从 0 到 59。微秒部分的范围是从 000000 到 999999。如果小时是 24,那么分钟值、秒的值和微秒的值都是 0。TIMESTAMP 列长 26 个字节。日期时间值的字符串表示:尽管 DATE、TIME 和 TIMESTAMP 的值的内部表示对用户是透明的,日期、时间和时间戳记也可以用字符串来表示,CHAR 标量函数(请参阅 SQL 的“词类(parts of speech)”)可以用于创建日期时间值的字符串表示。 
日期值的字符串表示是一个以数字开始,长度不少于 8 个字符的字符串。日期值的月份和日部分中前面的零可以省略。 
时间值的字符串表示是以数字开头,长度不少于 4 个字符的字符串。时间值的小时部分前面的零可以省略,秒部分可以完全省略。如果秒的值没有指定,那么就认为是 0。 
时间戳记值的字符串表示是以数字开头,长度不少于 16 个字符的字符串。完整的时间戳记字符串表示形式为 yyyy-mm-dd-hh.mm.ss.nnnnnn。时间戳记值的月、日或小时等几部分前面的零可以省略,微秒可以截断或完全省略。如果任何时间戳记值的微秒部分尾零被省略掉了,那么将假定空缺的数位上为零 
 
2.Oracle和DB2数据类型的比较 Oracle 和DB2 数据类型的比较
Oracle 
DB2/400 
 
 
Oracle数据类型 
注意事项 
DB2 UDB数据类型 
注意事项 
 
DATE 
DATE 
如果只使用MM/DD/YYY,那么使用DATE类型。 
 
VARCHAR2(n) 
n<=4000 
CHAR(n) 
若n<=32766,则使用DB2/400中的CHAR类型、VARCHAR 
 
LONG 
n<=2GB 
VARCHAR(n) 
若n<=32K,则使用DB2/400中的CHAR类型、VARCHAR。 
 
ROW& 
n<=255 
CHAR(n) FOR BIT DATA 
若n<=32K, 则使用CHAR(n) FOR BIT DATA 或 
 
BLOB 
n<=4GB 
BLOB(n) 
若n<=2GB, 则使用BLOB(n) 
 
CLOB 
n<=4GB 
CLOB(n) 
若n<=2GB, 则使用CLOB(n) 
 
NCLOB 
n<=4GB 
DBCLOB(n) 
若n<=2GB, 则使用DBCLOB(n/2) 
 
NUMBER 
SMALLINT/INTEGER/BIGINT 
若Oracle中定义NUMBER(p) 或 NUMBER(p,s), 则使用SAMLLINT/INTEGER/BIGINT 
 
说明:NUMBER 
  Oracle中的NUMBER类型可以对应DB2/400中的很多类型,这种对应关系要依赖于Oracle中number将用于保存何种类型的数据,是整型还是带有小数位的实型数据,另外还要考虑类型所占用的存储空间,例如:SAMLLINT占2 byte, INTEGER占4 byte; BIGINT占8 byte;Oracle中的NUMBER类型所占用的存储空间要根据它的定义而定,例如缺省精度下的NUMBER有38个数字长,占用20 byte的空间。具体的对应关系请参照上表。ROW and LOB类型 ROWID Character type 
3. DB2数据类型转换 DB2数据库伪表:SYSIBM.SYSDUMMY1
1 2 3 select  1  from  SYSIBM.SYSDUMMY1;select  1  from  SYSIBM.DUAL;
DUAL 表 
参考:https://www.ibm.com/docs/zh/db2/11.1?topic=SSEPGG_11.1.0/com.ibm.db2.luw.apdv.porting.doc/doc/r0052874.htm 
 
任何对 DUAL 表进行的未限定引用将解析为一个内置视图,该视图返回一行以及一列。该列的名称为 DUMMY,值为“X”。DUAL 表类似于 SYSIBM.SYSDUMMY1 表。
要启用 DUAL 表支持,请将 DB2_COMPATIBILITY_VECTOR  注册表变量设置为十六进制值 0x02(位位置 2),然后停止并重新启动该实例:
1 2 3 db2set  DB2_COMPATIBILITY_VECTOR=02 start 
要激活针对 Oracle 应用程序的所有兼容性功能,请将 DB2_COMPATIBILITY_VECTOR  注册表变量设置为 ORA,然后停止并重新启动该实例:
1 2 3 db2set  DB2_COMPATIBILITY_VECTOR=ORAstart 
将对 DUAL 表进行的未限定表引用解析为 SYSIBM.DUAL。
如果存在用户定义的名为 DUAL 的表,那么 Db2® 服务器会解析对该用户定义表的表引用。
示例:
通过从 DUAL 中进行选择来生成随机数。
1 SELECT  RAND() AS  RANDOM_NUMBER FROM  SYSIBM.DUAL;
检索 CURRENT SCHEMA 专用寄存器的值。
1 2 SET  SCHEMA = MYSCHEMA;SELECT  CURRENT  SCHEMA  AS  CURRENT_SCHEMA  FROM  DUAL;
对应的Oracle伪表:
1 SELECT  SYSDATE FROM  DUAL;
1) 数字转DECIMAL类型 
https://blog.csdn.net/weixin_40983306/article/details/87862270 
 
decimal(p,s) 
p表示:不包括小数点,不包括符号位,所能存数字的总位数(包括小数部分和整数部分)
举个例子:
decimal(5,2) 能够表示的数的范围 -999.99到999.99; 
1 2 3 4 5 # DECIMAL (10 ,2 ) 不含小数点总共10 位,小数位2 位select  CAST (1234567890  AS  DECIMAL (10 ,2 )) from  SYSIBM.SYSDUMMY1;select  CAST (12345678.12  AS  DECIMAL (10 ,2 )) from  SYSIBM.SYSDUMMY1;
数字长度超出报错:
1 select  CAST (123456789  AS  DECIMAL (10 ,2 )) from  SYSIBM.SYSDUMMY1;
SQL 错误 [22003]: 在数字数据类型转换期间发生溢出。. SQLCODE=-413, SQLSTATE=22003, DRIVER=4.26.14
2) decimal函数 decimal(5.15, 15, 2)
1 2 3 4 5 6 7 8 9 10 select  CAST (1234567890  AS  DECIMAL (10 ,2 )) from  SYSIBM.SYSDUMMY1;decimal (5.15 , 15 , 2 )decimal (5.15 / 3.27 , 15 , 2 )5.15 / 3.27 , 2 )float (5.15 )double (5.15 )coalesce (5.15 , 0 )case  when  a=  0  then  0  else  1  end ;
https://www.ibm.com/docs/zh/db2/11.1?topic=dum-get-hash-value-function-compute-hash-value-given-string 
https://www.ibm.com/docs/zh/db2/11.5 
D:\Program Files\instantclient_19_10\network\admin
4. 索引 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 create  index  iemployee on  employee(id)create  index  iemployee on  employee(id desc , name  asc )create  index  iemployee on  employee(id) allow reverse  scansselect  id, name  from  employee order  by  idcreate  unique  index  iemployeeid on  employee(id) include (name )
5. 表空间和表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 -- https://www.ibm.com/products/db2-database/pricingcreate  table employee(id integer) in  userspace1" -- 查询employee表的所在的表空间 db2 " select  tabname, tbspace from  syscat.tables where  tabname = 'employee' " -- 修改表结构 -- 查看表结构信息 db2 describe table employee -- 为表添加一列 db2 " alter  table employee add depart_id integer" -- 修改表某列的数据类型 db2 " alter  table employee alter  name set  data type  varchar(20 ) alter  gender set  not  null " -- 删除表,表中的数据和表定义都会被删除。如果为表定义了索引或者约束,也会同时被删除。 db2 " drop  table employee" 
6. DB2操作命令 
参考:https://blog.csdn.net/weixin_39881859/article/details/111515762 
 
1) 打开DB2命令窗口 1 2 C:\Users\db2admin>db2cmd
2) 操作数据库实例 1 2 3 4 5 6 7 8 9 #  启动数据库实例 #  停止数据库实例 
3) 连接数据库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 #  连接到数据库 #  示例 #  断开数据库连接 #  删除数据库 #  (执行此操作要小心) 如果不能删除,断开所有数据库连接或者重启db2 #  备份数据库 #  备注:执行以上命令之前需要断开数据库连接 #  在线备份数据库 #  恢复数据库 #  在线恢复数据库 #  导出数据文件 #  导入数据文件 #  获取db2数据库管理配置环境信息 #  获取db2某个数据库数据库管理配置环境信息 #  或者:连接至某个数据库以后执行db2 get db cfg #  更改db2日志空间的大小 #  备注:以下命令为了防止db2数据库过份使用硬盘空间而设,仅用于开发者自己机器上的db2,如果是服务器,则参数需要修改。 #  如果页大小是4KB,则以上命令创建3个100M的日志文件,占用300MB硬盘空间。25600*4KB=102400KB。 #  获取数据库管理器的快照数据 #  显示进行程号 
4) 列出所有数据库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 C:\Users\db2admin>db2 list db directory#  列出所有激活的数据库 
5) 查看表空间列表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 C:\Users\db2admin>db2 list tablespaces#  创建临时表空间 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 # cmd查看所有数据库 db2_DB2常用命令1 、 打开命令行窗口#db2cmd 2 、 打开控制中心3 、 打开命令编辑器4 、 启动数据库实例#db2start 5 、 停止数据库实例#db2stop all 就可以了 /db2stop force6 、 创建数据库#db2 create db [dbname] 7 、 连接到数据库#db2 connect to [dbname] user [username] using [password] 8 、 断开数据库连接#db2 connect reset 9 、 列出所有数据库#db2 list db directory 10 、 列出所有激活的数据库#db2 list active databases 11 、 列出所有数据库配置#db2 get db cfg 12 、 删除数据库#db2 drop database [dbname] 13 、 列出所有用户表#db2 list tables 14 、列出所有系统表#db2 list tables for system 15 、列出所有表#db2 list tables for all 16 、 列出系统表#db2 list tables for system 17 、列出用户表#db2 list tables for user 18 、 列出特定用户表#db2 list tables for schema [user] 19 、 创建一个与数据库中某个表(t2)结构相同的新表(t1)#db2 create table t1 like t2 20 、将一个表t1的数据导入到另一个表t2#db2 "insert into t1 select * from t2" 21 、 查询表#db2 "select * from table name where ..." 22 、 显示表结构#db2 describe table tablename 23 、 修改列#db2 alter table [tablename] alter column [columname] set data type varchar(24) 24 、 执行脚本文件#db2 -tvf scripts.sql 25 、帮助命令#db2 ? db2start #db2 ? 22001 26 、备份数据库#db2 backup db 27 、在线备份数据库#db2 -v "BACKUP DATABASE ONLINE TO WITH 2 BUFFERS BUFFER 1024 INCLUDE LOGS WITHOUT PROMPTING" 28 、恢复数据库#db2 restore db 29 、在线恢复数据库#db2 "RESTORE DB TO LOGTARGET WITHOUT PROMPTING" #db2 "ROLLFORWARD DB TO END OF LOGS AND STOP" ... 30 、导出数据文件#db2move export 31 、导入数据文件#db2move import 32 、获取db2数据库管理配置环境信息#db2 get dbm cfg 33 、.获取db2某个数据库数据库管理配置环境信息#db2 get db cfg for get  db cfg34 、更改db2日志空间的大小#db2 UPDATE DB CFG FOR USING logretain OFF logprimary 3 logsecond 2 logfilsiz 25600; 4 KB,则以上命令创建3 个100 M的日志文件,占用300 MB硬盘空间。25600 *4 KB=102400 KB。35 、创建临时表空间#DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000) 256 36 、获取数据库管理器的快照数据#db2 –v get snapshot for dbm 37 、显示进行程号#db2 list applications show detail 1 、 以默认分隔符加载,默认为“,”号2 、 以指定分隔符“|”加载1 、 卸载一个表中全部数据2 、 带条件卸载一个表中数据connect  to  btpdbsconnect  reset  断开数据库连接all  断开所有数据库连接1 、 db2 backup db btpdbs2 、 db2move btpdbs exportsql 1 、 db2 restore db btpdbs without  rolling forward2 、 db2 -tvf crtdb.sql sql 文件内容:create  db btpdbs on  /db2catalogsql import 4 位数,不够4 位,前面补0 1 ) db2 bind br8200.bnd2 ) /btp/bin/bndall /btp/bndget  dbm cfgget  db cfg for  btpdbsupdate  db cfg for  btpdbs using  LOGBUFSZ 20 update  db cfg for  btpdbs using  LOGFILSIZ 5120 start set  schema  btp 修改当前模式为"btp"show  detail 查看当前数据库表空间分配状况tablespace  containers for  2  show  detail 查看tablespace  id=2 使用容器所在目录tables  for  all  列出当前数据库下所有的表tables  for  schema  btp 列出当前数据库中schema 为btp的表show  detail 显示数据库空间使用情况for  all get  snapshot  for  dynaimic sql  on  jiningon  /db2catalogget  instanceon  自动启动off  不自动启动delete 掉 的数据仍存放在数据库中,占用数据空间,影响系统性能。delete 的数据,优化数据结构。table  表名on  table  表名 with  distribution and  indexes all 46 、对一张表运行统计信息#db2 -v runstatson table TAB_NAMEand indexes all 47 、查看是否对数据库执行了RUNSTATS#db2 -v "select tbname, nleaf, nlevels,stats_timefrom sysibm.sysindexes" 48 、更改缓冲池的大小-1 时,由数据库的配置参数bufferpage控制缓冲池的大小。-1 的命令:#db2 -v connect to DB_NAME #db2 -v select * from syscat.bufferpools #db2 -v alter bufferpoolIBMDEFAULTBP size -1 #db2 -v connect reset #db2 -v terminate #db2 -v update db cfgfor dbnameusing BUFFPAGE bigger_value #db2 -v terminate 49 、看数据库监视内容列表#db2 -v get monitor switches 50 、打开某个数据库监视内容#db2 -v update monitor switches using bufferpoolon 51 、获取数据库快照#db2 -v get snapshot for all databases > snap.out #db2 -v get snapshot for dbm>> snap.out #db2 -v get snapshot for all bufferpools>> snap.out #db2 -v terminate 52 、重置数据库快照#db2 -v reset monitor all 53 、计算缓冲池命中率95 %以上,计算公式如下:1  -((buffer pool data physical reads + buffer pool index  physical reads)index  logical reads))) *100 %54 、创建db2实例#db2icrt 55 、删除db2实例#db2idrop 56 、设置当前db2实例#set db2intance=db2 57 、显示db2拥有的实例#db2ilist 58 、恢复离线增量备份数据库的命令#DB2 RESTORE DATABASE YNDC INCREMENTAL AUTOMATIC FROM D:\backup\autobak\db2 TAKEN AT 20060314232015 59 、创建样本数据库#sqllib/bin/db2sampl 2 平台,使用:db2sampl e,e是可选参数,指定将创建数据库的驱动器60 、设置联合数据库为可用(默认联合数据库不可用)#db2 update dbm cfg using federated yes 61 、列出数据库中所有的表#db2 list tables 62 、数据迁移方法1 #db2 connect to testdb user test password test #db2 "export to aa1.ixf of ixf select * from table1" #db2 "export to aa2.ixf of ixf select * from table2" #db2 connect reset import 脚本示例#db2 connect to testdb user test password test #db2 "load from aa1.ixf of ixf replace into table1 COPY NO without prompting " #db2 "load from aa2.ixf of ixf replace into table2 COPY NO without prompting " #db2 connect reset select  1  from  syscat.columns  where  colname='ID_NO'  and  tabname='MKTSRV_GLOBAL_DOWN_RECORD'  and  tabschema='DB2INST1' ;select  user_code,count(*) from  cd_sys_person group  by  user_code having  count(*)>1 table  TABLE_NAME load  from  /dev/null  of  del terminate into  TABLE_NAME Create  index  索引名 on  表名(字段1 ,字段2 )on  table  talblename and  indexes all on  table  aiapp.mda_xxxxx and  index  all select  * from  syscat.indexes where  tabname='ZHYXZS_KB_SC_END' ;connect  reset create  view  V_zjt_tables as  select  tabschema,tabname from  zjt_tables;CREATE  TRIGGER  zjt_tables_delAFTER  DELETE  ON  zjt_tablesREFERENCING OLD  AS  OFOR  EACH  ROW  MODE DB2SQLInsert  into  zjt_tables1values (substr(o.tabschema,1 ,8 ),substr(o.tabname,1 ,10 ))CREATE  UNIQUE  INDEX  I_ztables_tabname ON  zjt_tables(tabname);select  SUBSTR(COLNAME,1 ,20 ) as  列名,TYPENAME as  类型,LENGTH as  长度 from  columns  where  tabname='ZJT_TABLES' ;table  user1.departmentselect  * from  user .tables for  table  user1.departmentselect  indname from  indexes where  indname='I_ZTABLES_TABNAME' ;select  viewname from  views where  viewname='V_ZJT_TABLES' ;SELECT  SUBSTR(PROCSCHEMA,1 ,15 ),SUBSTR(PROCNAME,1 ,15 ) FROM  SYSCAT.PROCEDURES ;cast )varchar select  cast(ip as  integer )+50  from  log_comm_failed1.  数据的导入(Import )2.  数据的导出(Export)3.  数据的装入(Load )10 、db2 connect  reset  或 db2 terminate 11 、db2set db2codepage=1208  12 、db2 describe table  13 、db2 list tables  tables  for  system  14 、db2 list tablespaces 15 、fetch first  10  rows  only  select  * from  fetch first  10  rows  only 16 、coalesce(字段名,转换后的值) select  coalesce(id,1 ) from  17 、dayofweek(日期) date (2008 -01 -16 )) date (2008 -01 -16 )) 18 、dayofyear(日期) 20080116 必须要进行转换1 ,4 ),'-' ),concat(substr(openDate,5 ,2 ),'-' )),substr(openDate,7 ,2 ))) as  week)19 、concatt(参数1 ,连接值) 'aa' ,'b' ) 1 、 以默认分隔符加载,默认为“,”号2 、 以指定分隔符“|”加载1 、 卸载一个表中全部数据2 、 带条件卸载一个表中数据connect  to  btpdbsconnect  reset  断开数据库连接all  断开所有数据库连接1 、 db2 backup db btpdbs2 、 db2move btpdbs exportsql 1 、 db2 restore db btpdbs without  rolling forward2 、 db2 -tvf crtdb.sql sql 文件内容:create  db btpdbs on  /db2catalogsql import 4 位数,不够4 位,前面补0 1 ) db2 bind br8200.bnd2 ) /btp/bin/bndall /btp/bndget  dbm cfgget  db cfg for  btpdbsupdate  db cfg for  btpdbs using  LOGBUFSZ 20 update  db cfg for  btpdbs using  LOGFILSIZ 5120 start set  schema  btp 修改当前模式为"btp"show  detail 查看当前数据库表空间分配状况tablespace  containers for  2  show  detail 查看tablespace  id=2 使用容器所在目录tables  for  all  列出当前数据库下所有的表tables  for  schema  btp 列出当前数据库中schema 为btp的表show  detail 显示数据库空间使用情况for  all get  snapshot  for  dynaimic sql  on  jiningon  /db2catalogget  instanceon  自动启动off  不自动启动delete 掉delete 的数据,优化数据结构。table  表名on  table  表名 with  distribution and  indexes all 
7. DB2查看端口号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 
查看DB2数据库占用的端口号,分为windows和linux系统查看方式,如下:
一、linux系统查看DB2占用端口号:  
1.db2start启动了数据库管理器,并且通讯方式配置为TCP/IP。  
2.首先切换到db2inst1用户 su - db2inst1  
3.查找TCP/IP Service name db2 get dbm cfg | grep -i service  
4.通过上一句命令的输出(如db2c_db2inst1)在/etc/services文件中找对应的端口号 grep db2c_db2inst1 /etc/services  
输出 db2c_db2inst1 50000/tcp  
其中50000就是db2数据库所占用的端口号  
二、windows系统查看DB2占用端口号方式如下:  
1、使用命令 db2 get dbm cfg  
找到”SVCENAME” 查找到TCP/IP 服务名  
2、到系统配置文件里找到service name 对应的 port number  
windows:查看 c:\windows\system32\drivers\etc\services  
aix: 查看 /etc/services  
如下:  
DB2_DB2 60000/tcp  
DB2_DB2_1 60001/tcp  
DB2_DB2_2 60002/tcp  
DB2_DB2_END 60003/tcp  
1 2 3 4 5 6 7 8 9 10 11 12 c:\windows\system32\drivers\etc\services
dbeaver连接异常:
1 2 [jcc] [t4] [2043] [11550] [4.26.14]  异常 java.net .ConnectException:打开端口 25 ,000  上服务器 localhost/127.0 .0.1  的套接字时出错,消息为:Connection refused: connect。 ERRORCODE=-4499 , SQLSTATE=08001 
8. SQL  in与exists相关性能问题总结 
参考: https://www.cnblogs.com/syforacle/p/5820624.html