db2 常见数据库字典

合集下载

主流数据库数据字典

主流数据库数据字典

主流数据库数据字典AUTHOR: CenLiangDATE: 2020/04/24REV: 2.0Oracle、MySQL、PostgreSQL、DB2、Hive 数据字典1、Oracle 数据字典## 1.1-oracle-表SELECT ername,a.table_name,a.tablespace_name,a.num_rows,a.status,a.loggingdba_tables a,(SELECT username, user_id, account_status, createddba_usersWHERE account_statususername , SYSTEM, SYSMAN, DBSNMP, CTXSYSORDER account_status WHERE a.owner ernamea.tablespace_namea.num_rowsORDER a.owner, a.tablespace_name, a.table_name;## 1.2-oracle-分区表SELECT ername,a.table_name,a.tablespace_name,a.num_rows,a.partition_name,a.partition_positiondba_tab_partitions a,(SELECT username, user_id, account_status, createddba_usersWHERE account_statususername , SYSTEM, SYSMAN, DBSNMP, CTXSYSORDER account_status WHERE a.table_owner ername ORDER ername, a.table_name,a.partition_position;## 1.3-oracle-字段SELECT ername,a.table_name,a.column_id,a.column_name,a.data_type,a.data_length,a.nullabledba_tab_columns a,(SELECT username, user_id, account_status, createddba_usersWHERE account_statususername , SYSTEM, SYSMAN, DBSNMP, CTXSYSORDER account_status WHERE a.owner ername ORDER ername, a.table_name, a.column_id;2、MySQL 数据字典## 2.1-mysql-表SELECTTABLE_SCHEMA AS '库名',TABLE_NAME AS '表名',TABLE_COMMENT AS '表说明',TABLE_ROWS AS '数据量',CREATE_TIME AS '创建⽇期'FROMinformation_schema.`TABLES`WHERETABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema','sys')ORDER BYTABLE_SCHEMA,TABLE_NAME;## 2.2-mysql-字段SELECTTABLE_SCHEMA AS '库名',TABLE_NAME AS '表名',a.TABLE_COMMENT AS '表说明',b.ORDINAL_POSITION AS '列ID',b.COLUMN_NAME AS '字段名',b.COLUMN_TYPE AS '数据类型',b.IS_NULLABLE AS '允许为空',b.COLUMN_KEY AS '主键',b.COLUMN_DEFAULT AS '默认值',b.EXTRA AS '其他',b.COLUMN_COMMENT AS '字段说明'FROMinformation_schema.`TABLES` aJOIN information_schema.`COLUMNS` b USING (TABLE_SCHEMA,TABLE_NAME)WHEREa.TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema','sys')GROUP BYTABLE_SCHEMA,TABLE_NAME,b.ORDINAL_POSITIONORDER BYTABLE_SCHEMA,TABLE_NAME,b.ORDINAL_POSITION;3、PostgreSQL 数据字典## 3.1-pg-表SELECTpt.tableowner AS "⽤户名",it.table_catalog AS "库名",it.table_schema AS "模式名",it."table_name" AS "表名",-- nsp.oid as nspoid,-- pc.oid as pcoid,-- pd.objoid,-- pd.objsubid,pd.description AS "表说明"FROMinformation_schema.tables itLEFT JOIN pg_catalog.pg_tables pt ON ( pt.schemaname = it.table_schema AND pt.tablename = it."table_name" )LEFT JOIN pg_catalog.pg_namespace nsp ON (pt.schemaname = nsp.nspname)JOIN pg_catalog.pg_class pc ON ( nsp.oid = pc.relnamespace AND pt.tablename = pc.relname )LEFT JOIN pg_catalog.pg_description pd ON ( pc.oid = pd.objoid AND pd.objsubid = 0 )WHEREit.table_schema NOT IN ( 'information_schema', 'pg_catalog', 'pg_toast' )ORDER BYit.table_schema,it."table_name";## 3.2-pg-字段SELECTpt.tableowner AS "⽤户名",ic.table_catalog AS "库名",-- nsp.oid AS nspoid,ic.table_schema AS "模式名",-- pc.oid AS pcoid,-- pa.attrelid AS paattrelid,-- pd.objoid,ic."table_name" AS "表名",pd_tab.description AS "表说明" ,-- pa.attnum,-- pd.objsubid,ic.ordinal_position AS "列ID",ic."column_name" AS "字段名",ic.udt_name AS "数据类型",ic.is_nullable AS "允许为空",ic.column_default AS "默认值",pd_col.description AS "字段说明"FROMinformation_schema."columns" ic-- LEFT JOIN information_schema.tables it ON ( ic.table_schema = it.table_schema AND ic."table_name" = it."table_name" )LEFT JOIN pg_catalog.pg_tables pt ON ( ic.table_schema = pt.schemaname AND ic."table_name" = pt.tablename )LEFT JOIN pg_catalog.pg_namespace nsp ON ( ic.table_schema = nsp.nspname )JOIN pg_catalog.pg_class pc ON ( nsp.oid = pc.relnamespace AND ic."table_name" = pc.relname )LEFT JOIN pg_catalog.pg_description pd_tab ON ( pc.oid = pd_tab.objoid AND pd_tab.objsubid = 0 )LEFT JOIN pg_catalog.pg_attribute pa ON ( pc.oid = pa.attrelid AND ic.ordinal_position = pa.attnum )LEFT JOIN pg_catalog.pg_description pd_col ON ( pa.attrelid = pd_col.objoid AND pa.attnum = pd_col.objsubid AND pd_col.objsubid > 0 ) WHEREic.table_schema NOT IN ( 'information_schema', 'pg_catalog', 'pg_toast' )ORDER BYic.table_schema,ic."table_name",ic.ordinal_position;4、DB2 数据字典## 4.1-db2-模式SELECT(SELECT DISTINCT(table_catalog)FROMsysibm.tables WITH ur) AS TABLE_CATALOG,SCHEMATA.SCHEMANAME AS schema_name,SCHEMATA.CREATE_TIMEFROMsyscat.SCHEMATAWHERESCHEMATA.SCHEMANAME NOT IN ('SYSIBM','SYSCAT','SYSFUN','SYSSTAT','SYSPROC','SYSIBMADM','SYSIBMINTERNAL','SQLJ','SYSTOOLS','NULLID','SYSIBMTS','SYSPUBLIC');## 4.2-db2-表SELECTit.TABLE_CATALOG,ct.TABSCHEMA AS schema_name,ct.TABNAME AS table_name,ct.REMARKS AS table_comment,ct.CREATE_TIME,STUSED,ct.COLCOUNT AS column_num,ct.CARD AS table_cardFROMsyscat.TABLES ctJOINSYSIBM.TABLES itONct.TABSCHEMA=it.TABLE_SCHEMAAND ct.TABNAME=it.TABLE_NAMEWHEREct.TABSCHEMA NOT IN ('SYSIBM','SYSCAT','SYSFUN','SYSSTAT','SYSPROC','SYSIBMADM','SQLJ','SYSTOOLS','NULLID','SYSIBMINTERNAL','SYSIBMTS','SYSPUBLIC')ORDER BYct.TABSCHEMA,ct.TABNAME;## 4.3-db2-字段SELECTic.TABLE_CATALOG,cc.TABSCHEMA AS schema_name,cc.TABNAME AS table_name,ct.REMARKS AS table_comment,ic.ORDINAL_POSITION,cc.COLNAME AS column_name,cc.TYPENAME AS data_type,cc.LENGTH,ic.IS_NULLABLE,cc.DEFAULT,cc.REMARKS AS column_comment,cc.HIGH2KEY,cc.LOW2KEY,cc.COLCARD AS column_cardFROMsyscat.TABLES ct,syscat.COLUMNS cc,SYSIBM.COLUMNS icWHEREct.TABSCHEMA=cc.TABSCHEMAAND ct.TABNAME=cc.TABNAMEAND cc.TABSCHEMA=ic.TABLE_SCHEMAAND cc.TABNAME=ic.TABLE_NAMEAND cc.COLNAME =ic.COLUMN_NAMEAND cc.TABSCHEMA NOT IN ('SYSIBM','SYSCAT','SYSFUN','SYSSTAT','SYSPROC','SYSIBMADM','SQLJ','SYSTOOLS','NULLID','SYSIBMINTERNAL','SYSIBMTS','SYSPUBLIC')ORDER BYcc.TABSCHEMA,cc.TABNAME,ic.ORDINAL_POSITION;5、Hive 数据字典## 5.1-hive-表SELECTd.OWNER_NAME AS '⽤户名',-- DB_ID,d.`NAME` AS '库名',-- t.TBL_ID,-- t.SD_ID,t.TBL_NAME AS '表名',t1.`comment` AS '表说明',t1.numRows AS '数据量',FROM_UNIXTIME(t.CREATE_TIME) AS '创建时间'FROMhive.DBS d JOIN hive.TBLS t USING(DB_ID)JOIN (SELECTTBL_ID,MAX(CASE tp.PARAM_KEY WHEN 'comment' THEN tp.PARAM_VALUE ELSE NULL END) AS `comment`, MAX(CASE tp.PARAM_KEY WHEN 'numRows' THEN tp.PARAM_VALUE ELSE NULL END) AS `numRows` FROM hive.TABLE_PARAMS tpGROUP BY TBL_ID ) t1 USING(TBL_ID)ORDER BY d.`NAME`,t.TBL_NAME;## 5.2-hive-字段SELECTd.OWNER_NAME AS '⽤户名',-- DB_ID,d.`NAME` AS '库名',-- t.TBL_ID,-- t.SD_ID,t.TBL_NAME AS '表名',t1.`comment` AS '表说明',c1.INTEGER_IDX AS '列ID',c1.COLUMN_NAME AS '字段名',c1.TYPE_NAME AS '数据类型',c1.`COMMENT` AS '字段说明'FROMhive.DBS d JOIN hive.TBLS t USING(DB_ID)JOIN (SELECTTBL_ID,MAX(CASE tp.PARAM_KEY WHEN 'comment' THEN tp.PARAM_VALUE ELSE NULL END) AS `comment` FROM hive.TABLE_PARAMS tpGROUP BY TBL_ID ) t1 USING(TBL_ID)JOIN (SELECTs.SD_ID,CD_ID,c.INTEGER_IDX,c.COLUMN_NAME,c.TYPE_NAME,c.`COMMENT`FROMhive.SDS sJOIN hive.COLUMNS_V2 c USING (CD_ID)) c1 USING(SD_ID) ORDER BY d.`NAME`,t.TBL_NAME,c1.INTEGER_IDX;。

