IBM Informix Version 11.70
IBM Informix Guide to SQL: Reference
SC27-3524-00
IBM Informix Version 11.70
IBM Informix Guide to SQL: Reference
SC27-3524-00 Note Before using this information and the product it supports, read the information in “Notices” on page D-1.
Edition This publication contains proprietary information of IBM. It is provided under a license agreement and is protected by copyright law. The information contained in this publication does not include any product warranties, and any statements provided in this manual should not be interpreted as such. When you send information to IBM, you grant IBM a nonexclusive right to use or distribute the information in any way it believes appropriate without incurring any obligation to you. © Copyright IBM Corporation 1996, 2010. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents
Introduction ...... ix About This Publication...... ix Types of Users ...... ix Software Dependencies ...... ix Assumptions About Your Locale...... x Demonstration Database ...... x What's New in SQL Reference for IBM Informix, Version 11.70 ...... x Example code conventions ...... xi Additional documentation ...... xii Compliance with industry standards ...... xii Syntax diagrams ...... xiii How to read a command-line syntax diagram ...... xiv Keywords and punctuation ...... xv Identifiers and names ...... xv How to Provide Documentation Feedback ...... xv
Chapter 1. System Catalog Tables...... 1-1 Objects That the System Catalog Tables Track ...... 1-1 Using the System Catalog ...... 1-1 Accessing the System Catalog ...... 1-6 Update System Catalog Data ...... 1-6 Structure of the System Catalog ...... 1-7 SYSAGGREGATES...... 1-9 SYSAMS ...... 1-9 SYSATTRTYPES ...... 1-11 SYSBLOBS ...... 1-12 SYSCASTS ...... 1-12 SYSCHECKS ...... 1-13 SYSCHECKUDRDEP ...... 1-14 SYSCOLATTRIBS ...... 1-14 SYSCOLAUTH ...... 1-15 SYSCOLDEPEND...... 1-15 SYSCOLUMNS ...... 1-16 Opaque Data Types ...... 1-18 Storing Column Length...... 1-18 Storing Maximum and Minimum Values ...... 1-19 SYSCONSTRAINTS ...... 1-20 SYSDEFAULTS ...... 1-20 SYSDEPEND ...... 1-21 SYSDIRECTIVES ...... 1-22 SYSDISTRIB ...... 1-22 SYSDOMAINS...... 1-24 SYSERRORS ...... 1-24 SYSEXTCOLS ...... 1-24 SYSEXTCOLS (XPS) ...... 1-25 SYSEXTDFILES ...... 1-26 SYSEXTDFILES (XPS) ...... 1-26 SYSEXTERNAL ...... 1-26 SYSEXTERNAL (XPS) ...... 1-27 SYSFRAGAUTH ...... 1-27 SYSFRAGDIST...... 1-28 SYSFRAGMENTS...... 1-30 SYSINDEXES ...... 1-31 SYSINDICES ...... 1-33 SYSINHERITS ...... 1-35
© Copyright IBM Corp. 1996, 2010 iii SYSLANGAUTH ...... 1-35 SYSLOGMAP ...... 1-35 SYSNEWDEPEND (XPS) ...... 1-36 SYSOBJSTATE ...... 1-36 SYSOPCLASSES ...... 1-37 SYSOPCLSTR ...... 1-37 SYSPROCAUTH ...... 1-38 SYSPROCBODY ...... 1-39 SYSPROCCOLUMNS...... 1-40 SYSPROCEDURES ...... 1-40 SYSPROCPLAN ...... 1-43 SYSREFERENCES ...... 1-43 SYSREPOSITORY (XPS)...... 1-44 SYSROLEAUTH ...... 1-44 SYSROUTINELANGS ...... 1-45 SYSSECLABELCOMPONENTS ...... 1-45 SYSSECLABELCOMPONENTELEMENTS ...... 1-45 SYSSECPOLICIES...... 1-46 SYSSECPOLICYCOMPONENTS ...... 1-46 SYSSECPOLICYEXEMPTIONS ...... 1-47 SYSSECLABELAUTH ...... 1-47 SYSSECLABELNAMES ...... 1-47 SYSSECLABELS ...... 1-48 SYSSEQUENCES ...... 1-48 SYSSYNONYMS ...... 1-48 SYSSYNTABLE ...... 1-49 SYSTABAMDATA ...... 1-49 SYSTABAUTH...... 1-50 SYSTABLES...... 1-50 SYSTRACECLASSES...... 1-53 SYSTRACEMSGS ...... 1-54 SYSTRIGBODY ...... 1-54 SYSTRIGGERS...... 1-55 SYSUSERS ...... 1-55 SYSVIEWS ...... 1-56 SYSVIOLATIONS...... 1-56 SYSXADATASOURCES ...... 1-57 SYSXASOURCETYPES ...... 1-57 SYSXTDDESC ...... 1-58 SYSXTDTYPEAUTH ...... 1-58 SYSXTDTYPES ...... 1-59 Information Schema ...... 1-60 Generating the Information Schema Views ...... 1-60 Accessing the Information Schema Views ...... 1-60 Structure of the Information Schema Views ...... 1-61
Chapter 2. Data Types ...... 2-1 Summary of Data Types ...... 2-1 Description of Data Types ...... 2-5 BIGINT ...... 2-5 BIGSERIAL ...... 2-6 BLOB ...... 2-6 BOOLEAN ...... 2-7 BYTE ...... 2-8 CHAR(n) ...... 2-8 CHARACTER(n) ...... 2-10 CHARACTER VARYING(m,r) ...... 2-10 CLOB...... 2-10 DATE...... 2-11 DATETIME ...... 2-11 DEC...... 2-14 iv IBM Informix Guide to SQL: Reference DECIMAL ...... 2-14 DISTINCT ...... 2-16 DOUBLE PRECISION ...... 2-17 FLOAT(n) ...... 2-17 IDSSECURITYLABEL ...... 2-17 INT...... 2-18 INT8 ...... 2-18 INTEGER ...... 2-18 INTERVAL ...... 2-18 LIST(e) ...... 2-20 LVARCHAR(m) ...... 2-22 MONEY(p,s) ...... 2-22 MULTISET(e) ...... 2-23 Named ROW ...... 2-24 NCHAR(n) ...... 2-24 NUMERIC(p,s) ...... 2-24 NVARCHAR(m,r)...... 2-24 OPAQUE ...... 2-25 REAL...... 2-25 ROW, Named ...... 2-25 ROW, Unnamed ...... 2-26 SERIAL(n) ...... 2-28 SERIAL8(n) ...... 2-29 SET(e) ...... 2-30 SMALLFLOAT...... 2-31 SMALLINT ...... 2-31 TEXT data type ...... 2-32 Unnamed ROW ...... 2-33 VARCHAR(m,r) ...... 2-33 Built-In Data Types ...... 2-35 Character Data Types ...... 2-35 Large-Object Data Types ...... 2-37 Time Data Types ...... 2-39 Extended Data Types ...... 2-43 Complex Data Types...... 2-44 Distinct Data Types ...... 2-46 Opaque Data Types ...... 2-46 Data Type Casting and Conversion ...... 2-47 Using Built-in Casts ...... 2-47 Using User-Defined Casts ...... 2-49 Determining Which Cast to Apply ...... 2-50 Casts for Distinct Types...... 2-51 What Extended Data Types Can Be Cast? ...... 2-51 Operator Precedence...... 2-52
Chapter 3. Environment Variables ...... 3-1 Types of Environment Variables ...... 3-1 Limitations on Environment Variables ...... 3-2 Using Environment Variables on UNIX ...... 3-2 Where to Set Environment Variables on UNIX ...... 3-2 Setting Environment Variables in a Configuration File ...... 3-3 Setting Environment Variables at Login Time ...... 3-3 Syntax for Setting Environment Variables ...... 3-3 Unsetting Environment Variables ...... 3-4 Modifying an Environment-Variable Setting ...... 3-4 Viewing Your Environment-Variable Settings ...... 3-5 Checking Environment Variables with the chkenv Utility ...... 3-5 Rules of Precedence ...... 3-6 Using Environment Variables on Windows...... 3-6 Where to Set Environment Variables on Windows ...... 3-6 Environment Settings ...... 3-6
Contents v Rules of Precedence ...... 3-8 List of Environment Variables ...... 3-9 Environment Variables ...... 3-13 AC_CONFIG ...... 3-13 ANSIOWNER ...... 3-14 BIG_FET_BUF_SIZE (XPS) ...... 3-14 CPFIRST...... 3-15 DBACCNOIGN ...... 3-15 DBANSIWARN ...... 3-16 DBBLOBBUF ...... 3-17 DBCENTURY ...... 3-17 DBDATE ...... 3-20 DBDELIMITER ...... 3-22 DBEDIT ...... 3-22 DBFLTMASK ...... 3-22 DBLANG ...... 3-23 DBMONEY ...... 3-24 DBNLS ...... 3-25 DBONPLOAD ...... 3-26 DBPATH...... 3-26 DBPRINT ...... 3-28 DBREMOTECMD (UNIX) ...... 3-28 DBSPACETEMP ...... 3-29 DBTEMP ...... 3-30 DBTIME ...... 3-31 DBUPSPACE ...... 3-33 DEFAULT_ATTACH environment variable ...... 3-34 DELIMIDENT environment variable ...... 3-34 ENVIGNORE (UNIX) ...... 3-36 FET_BUF_SIZE ...... 3-36 GLOBAL_DETACH_INFORM (XPS) ...... 3-37 IBM_XPS_PARAMS (XPS) ...... 3-37 IFMX_CART_ALRM (XPS)...... 3-38 IFMX_HISTORY_SIZE (XPS) ...... 3-39 IFMX_OPT_FACT_TABS (XPS) ...... 3-39 IFMX_OPT_NON_DIM_TABS (XPS) ...... 3-40 IFX_DEF_TABLE_LOCKMODE ...... 3-40 IFX_DIRECTIVES...... 3-41 IFX_EXTDIRECTIVES ...... 3-41 IFX_LARGE_PAGES ...... 3-42 IFX_LOB_XFERSIZE ...... 3-43 IFX_LONGID ...... 3-44 IFX_NETBUF_PVTPOOL_SIZE (UNIX) ...... 3-44 IFX_NETBUF_SIZE ...... 3-45 IFX_NO_SECURITY_CHECK (UNIX) ...... 3-45 IFX_NO_TIMELIMIT_WARNING ...... 3-46 IFX_NODBPROC ...... 3-46 IFX_NOT_STRICT_THOUS_SEP ...... 3-46 IFX_ONTAPE_FILE_PREFIX ...... 3-46 IFX_PAD_VARCHAR ...... 3-47 IFX_UNLOAD_EILSEQ_MODE environment variable ...... 3-47 IFX_UPDDESC ...... 3-48 IFX_XASTDCOMPLIANCE_XAEND ...... 3-48 IFX_XFER_SHMBASE ...... 3-49 IMCADMIN ...... 3-49 IMCCONFIG ...... 3-50 IMCSERVER ...... 3-50 INFORMIXC (UNIX) ...... 3-50 INFORMIXCONCSMCFG ...... 3-51 INFORMIXCONRETRY...... 3-51 INFORMIXCONTIME ...... 3-51 vi IBM Informix Guide to SQL: Reference INFORMIXCPPMAP...... 3-53 INFORMIXDIR ...... 3-53 INFORMIXOPCACHE ...... 3-53 INFORMIXSERVER ...... 3-54 INFORMIXSHMBASE (UNIX) ...... 3-54 INFORMIXSQLHOSTS ...... 3-55 INFORMIXSTACKSIZE ...... 3-56 INFORMIXTERM Environment Variable (UNIX) ...... 3-56 INF_ROLE_SEP ...... 3-57 INTERACTIVE_DESKTOP_OFF (Windows) ...... 3-57 ISM_COMPRESSION ...... 3-58 ISM_DEBUG_FILE ...... 3-58 ISM_DEBUG_LEVEL ...... 3-58 ISM_ENCRYPTION ...... 3-58 ISM_MAXLOGSIZE ...... 3-59 ISM_MAXLOGVERS...... 3-59 JAR_TEMP_PATH ...... 3-59 JAVA_COMPILER ...... 3-60 JVM_MAX_HEAP_SIZE ...... 3-60 LD_LIBRARY_PATH (UNIX) ...... 3-60 LIBERAL_MATCH (XPS) ...... 3-61 LIBPATH (UNIX) ...... 3-61 NODEFDAC ...... 3-61 ONCONFIG ...... 3-62 ONINIT_STDOUT (Windows) ...... 3-62 OPTCOMPIND environment variable ...... 3-63 OPTMSG ...... 3-63 OPTOFC environment variable ...... 3-64 OPT_GOAL (Informix, UNIX) ...... 3-64 PATH...... 3-65 PDQPRIORITY ...... 3-65 PLCONFIG ...... 3-67 PLOAD_LO_PATH ...... 3-67 PLOAD_SHMBASE ...... 3-67 PSORT_DBTEMP ...... 3-68 PSORT_NPROCS ...... 3-68 RTREE_COST_ADJUST_VALUE ...... 3-69 SHLIB_PATH (UNIX) ...... 3-70 STMT_CACHE ...... 3-70 TERM (UNIX) ...... 3-70 TERMCAP Environment Variable (UNIX)...... 3-71 TERMINFO Environment Variable (UNIX) ...... 3-71 THREADLIB (UNIX) ...... 3-72 TOBIGINT (XPS) ...... 3-72 USETABLENAME ...... 3-72 XFER_CONFIG (XPS) ...... 3-73 Index of Environment Variables ...... 3-73
Appendix A. The stores_demo Database...... A-1 Structure of the Tables ...... A-1 The customer Table ...... A-2 The orders Table ...... A-2 The items Table ...... A-2 The stock Table ...... A-3 The catalog Table ...... A-3 The cust_calls Table ...... A-4 The call_type Table ...... A-4 The manufact Table ...... A-4 The state Table ...... A-4 The stores_demo Database Map ...... A-5 Primary-Foreign Key Relationships ...... A-5
Contents vii The customer and orders Tables ...... A-5 The orders and items Tables ...... A-6 The items and stock Tables ...... A-6 The stock and catalog Tables ...... A-7 The stock and manufact Tables ...... A-8 The cust_calls and customer Tables ...... A-8 The call_type and cust_calls Tables ...... A-8 The state and customer Tables...... A-9 Data in the stores_demo Database ...... A-9 customer Table ...... A-9 items Table...... A-11 call_type Table ...... A-13 orders Table ...... A-13 stock Table ...... A-14 catalog Table ...... A-16 cust_calls Table ...... A-22 manufact Table ...... A-23 state Table ...... A-23
Appendix B. The sales_demo and superstores_demo Databases ...... B-1 The sales_demo Database (XPS) ...... B-1 Dimensional Model of the sales_demo Database ...... B-1 Structure of the sales_demo Tables ...... B-2 The superstores_demo Database ...... B-4 Structure of the superstores_demo Tables ...... B-5 User-Defined Routines and Extended Data Types ...... B-12 Table Hierarchies ...... B-14 Referential Relationships ...... B-14
Appendix C. Accessibility ...... C-1 Accessibility features for IBM Informix products ...... C-1 Accessibility features ...... C-1 Keyboard navigation ...... C-1 Related accessibility information ...... C-1 IBM and accessibility ...... C-1 Dotted decimal syntax diagrams ...... C-1
Notices ...... D-1 Trademarks ...... D-3
Index ...... X-1
viii IBM Informix Guide to SQL: Reference Introduction
About This Publication
This publication includes information about the system catalog tables, data types, and environment variables that IBM® Informix® products use.
This publication is one of a series of publications that contains information about the IBM Informix implementation of SQL. The IBM Informix Guide to SQL: Syntax contains all the syntax descriptions for SQL and stored procedure language (SPL). The IBM Informix Guide to SQL: Tutorial shows how to use basic and advanced SQL and SPL routines to access and manipulate the data in your databases. The IBM Informix Database Design and Implementation Guide shows how to use SQL to implement and manage your databases.
See the documentation notes files for a list of the publications in the documentation set of IBM Informix. Types of Users This publication is written for the following users: v Database users v Database administrators v Database server administrators v Database-application programmers v Performance engineers
This publication assumes that you have the following background: v A working knowledge of your computer, your operating system, and the utilities that your operating system provides v Some experience working with relational databases or exposure to database concepts v Some experience with computer programming v Some experience with database server administration, operating-system administration, or network administration
If you have limited experience with relational databases, SQL, or your operating system, see the IBM Informix Getting Started Guide for your database server for a list of supplementary titles. Software Dependencies
This publication is written with the assumption that you are using one of the following database servers: v IBM Informix, Version 11.70 v IBM Informix Extended Parallel Server, Version 8.51
© Copyright IBM Corp. 1996, 2010 ix Assumptions About Your Locale
IBM Informix products can support many languages, cultures, and code sets. All the information related to character set, collation, and representation of numeric data, currency, date, and time is brought together in a single environment, called a Global Language Support (GLS) locale.
This publication assumes that your database uses the default locale. This default is en_us.8859-1 (ISO 8859-1) on UNIX platforms or en_us.1252 (Microsoft 1252) in Windows environments. This locale supports U.S. English format conventions for displaying and entering date, time, number, and currency values. It also supports the ISO 8859-1 (on UNIX and Linux) or Microsoft 1252 (on Windows) code set, which includes the ASCII code set plus many 8-bit characters such as é, è, and ñ.
If you plan to use nondefault characters in your data or in SQL identifiers, or if you plan to use other collation rules for sorting character data, you must specify the appropriate nondefault locale.
For instructions on how to specify a nondefault locale, and for additional syntax and other considerations related to GLS locales, see the IBM Informix GLS User's Guide. Demonstration Database
The DB–Access utility, which is provided with the database server products, includes one or more of the following demonstration databases: v The stores_demo database illustrates a relational schema with information about a fictitious wholesale sporting-goods distributor. Many examples in IBM Informix publications are based on the stores_demo database. v Extended Parallel Server: The sales_demo database illustrates a dimensional schema for data- warehousing applications. For conceptual information about dimensional data modeling, see the IBM Informix Database Design and Implementation Guide. v IBM Informix: The superstores_demo database illustrates an object-relational schema. The superstores_demo database contains examples of extended data types, type and table inheritance, and user-defined routines.
For information about how to create and populate the demonstration databases, see the IBM Informix DB-Access User's Guide. For descriptions of the databases and their contents, see Appendix A, “The stores_demo Database,” on page A-1 and Appendix B, “The sales_demo and superstores_demo Databases,” on page B-1.
The scripts that you use to install the demonstration databases are located in in the $INFORMIXDIR/bin directory on UNIX platforms and in the %INFORMIXDIR%\bin directory in Windows environments.
What's New in SQL Reference for IBM Informix, Version 11.70 This publication includes information about new features and changes in existing functionality.
x IBM Informix Guide to SQL: Reference The following changes and enhancements are relevant to this publication. For a complete list of what's new in this release, see the release notes or the information center at http://publib.boulder.ibm.com/infocenter/idshelp/v117/topic/ com.ibm.po.doc/new_features.htm. Table 1. What's New in IBM Informix Guide to SQL: Reference for Version 11.70.xC1 Overview Reference Fragment-level statistics “SYSDISTRIB” on page 1-22
In previous releases, for fragmented tables data “SYSFRAGDIST” on page 1-28 distributions were calculated at table level to optimize query plans. This release supports a finer granularity of “SYSFRAGMENTS” on page 1-30 statistics for fragmented tables. The statistics are calculated and stored at the individual fragment level. Set “SYSINDICES” on page 1-33 the new STATLEVEL property of fragmented tables to “SYSTABLES” on page 1-50 specify whether TABLE or FRAGMENT is the granularity for data distributions, or set to AUTO to allow the Also see IBM Informix Guide to SQL: Syntax. database server to automatically choose the granularity of the distribution statistics for each fragmented table. Large pages support on Linux “IFX_LARGE_PAGES” on page 3-42
Large pages for non-message shared memory segments that reside in physical memory are now enabled by default on Linux platforms. Previously, large pages were supported only on AIX® and Solaris systems. The use of large pages can provide performance benefits in large memory configurations. To enable or disable support for large pages, use the IFX_LARGE_PAGES environment variable. New environment variable enables invalid character “IFX_UNLOAD_EILSEQ_MODE environment variable” data to be used by DB-Access, dbexport, and High on page 3-47 Performance Loader
The IFX_UNLOAD_EILSEQ_MODE environment variable enables DB-Access, dbexport, and High Performance Loader (HPL) to retrieve character data that is invalid for the locale specified in the environment. New editions and product names For more information about the Informix product family, go to http://www.ibm.com/software/data/informix/. IBM Informix Dynamic Server editions were withdrawn and new Informix editions are available. Some products were also renamed. The publications in the Informix library pertain to the following products: v IBM Informix database server, formerly known as IBM Informix Dynamic Server (IDS) v IBM OpenAdmin Tool (OAT) for Informix, formerly known as OpenAdmin Tool for Informix Dynamic Server (IDS) v IBM Informix SQL Warehousing Tool, formerly known as Informix Warehouse Feature
Example code conventions Examples of SQL code occur throughout this publication. Except as noted, the code is not specific to any single IBM Informix application development tool.
Introduction xi If only SQL statements are listed in the example, they are not delimited by semicolons. For instance, you might see the code in the following example: CONNECT TO stores_demo ...
DELETE FROM customer WHERE customer_num = 121 ...
COMMIT WORK DISCONNECT CURRENT
To use this SQL code for a specific product, you must apply the syntax rules for that product. For example, if you are using an SQL API, you must use EXEC SQL at the start of each statement and a semicolon (or other appropriate delimiter) at the end of the statement. If you are using DB–Access, you must delimit multiple statements with semicolons.
Tip: Ellipsis points in a code example indicate that more code would be added in a full application, but it is not necessary to show it to describe the concept being discussed.
For detailed directions on using SQL statements for a particular application development tool or SQL API, see the documentation for your product.
Additional documentation Documentation about this release of IBM Informix products is available in various formats.
All of the product documentation (including release notes, machine notes, and documentation notes) is available from the information center on the web at http://publib.boulder.ibm.com/infocenter/idshelp/v117/index.jsp. Alternatively, you can access or install the product documentation from the Quick Start CD that is shipped with the product.
Compliance with industry standards IBM Informix products are compliant with various standards.
IBM Informix SQL-based products are fully compliant with SQL-92 Entry Level (published as ANSI X3.135-1992), which is identical to ISO 9075:1992. In addition, many features of IBM Informix database servers comply with the SQL-92 Intermediate and Full Level and X/Open SQL Common Applications Environment (CAE) standards.
The IBM Informix Geodetic DataBlade® Module supports a subset of the data types from the Spatial Data Transfer Standard (SDTS)—Federal Information Processing Standard 173, as referenced by the document Content Standard for Geospatial Metadata, Federal Geographic Data Committee, June 8, 1994 (FGDC Metadata Standard).
IBM Informix Dynamic Server (IDS) Enterprise Edition, Version 11.50 is certified under the Common Criteria. For more information, see Common Criteria Certification: Requirements for IBM Informix Dynamic Server, which is available at http://www.ibm.com/support/docview.wss?uid=swg27015363.
xii IBM Informix Guide to SQL: Reference Syntax diagrams Syntax diagrams use special components to describe the syntax for statements and commands. Table 2. Syntax Diagram Components Component represented in PDF Component represented in HTML Meaning
>>------Statement begins.
------> Statement continues on next line.
>------Statement continues from previous line.
------>< Statement ends.
------SELECT------Required item.
--+------+--- Optional item. ’------LOCAL------’
---+-----ALL------+--- Required item with choice. +--DISTINCT-----+ Only one item must be ’---UNIQUE------’ present.
---+------+--- Optional items with choice +--FOR UPDATE-----+ are shown below the main ’--FOR READ ONLY--’ line, one of which you might specify.
.---NEXT------. The values below the main ----+------+--- line are optional, one of +---PRIOR------+ which you might specify. If ’---PREVIOUS-----’ you do not specify an item, the value above the line will be used as the default.
.------,------. Optional items. Several items V|are allowed; a comma must ---+------+--- precede each repetition. +---index_name---+ ’---table_name---’
>>-| Table Reference |->< Reference to a syntax segment. Table Reference Syntax segment. |--+-----view------+--| +------table------+ ’----synonym------’
Introduction xiii How to read a command-line syntax diagram Command-line syntax diagrams use similar elements to those of other syntax diagrams.
Some of the elements are listed in the table in Syntax Diagrams.
Creating a no-conversion job