The built-in sample database makes self-learning and prototype activities easier.
Almost all of the DB2-related TechTips that I have written highlight new DB2 for i functions and features. While it's good to raise awareness of new DB2 capabilities, this does result in existing DB2 features being overlooked. This is especially true of the more ordinary database functions.
Last week, one of those often-overlooked DB2 functions came up during a customer workgroup that discussed how to improve the IBM i application development experience. One client made the point that other databases include a sample database that's always available to use when you're playing around with a new programming language or testing out new SQL features.
While DB2 for i doesn't create a sample database by default, a system stored procedure is available that makes it simple to create a sample database. The stored procedure name is CREATE_SQL_SAMPLE and is shipped in the QSYS library. The procedure creates and populates a group of tables that houses information that describes employees, departments, projects, and activities.
These objects in the sample database are also used by the examples in the DB2 for i SQL Reference and Programming guides. Thus, it's simple for you to copy and paste the SQL examples from the documentation and run them on your system. Running and then modifying these examples is a great method to better understand a new or existing SQL feature.
CREATE_SQL_SAMPLE is a stored procedure, so you need to use the SQL CALL statement to invoke it from your favorite SQL interface. The procedure requires a single input parameter, which is the name of the schema that you want created to house the sample database objects. Because a new schema is created, the stored procedure will fail if you supply the name of an existing schema or library. It's also best to supply an uppercase name since DB2 is going to make the schema name uppercase anyway.
The following SQL statement creates a schema named KMSAMPLE and creates the SQL objects associated with the sample database in the newly created schema.
Expect the sample database to be created and populated on most systems within a couple of minutes. Also, don't worry about disk storage requirement because the sample database consumes only about 120 KB of storage.
If your memory is getting less reliable as the years pass (like mine), then it's helpful to have other techniques to remember the name of this system stored procedure. I rely on the System i Navigator Run SQL Scripts utility as my memory aid.
I start the process of finding the stored procedure name by selecting the "Insert from Examples" task on the Edit pull-down menu as shown in Figure 1.
Figure 1: Insert your example.
That task launches the SQL Statement Examples window displayed in Figure 2. On this window, just enter CALL into the "Search For" input field, which will highlight a CALL statement with an example invocation of the CREATE_SQL_SAMPLE stored procedure. If you select the Insert button, the example statement will be copied into your Run SQL Scripts window so that all you have to do is type in your schema name and execute the procedure.
Figure 2: This is the SQL Statement Examples window.
If you're looking for a tool to help you quickly understand the database objects created by the system stored procedure, then don't forget about the graphical modeling support available with the IBM Data Studio tool that can be downloaded for free.
If you're interested in playing around with the integrated XML support delivered in the DB2 for i 7.1 release, then use the companion CREATE_XML_SAMPLE stored procedure to create sample database tables that contain XML data.
The ability to create a sample database on DB2 for i isn't the newest or sexiest feature, but I think there any many situations in which developers can improve their productivity by using the DB2 sample database instead of taking time to create and populate their own database objects.