DB2数据库

DB2数据库

11
DB2数据库
表空间可以是一个系统管理的空间(SMS),也可以是一个数据库管理 的空间(DMS)。
SMS表空间: 每一个容器都是操作系统的文件空间的一个目录。操作 系统的文件管理器控制着存储空间,当需要额外空间的时候,会进行空间分 配。
DMS表空间:每一个容器都是固定大小、预先分配的文件,或者是磁 盘这样的物理设备。数据库管理器控制着存储空间。

视图:
视图可以用来查看从一个或者多个表中选择的数据。视图也成为虚拟 表(virtual table)。通过视图,可以看到一个或者多个表中的部分或者全 部列或行,这就意味着可以使用视图来限制或者限定用户对数据的访问。 根据视图定义方式的不同,它可以更新视图下属的表。与视图相关联的不 是固定的存储内容,视图只是进行了命名的结果表的规范,这个规范就是 一个SELECT语句。无论何时要引用在SQL语句中规定的视图的时候,都 要运行SELECT语句。
12
DB2数据库
DMS有3中表空间类型:正规(regular)、长(long)以及临时 (temporary) 正规(regular):包含用户数据的表存在与正规表空间中。USERPACE1 是默认的用户表空间,SYSCATSPACE是默认的系统编目表空间,它们是正规 表空间。索引进行分离存储的时候,也会存储在正规表空间中。只有DMS表空 间才能够让管理员有能力将索引数据与正规数据分离存储。 长(long):长表空间用来存储包含长字段数据或者LOB数据的表。多媒 体对象通常要作为LOB进行存储,并且要存放到长表空间中。长表空间只能够 是DMS表空间。 临时(temporary):存在两种类型的临时表空间——系统和用户。
尽管数据在物理上可以分布在多台机器上或者一台机器的多个处理器上, 但是从数据处理的逻辑上以及用户或者应用的角度来看,数据库是一个整体。 只有少量的数据定义SQL语句才必须考虑数据分区,例如CREATE NODEGROUP。 联合数据库(federated database)是指数据存储在包括其他分离的关 系数据库在内的多个数据源中的关系数据库。类似于分区数据库,联合数据 库的数据看起来好像就是一个单独的大数据库中。在这种类型的数据库中的 数据可以通过正常的SQL查询进行访问。

DB2SQLCODE大全

DB2SQLCODE大全

DB2SQLCODE大全DB2错误信息sqlcode sqlstate 说明000 00000 SQL语句成功完成01xxx SQL语句成功完成,但是有警告+012 01545 未限定的列名被解释为一个有相互关系的引用+098 01568 动态SQL语句用分号结束+100 02000 没有找到满足SQL语句的行+110 01561 用DA TA CAPTURE定义的表的更新操作不能发送到原来的子系统+111 01590 为2型索引设置了SUBPAGES语句+117 01525 要插入的值的个数不等于被插入表的列数+162 01514 指定的表空间被置为检查挂起状态+203 01552 使用非唯一的名字来解决命名的限定列+204 01532 命名的对象未在DB2中定义+206 01533 命名的列不在SQL语句中指定的任何表中存在+218 01537 因为SQL语句引用一个远程对象,不能为该SQL语句执行EXPLAIN+219 01532 命名的PLAN TABLE不存在+220 01546 不正确定义PLAN TABLE,检查命名列的定义+236 01005 SQLDA中的SQLN的值至少应于所描述的列的个数一样大+237 01594 至少有一个被描述的列应该是单值类型,因此扩展的SQLV AR条目需要另外的空间+238 01005 至少应有一个被描述的列是一个LOB,因此扩展的SQLVAR条目需要另外的空间+239 01005 至少应有一个被描述的列应是单值类型,因此扩展的SQLV AR条目需要另外的空间+304 01515 该值不能被分配给宿主变量,因为该值不再数据类型的范围之内+331 01520 不能被翻译的字符串,因此被设置为NULL+339 01569 由于与DB2 2.2版本的子系统连接,所以可能存在字符转换问题+394 01629 使用优化提示来选择访问路径+395 01628 设置了无效的优化提示,原因代码指定了为什么,忽略优化提示+402 01521 未知的位置+403 01522 本地不存在CREAT ALIAS对象+434 01608 在DB2未来发布的版本中将不支持指定的特性,IBM建议你停止使用这些特性+445 01004 值被CAST函数截取+462 01Hxx 由用户定义的函数或存储过程发出的警告+464 01609 命名的存储过程超出了它可能返回的查询结果集的个数限制+466 01610 指定由命名的存储过程返回的查询结果集的个数。

DB2数据库基础入门

DB2数据库基础入门

IBM DB2数据库基础基本命令集合1. 建立数据库DB2_GCBCREATE DATABASE DB2_GCB ON G: ALIAS DB2_GCBUSING CODESET GBK TERRITORY CN COLLATE USING SYSTEM DFT_EXTENT_SZ 322. 连接数据库connect to sample1 user db2admin using 83012063. 建立别名create alias db2admin.tables for sysstat.tables;CREATE ALIAS DB2ADMIN.VIEWS FOR SYSCAT.VIEWScreate alias db2admin.columns for syscat.columns;create alias guest.columns for syscat.columns;4. 建立表create table zjt_tables as(select * from tables) definition only;create table zjt_views as(select * from views) definition only;5. 插入记录insert into zjt_tables select * from tables;insert into zjt_views select * from views;6. 建立视图create view V_zjt_tables as select tabschema,tabname fromzjt_tables;7. 建立触发器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))8. 建立唯一性索引CREATE UNIQUE INDEX I_ztables_tabnameON zjt_tables(tabname);9. 查看表select tabname from tableswhere tabname='ZJT_TABLES';10. 查看列select SUBSTR(COLNAME,1,20) as 列名,TYPENAME as 类型,LENGTH as 长度from columnswhere tabname='ZJT_TABLES';11. 查看表结构db2 describe table user1.departmentdb2 describe select * from user.tables12. 查看表的索引db2 describe indexes for table user1.department13. 查看视图select viewname from viewswhere viewname='V_ZJT_TABLES';14. 查看索引select indname from indexeswhere indname='I_ZTABLES_TABNAME';15. 查看存贮过程SELECT SUBSTR(PROCSCHEMA,1,15),SUBSTR(PROCNAME,1,15) FROM SYSCAT.PROCEDURES;16. 类型转换(cast)ip datatype:varcharselect cast(ip as integer)+50 from log_comm_failed17. 重新连接connect reset18. 中断数据库连接disconnect db2_gcb19. view applicationLIST APPLICATION;20. kill applicationFORCE APPLICATION(0);db2 force applications all (强迫所有应用程序从数据库断开) 21. lock tablelock table test in exclusive mode22. 共享[锁]lock table test in share mode23. 显示当前用户所有表list tables24. 列出所有的系统表list tables for system25. 显示当前活动数据库list active databases26. 查看命令选项list command options27. 系统数据库目录LIST DATABASE DIRECTORY28. 表空间list tablespaces29. 表空间容器LIST TABLESPACE CONTAINERS FOR Example: LIST TABLESPACE CONTAINERS FOR 130. 显示用户数据库的存取权限GET AUTHORIZATIONS31. 启动实例DB2START32. 停止实例db2stop33. 表或视图特权grant select,delete,insert,update on tables to user grant all on tables to user WITH GRANT OPTION34. 程序包特权GRANT EXECUTEON PACKAGE PACKAGE-nameTO PUBLIC35. 模式特权GRANT CREATEIN ON SCHEMA SCHEMA-name TO USER36. 数据库特权grant connect,createtab,dbadm on database to user37. 索引特权grant control on index index-name to user38. 信息帮助 (? XXXnnnnn )例:? SQL3008139. SQL 帮助(说明 SQL 语句的语法)help statement例如,help SELECT40. SQLSTATE 帮助(说明 SQL 的状态和类别代码)? sqlstate 或 ? class-code41. 更改与"管理服务器"相关的口令db2admin setid username password42. 创建 SAMPLE 数据库db2sampldb2sampl F:(指定安装盘)43. 使用操作系统命令! dir44. 转换数据类型 (cast)SELECT EMPNO, CAST(RESUME AS VARCHAR(370))FROM EMP_RESUMEWHERE RESUME_FORMAT = 'ascii'45. UDF要运行 DB2 Java 存储过程或 UDF,还需要更新服务器上的DB2 数据库管理程序配置,以包括在该机器上安装 JDK 的路径db2 update dbm cfg using JDK11_PATH d:/sqllib/java/jdk TERMINATEupdate dbm cfg using SPM_NAME sample46. 检查 DB2 数据库管理程序配置db2 get dbm cfg47. 检索具有特权的所有授权名SELECT DISTINCT GRANTEE, GRANTEETYPE, 'DATABASE' FROM SYSCAT.DBAUTH UNIONSELECT DISTINCT GRANTEE, GRANTEETYPE, 'TABLE ' FROM SYSCAT.TABAUTH UNIONSELECT DISTINCT GRANTEE, GRANTEETYPE, 'PACKAGE ' FROMSYSCAT.PACKAGEAUTHUNIONSELECT DISTINCT GRANTEE, GRANTEETYPE, 'INDEX ' FROM SYSCAT.INDEXAUTH UNIONSELECT DISTINCT GRANTEE, GRANTEETYPE, 'COLUMN ' FROM SYSCAT.COLAUTH UNIONSELECT DISTINCT GRANTEE, GRANTEETYPE, 'SCHEMA ' FROMSYSCAT.SCHEMAAUTHUNIONSELECT DISTINCT GRANTEE, GRANTEETYPE, 'SERVER ' FROMSYSCAT.PASSTHRUAUTHORDER BY GRANTEE, GRANTEETYPE, 3create table yhdab(id varchar(10),password varchar(10),ywlx varchar(10),kh varchar(10));create table ywlbb(ywlbbh varchar(8),ywmc varchar(60))48. 修改表结构alter table yhdab ALTER kh SET DATA TYPE varchar(13);alter table yhdab ALTER ID SET DATA TYPE varchar(13); alter table lst_bsi alter bsi_money set data type int; insert into yhdab values('20000300001','123456','user01','20000300001'),('20000300002','123456','user02','20000300002');49. 业务类型说明insert into ywlbb values('user01','业务申请'),('user02','业务撤消'),('user03','费用查询'),('user04','费用自缴'),('user05','费用预存'),('user06','密码修改'),('user07','发票打印'),('gl01','改用户基本信息'),('gl02','更改支付信息'),('gl03','日统计功能'),('gl04','冲帐功能'),('gl05','对帐功能'),('gl06','计费功能'),('gl07','综合统计')二. 目录视图说明说明目录视图检查约束 SYSCAT.CHECKS列 SYSCAT.COLUMNS检查约束引用的列 SYSCAT.COLCHECKS关键字中使用的列 SYSCAT.KEYCOLUSE数据类型 SYSCAT.DATATYPES函数参数或函数结果 SYSCAT.FUNCPARMS参考约束 SYSCAT.REFERENCES模式 SYSCAT.SCHEMATA表约束 SYSCAT.TABCONST表 SYSCAT.TABLES触发器 SYSCAT.TRIGGERS用户定义函数 SYSCAT.FUNCTIONS视图 SYSCAT.VIEWS三. 字符串类型二进制大对象 (BLOB) 字符串。

db2 syscolumns表结构

db2 syscolumns表结构

DB2(Database 2)是IBM公司开发的一种关系数据库管理系统。

在DB2中,syscolumns是一个非常重要的系统表,它存储了数据库中表的结构信息。

本文将详细介绍DB2中syscolumns表的结构,并给出一些常见的用法和注意事项。

一、syscolumns表的结构1. 列名(colname):该列存储了表中所有列的名称。

2. 列序号(colno):该列存储了表中所有列的序号,从1开始递增。

3. 列所属的表名(tabname):该列存储了每个列所属的表的名称。

4. 列所属的模式名(tabschema):该列存储了每个列所属的表的模式名称。

5. 列类型(typename):该列存储了每个列的数据类型,如varchar、int等。

6. 列长度(length):该列存储了每个列的长度。

7. 列精度(scale):该列存储了每个列的精度。

8. 默认值(default):该列存储了每个列的默认值。

9. 是否可为null(nulls):该列存储了每个列是否允许为空值,是一个布尔值。

二、syscolumns表的用法在实际的数据库管理中,syscolumns表有很多用途。

以下是一些常见的用法:1. 查询表的列信息:通过在syscolumns表中查询特定表的列信息,可以方便地了解表的结构,包括列名、数据类型、长度等。

2. 检查列的默认值和是否允许为空:通过syscolumns表,可以查看每个列的默认值和是否允许为空,从而更好地理解表的设计意图。

3. 维护数据库的元数据:DBA可以通过syscolumns表来维护数据库的元数据,如跟踪表结构的变化、识别潜在的性能问题等。

三、syscolumns表的注意事项在使用syscolumns表时,需要注意一些事项:1. 需要有足够的权限:要查询syscolumns表,用户需要有足够的权限,通常是DBA或者有相应权限的用户。

2. 不要直接修改syscolumns表:syscolumns表是系统表,不建议直接对其进行修改,以免造成数据库结构的混乱。

数据库数据字典

数据库数据字典

数据库数据字典数据库数据字典是一个用于描述数据库中各个表、字段、约束等信息的文档。

它提供了对数据库结构的详细描述,匡助开辟人员、数据库管理员以及其他相关人员更好地理解和使用数据库。

下面是一个标准格式的数据库数据字典示例:1. 表名:Customers描述:存储客户信息的表字段:- customer_id:客户ID,数据类型为整数,主键- first_name:客户名字,数据类型为字符串,长度为50- last_name:客户姓氏,数据类型为字符串,长度为50- email:客户电子邮件地址,数据类型为字符串,长度为100- phone:客户电话号码,数据类型为字符串,长度为20- address:客户地址,数据类型为字符串,长度为200约束:- PK_Customers:主键约束,包含customer_id字段2. 表名:Orders描述:存储定单信息的表字段:- order_id:定单ID,数据类型为整数,主键- customer_id:客户ID,数据类型为整数,外键,关联到Customers表的customer_id字段- order_date:定单日期,数据类型为日期时间- total_amount:定单总金额,数据类型为浮点数约束:- PK_Orders:主键约束,包含order_id字段- FK_Orders_Customers:外键约束,关联到Customers表的customer_id字段3. 表名:Products描述:存储产品信息的表字段:- product_id:产品ID,数据类型为整数,主键- product_name:产品名称,数据类型为字符串,长度为100- price:产品价格,数据类型为浮点数约束:- PK_Products:主键约束,包含product_id字段4. 表名:Order_Details描述:存储定单明细信息的表字段:- order_detail_id:定单明细ID,数据类型为整数,主键- order_id:定单ID,数据类型为整数,外键,关联到Orders表的order_id字段- product_id:产品ID,数据类型为整数,外键,关联到Products表的product_id字段- quantity:产品数量,数据类型为整数- unit_price:产品单价,数据类型为浮点数约束:- PK_Order_Details:主键约束,包含order_detail_id字段- FK_Order_Details_Orders:外键约束,关联到Orders表的order_id字段- FK_Order_Details_Products:外键约束,关联到Products表的product_id字段通过以上的数据库数据字典,我们可以清晰地了解到数据库中的各个表的结构、字段的含义以及表之间的关系。

学习DB2数据库必须掌握的五十四条常用语句

学习DB2数据库必须掌握的五十四条常用语句

1、查找员工的编号、姓名、部门和出生日期,如果出生日期为空值,显示日期不详,并按部门排序输出,日期格式为yyyy-mm-ddselect emp_no,emp_name,dept,isnull(convert(char(10),birthday,120),'日期不详') birthday from employeeorder by dept2、查找与喻自强在同一个单位的员工姓名、性别、部门和职称select emp_no,emp_name,dept,titlefrom employeewhere emp_name<>'喻自强' and dept in(select dept from employeewhere emp_name='喻自强')3、按部门进行汇总,统计每个部门的总工资select dept,sum(salary)from employeegroup by dept4、查找商品名称为14寸显示器商品的销售情况,显示该商品的编号、销售数量、单价和金额select a.prod_id,qty,unit_price,unit_price*qty totpricefrom sale_item a,product bwhere a.prod_id=b.prod_id and prod_name='14寸显示器'5、在销售明细表中按产品编号进行汇总,统计每种产品的销售数量和金额select prod_id,sum(qty) totqty,sum(qty*unit_price) totpricefrom sale_itemgroup by prod_id6、使用convert函数按客户编号统计每个客户1996年的订单总金额select cust_id,sum(tot_amt) totpricefrom saleswhere convert(char(4),order_date,120)='1996'group by cust_id7、查找有销售记录的客户编号、名称和订单总额select a.cust_id,cust_name,sum(tot_amt) totpricefrom customer a,sales bwhere a.cust_id=b.cust_idgroup by a.cust_id,cust_name8、查找在1997年中有销售记录的客户编号、名称和订单总额select a.cust_id,cust_name,sum(tot_amt) totpricefrom customer a,sales bwhere a.cust_id=b.cust_id and convert(char(4),order_date,120)='1997'group by a.cust_id,cust_name9、查找一次销售最大的销售记录select order_no,cust_id,sale_id,tot_amtfrom saleswhere tot_amt=(select max(tot_amt)from sales)10、查找至少有3次销售的业务员名单和销售日期select emp_name,order_datefrom employee a,sales bwhere emp_no=sale_id and a.emp_no in(select sale_idfrom salesgroup by sale_idhaving count(*)>=3)order by emp_name11、用存在量词查找没有订货记录的客户名称select cust_namefrom customer awhere not exists(select *from sales bwhere a.cust_id=b.cust_id)12、使用左外连接查找每个客户的客户编号、名称、订货日期、订单金额订货日期不要显示时间,日期格式为yyyy-mm-dd按客户编号排序,同一客户再按订单降序排序输出select a.cust_id,cust_name,convert(char(10),order_date,120),tot_amtfrom customer a left outer join sales b on a.cust_id=b.cust_idorder by a.cust_id,tot_amt desc13、查找16M DRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用男、女表示select emp_name 姓名, 性别= case a.sex when 'm' then '男'when 'f' then '女'else '未'end,销售日期= isnull(convert(char(10),c.order_date,120),'日期不详'),qty 数量, qty*unit_price as 金额from employee a, sales b, sale_item c,product dwhere d.prod_name='16M DRAM' and d.prod_id=c.prod_id anda.emp_no=b.sale_id and b.order_no=c.order_no14、查找每个人的销售记录,要求显示销售员的编号、姓名、性别、产品名称、数量、单价、金额和销售日期select emp_no 编号,emp_name 姓名, 性别= case a.sex when 'm' then '男'when 'f' then '女'else '未'end,prod_name 产品名称,销售日期= isnull(convert(char(10),c.order_date,120),'日期不详'), qty 数量, qty*unit_price as 金额from employee a left outer join sales b on a.emp_no=b.sale_id , sale_item c,product d where d.prod_id=c.prod_id and b.order_no=c.order_no15、查找销售金额最大的客户名称和总货款select cust_name,d.cust_sumfrom customer a,(select cust_id,cust_sumfrom (select cust_id, sum(tot_amt) as cust_sumfrom salesgroup by cust_id ) bwhere b.cust_sum =( select max(cust_sum)from (select cust_id, sum(tot_amt) as cust_sumfrom salesgroup by cust_id ) c )) dwhere a.cust_id=d.cust_id16、查找销售总额少于1000元的销售员编号、姓名和销售额select emp_no,emp_name,d.sale_sumfrom employee a,(select sale_id,sale_sumfrom (select sale_id, sum(tot_amt) as sale_sumfrom salesgroup by sale_id ) bwhere b.sale_sum <1000) dwhere a.emp_no=d.sale_id17、查找至少销售了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额select a.cust_id,cust_name,b.prod_id,prod_name,d.qty,d.qty*d.unit_pricefrom customer a, product b, sales c, sale_item dwhere a.cust_id=c.cust_id and d.prod_id=b.prod_id andc.order_no=d.order_no and a.cust_id in (select cust_idfrom (select cust_id,count(distinct prod_id) prodidfrom (select cust_id,prod_idfrom sales e,sale_item fwhere e.order_no=f.order_no) ggroup by cust_idhaving count(distinct prod_id)>=3) h )18、查找至少与世界技术开发公司销售相同的客户编号、名称和商品编号、商品名称、数量和金额select a.cust_id,cust_name,d.prod_id,prod_name,qty,qty*unit_pricefrom customer a, product b, sales c, sale_item dwhere a.cust_id=c.cust_id and d.prod_id=b.prod_id andc.order_no=d.order_no and not exists(select f.*from customer x ,sales e, sale_item fwhere cust_name='世界技术开发公司' and x.cust_id=e.cust_id ande.order_no=f.order_no and not exists( select g.*from sale_item g, sales hwhere g.prod_id = f.prod_id and g.order_no=h.order_no andh.cust_id=a.cust_id))19、查找表中所有姓刘的职工的工号,部门,薪水select emp_no,emp_name,dept,salaryfrom employeewhere emp_name like '刘%'20、查找所有定单金额高于2000的所有客户编号select cust_idfrom saleswhere tot_amt>200021、统计表中员工的薪水在4000-6000之间的人数select count(*)as 人数from employeewhere salary between 4000 and 600022、查询表中的同一部门的职工的平均工资,但只查询"住址"是"上海市"的员工select avg(salary) avg_sal,deptfrom employeewhere addr like '上海市%'group by dept23、将表中住址为"上海市"的员工住址改为"北京市"update employeeset addr like '北京市'where addr like '上海市'24、查找业务部或会计部的女员工的基本信息select emp_no,emp_name,deptfrom employeewhere sex='F'and dept in ('业务','会计')25、显示每种产品的销售金额总和,并依销售金额由大到小输出select prod_id ,sum(qty*unit_price)from sale_itemgroup by prod_idorder by sum(qty*unit_price) desc26、选取编号界于'C0001'和'C0004'的客户编号、客户名称、客户地址select CUST_ID,cust_name,addrfrom customerwhere cust_id between 'C0001' AND 'C0004'27、计算出一共销售了几种产品select count(distinct prod_id) as '共销售产品数'from sale_item28、将业务部员工的薪水上调3%update employeeset salary=salary*1.03where dept='业务'29、由employee表中查找出薪水最低的员工信息select *from employeewhere salary=(select min(salary )from employee )30、使用join查询客户姓名为"客户丙"所购货物的"客户名称","定单金额","定货日期","电话号码"select a.cust_id,b.tot_amt,b.order_date,a.tel_nofrom customer a join sales bon a.cust_id=b.cust_id and cust_name like '客户丙'31、由sales表中查找出订单金额大于"E0013业务员在1996/10/15这天所接每一张订单的金额"的所有订单select *from saleswhere tot_amt>all(select tot_amtfrom saleswhere sale_id='E0013'and order_date='1996/10/15')order by tot_amt32、计算'P0001'产品的平均销售单价select avg(unit_price)from sale_itemwhere prod_id='P0001'33、找出公司女员工所接的定单select sale_id,tot_amtfrom saleswhere sale_id in(select sale_id from employeewhere sex='F')34、找出同一天进入公司服务的员工select a.emp_no,a.emp_name,a.date_hiredfrom employee ajoin employee bon (a.emp_no!=b.emp_no and a.date_hired=b.date_hired)order by a.date_hired35、找出目前业绩超过232000元的员工编号和姓名select emp_no,emp_namefrom employeewhere emp_no in(select sale_idfrom salesgroup by sale_idhaving sum(tot_amt)<232000)36、查询出employee表中所有女职工的平均工资和住址在"上海市"的所有女职工的平均工资select avg(salary)from employeewhere sex like 'f'unionselect avg(salary)from employeewhere sex like 'f' and addr like '上海市%'37、在employee表中查询薪水超过员工平均薪水的员工信息Select *from employeewhere salary>( select avg(salary)from employee)38、找出目前销售业绩超过10000元的业务员编号及销售业绩,并按销售业绩从大到小排序Select sale_id ,sum(tot_amt)from salesgroup by sale_idhaving sum(tot_amt)>10000order by sum(tot_amt) desc39、找出公司男业务员所接且订单金额超过2000元的订单号及订单金额Select order_no,tot_amtFrom sales ,employeeWhere sale_id=emp_no and sex='M' and tot_amt>200040、查询sales表中订单金额最高的订单号及订单金额Select order_no,tot_amt from saleswhere tot_amt=(select max(tot_amt) from sales)41、查询在每张订单中订购金额超过4000元的客户名及其地址Select cust_name,addr from customer a,sales bwhere a.cust_id=b.cust_id and tot_amt>400042、求出每位客户的总订购金额,显示出客户号及总订购金额,并按总订购金额降序排列Select cust_id,sum(tot_amt) from salesGroup by cust_idOrder by sum(tot_amt) desc43、求每位客户订购的每种产品的总数量及平均单价,并按客户号,产品号从小到大排列Select cust_id,prod_id,sum(qty),sum(qty*unit_price)/sum(qty)From sales a, sale_item bWhere a.order_no=b.order_noGroup by cust_id,prod_idOrder by cust_id,prod_id44、查询订购了三种以上产品的订单号Select order_nofrom sale_itemGroup by order_noHaving count(*)>345、查询订购的产品至少包含了订单3号中所订购产品的订单Select distinct order_noFrom sale_item aWhere order_no<>'3'and not exists (Select * from sale_item b where order_no ='3' and not exists(select * from sale_item c where c.order_no=a.order_no and c.prod_id=b.prod_id))46、在sales表中查找出订单金额大于"E0013业务员在1996/11/10这天所接每一张订单的金额"的所有订单,并显示承接这些订单的业务员和该订单的金额Select sale_id,tot_amt from saleswhere tot_amt>all(select tot_amtfrom saleswhere sale_id='E0013' and order_date='1996-11-10')47、查询末承接业务的员工的信息Select *From employee aWhere not exists(select * from sales b where a.emp_no=b.sale_id)48、查询来自上海市的客户的姓名,电话、订单号及订单金额Select cust_name,tel_no,order_no,tot_amtFrom customer a ,sales bWhere a.cust_id=b.cust_id and addr='上海市'49、查询每位业务员各个月的业绩,并按业务员编号、月份降序排序Select sale_id,month(order_date), sum(tot_amt)from salesgroup by sale_id,month(order_date)order by sale_id,month(order_date) desc50、求每种产品的总销售数量及总销售金额,要求显示出产品编号、产品名称,总数量及总金额,并按产品号从小到大排列Select a.prod_id,prod_name,sum(qty),sum(qty*unit_price)From sale_item a,product bWhere a.prod_id=b.prod_idGroup by a.prod_id,prod_nameOrder by a.prod_id51、查询总订购金额超过'C0002'客户的总订购金额的客户号,客户名及其住址Select cust_id, cust_name,addrFrom customerWhere cust_id in (select cust_id from salesGroup by cust_idHaving sum(tot_amt)>(Select sum(tot_amt) from sales where cust_id='C0002'))52、查询业绩最好的的业务员号、业务员名及其总销售金额select emp_no,emp_name,sum(tot_amt)from employee a,sales bwhere a.emp_no=b.sale_idgroup by emp_no,emp_namehaving sum(tot_amt)=(select max(totamt)from (select sale_id,sum(tot_amt) totamtfrom salesgroup by sale_id) c)53、查询每位客户所订购的每种产品的详细清单,要求显示出客户号,客户名,产品号,产品名,数量及单价select a.cust_id, cust_name,c.prod_id,prod_name,qty, unit_pricefrom customer a,sales b, sale_item c ,product dwhere a.cust_id=b.cust_id and b.order_no=c.order_no and c.prod_id=d.prod_id54、求各部门的平均薪水,要求按平均薪水从小到大排序select dept,avg(salary)from employeegroup by deptorder by avg(salary)。

db2参数大全

db2参数大全

参数名称说明DB2CODEPAGE 为数据库客户机应用程序指定呈示给DB2 的数据的代码页DB2COUNTRY 指定客户机应用程序的国家或地区、地域或区域代码DB2_PINNED_BP 用于指定在某些AIX 操作系统上与主存中的数据库关联的数据库全局内存(包括缓冲池)DB2_PARALLEL_IO 用来更改DB2 计算表空间的I/O 并行性的方式DB2ATLD_PORTS 用于指定LOAD操作所使用的通信端口范围DB2_HASH_JOIN 将散列连接指定为当编译存取方案时可能的连接方法DB2MEMDISCLAIM 控制DB2 代理进程是否显式请求AIX 从释放的内存中解除关联保留的调页空间DB2MEMMAXFREE 指定未使用的专用内存的最大字节数,在将未使用的内存返回到操作系统之前该字节数由DB2 进程保留DB2_FORCE_FCM_BP 指定DB2 从数据库全局内存中或从单独的共享内存段(如果没有足够的全局内存可用)分配FCM 缓冲区DB2DBDFT 指定用于隐式连接的数据库的数据库别名DB2COMM 指定当启动数据库管理器时所启动的通信管理器DBM CFG参数名称说明DFT_MON_BUFPOOL 快照监视器的缓冲池开关的缺省值DFT_MON_LOCK 快照监视器的锁定开关的缺省值DFT_MON_SORT 快照监视器的排序开关的缺省值DFT_MON_STMT 快照监视器的语句开关的缺省值DFT_MON_TABLE 快照监视器的表开关的缺省值DFT_MON_TIMESTAMP 快照监视器的时间戳记开关的缺省值DFT_MON_UOW 快照监视器的工作单元(UOW)开关的缺省值HEALTH_MON 指定是否想要根据各种健康指示器来监视实例、它的相关数据库和数据库对象SYSCTRL_GROUP 定义具有系统控制(SYSCTRL)权限的组名SYSMAINT_GROUP 定义具有系统维护(SYSMAINT)权限的组名SYSMON_GROUP 定义具有系统监视(SYSMON)权限的组名NUM_POOLAGENTS 确定空闲代理进程池的最大大小DFTDBPATH 指定在数据库管理器下创建数据库的缺省文件路径MON_HEAP_SZ 确定分配给数据库系统监视器数据的内存量JAVA_HEAP_SZ 确定由已启动以便为Java DB2 存储过程和UDF 提供服务的Java 解释器使用的堆的最大大小SHEAPTHRES 定义排序堆的阈值QUERY_HEAP_SZ 指定可为查询堆分配的最大内存容量MAXAGENTS 指定可在任何给定时间接受应用程序请求的数据库管理器代理进程(无论是协调代理进程还是子代理进程)的最大数目NUM_POOLAGENTS 确定空闲代理进程池的最大大小NUM_INITAGENTS 确定在DB2START 时在代理进程池中创建的初始空闲代理进程数SVCENAME 数据库服务器将用于等待来自远程客户机节点的通信的TCP/IP 端口的名称MAX_QUERYDEGREE 指定用于在数据库管理器的此实例上执行的任何SQL 语句的最大分区内并行度INTRA_PARALLEL 指定数据库管理器是否可以使用分区内并行性FCM_NUM_BUFFERS 指定数据库服务器之间及内部用于内部通信(消息)的4 KB 缓冲区数DB CFG参数名称说明DFT_QUERYOPT 指定查询优化级别用于指导优化器使用不同程度的优化DFT_DEGREE 指定CURRENT DEGREE 专用寄存器和DEGREE 绑定选项的缺省值DBHEAP 制定数据库堆的大小CATALOGCACHE_SZ 指定用于高速缓存系统目录信息的内存大小LOGBUFSZ 指定用作日志记录的缓冲区的数据库堆阵的容量UTIL_HEAP_SZ 指定实用程序堆的大小LOCKLIST 指示分配给锁定列表的内存量APPGROUP_MEM_SZ 确定应用程序组共享内存段的大小GROUPHEAP_RATIO 指定用于应用程序组共享堆的应用程序控制共享内存集中的内存百分比APP_CTL_HEAP_SZ 指定分配给应用程序的共享内存区域的平均大小SHEAPTHRES_SHR 指定对可一次用于排序的数据库共享内存总量的硬限制SORTHEAP 定义要用于专用排序的专用内存页的最大数目或要用于共享排序的共享内存页的最大数目STMTHEAP 语句堆在SQL 语句的编译期间用作SQL 编译器的工作空间,此参数指定此工作空间的大小APPLHEAPSZ 指定代理进程或子代理进程使用的专用内存页数目PCKCACHESZ 指定用于高速缓存数据库上的静态和动态SQL 语句的内存的大小STAT_HEAP_SZ 参数指示使用RUNSTATS 命令收集统计信息时所用的堆的最大大小。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

查看DB2常用数据库字典表(转自ITeye)
分类:RDBMS2012-11-19 13:02 2251人阅读评论(0) 收藏举报
目录(?)[+]最近测试系统时想导出处记录然后插入到另一个表中,一直报外键约束问题,外键名称为F_517,在DbVisualizer中查看特定表,确实有这个约束,但苦于没有给出定义,不知该约束在哪张表上,搜索,得到如下sql语句:
-- P :主键约束, F : 外键约束,tabname指定约束定义的表
select * from syscat.tabconst where type in ('P', 'F') and tabname = 'ORDERS';
select * from syscat.keycoluse where constname = 'F_517';
顺便将原博文转载如下:
由于工作的需要,前段时间简要学习了Oracle和DB2的数据库字典表,在前期的质量月报中已经发表过有关Oracle字典表的文章,本文主要针对DB2常用数据库字典表进行一个讲解,文章脉络以问答的方式进行组织。

1、如何查看当前用户有哪些数据库表?
在DB2中,所有表、视图数据都存放在字典表syscat.tables中,其中字段TYPE表示对象类型,V表示视图,T表示数据表,如要查询当前用户有哪些数据表,可以执行如下sql:
select * from syscat.tables where OWNER=当前登录用户and TYPE = 'T';
查询结果如下:
2、如何查看当前用户有哪些视图?
只需将上面的TYPE=’T’改成TYPE=’V’即可。

select * from syscat.tables where OWNER=当前登录用户and TYPE = 'V';
3、如何查询指定表的列信息?
select * from SYSIBM.SYSCOLUMNS where TBNAME=指定的表名称
如要查询PUB_ORGAN表的列信息:
select * from SYSIBM.SYSCOLUMNS where TBNAME='PUB_ORGAN';
其中:
NAME TBNAME COLTYPE LENGTH NULLS
字段名称表名称字段类型字段指定长短是否可以为空
4、如何查看指定表的主外键信息?
4.1、首先查询表的约束信息
select * from SYSCAT.TABCONST where TYPE in ('P','F')
and TABNAME='PUB_ORGAN';
其中:
CONSTNAME TABNAME TYPE ENFORCED
约束名称表名称约束类型(P表示主键,F表示外
键)
当前约束是否处于启用状

4.2、然后查看约束信息关联的字段
select * from SYSCAT.KEYCOLUSE where CONSTNAME in('PUBORGAN_PK','PUBORGAN_FK1');
以上2步可以查出:表PUB_ORGAN 的主键是ORGAN_ID ,外键是ORGAN_TYPE 。

4.3、进一步查询外键关联表信息
select * from syscat.references where CONSTNAME = 'PUBORGAN_FK1' and TABNAME='PUB_ORGAN';
其中: CONSTNAME TABNAME FK_COLNAMES REFTABNAME PK_COLNAMES
约束名称 表名称 外键字段 引用表名称 引用表字段
5、如何查看视图的sql ?
select VIEWNAME,TEXT from syscat.VIEWS where VIEWNAME=指定的视图名称; 如:
select VIEWNAME,TEXT from syscat.VIEWS where VIEWNAME='V_STRU_ORGAN'; VIEWNAME TEXT
V_STRU_ORGAN CREATE VIEW V_STRU_ORGAN AS SELECT AN_ID,
AN_CODE, AN_NAME, O.SHORT_NAME, AN_TYPE, S.STRU_ID, S.STRU_TYPE, S.PARENT_ID FROM PUB_STRU
S,PUB_ORGAN O WHERE AN_ID=AN_ID
6、如何查看表索引信息?
select * from SYSCAT.INDEXES where TABNAME='PUB_ORGAN';
其中:
TABNAME INDNAME COLNAMES
指定表名称索引名称索引关联字段(-表示降序,+表示升序)。

相关文档
最新文档