事務控制語言
1.事務提交命令: Commit;
2.事務回退命令: Rollback;
系統控制語言
1. 取消自動提交:
Update command options using c off;
2. 連接數據庫:
Connect to 數據庫名user 用戶using 密碼
3. 斷開數據庫連接:
Connect reset
Disconnect 數據庫名
4. 列出數據庫中的所有表:
List tables for all
5. 列出數據庫中的模式名為schema_name的所有表:
List tables for schema schema_name
6.查看表結構
Describe table 模式名.表名
Describe select * from 模式名.表名
7.查看表的索引
Describe indexes for table 模式名.表名
函數
(一) 列函數
列函數對列中的一組值進行運算以得到單個結果值。
1.AVG
返回某一組中的值除以該組中值的個數的和
2.COUNT (*)
返回非空列值的行數。
3.MAX
返回一組值中的最大值
4.MIN
返回一組值中的最小值
5.MOD
求余
(二) 標量函數
標量函數對值進行某個運算以返回另一個值。下列就是一些由DB2通用數據庫提供的標量函數的示例。
1.ABS
返回數的絕對值
2.HEX
返回值的十六進制表示
3.LENGTH
返回自變量中的字節數(對於圖形字符串則返回雙字節字符數。)
4.YEAR
抽取日期時間值的年份部分
5.NULLIF(a,b)
如果a=b則值為空,否則值為a
6.COALESCE(a,b,c)
:返回第一個具有非空值的參數的值
7.UCASE(str)
小寫字符轉換成大寫字符
8.ICASE(str)
大寫字符轉換成小寫字符
9.LOCAT(str1,str2,n)
返回從第n個字符起,在str1中str2第一次出現的位置
10.SUBSTR(str,m,n)
返回從第m個字符起,,在str中的n個字符串
嵌入式SQL(SQLJ)
將SQL語句嵌入應用程序時,必須按以下步驟預編譯應用程序並將其與數據庫聯編:
1.創建源文件,以包含帶嵌入式SQL 語句的程序
格式: # SQL{ SQL語句} 。
2.連接數據庫,然後預編譯每個源文件。
語法: SQLJ 源文件名
例:
import java.sql.*;
import sqlj.runtime.*;
import sqlj.runtime.ref.*;
#sql iterator App_Cursor1 (String empno, String firstnme) ;
#sql iterator App_Cursor2 (String) ;
class App
{
static
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String argv[])
{
try
{
App_Cursor1 cursor1;
App_Cursor1 cursor2;
String str1 = null;
String str2 = null;
int count1;
Connection con = null;
String url = "jdbc:odbc:tese2";
DefaultContext ctx = DefaultContext.getDefaultContext();
if (ctx == null) {
try {
if (argv.length == 0) {
String userid ="tdl";
String passwd ="user";
con = DriverManager.getConnection(url, userid, passwd);
}
else if (argv.length == 2) {
// connect with default id/password
con = DriverManager.getConnection(url);
}
else {
System.out.println("Usage: java App [username password]");
System.exit(0);
}
con.setAutoCommit(false);
ctx = new DefaultContext(con);
}
catch (SQLException e) {
System.out.println("Error: could not get a default context");
System.err.println(e) ;
System.exit(1);
}
DefaultContext.setDefaultContext(ctx);
}
#sql cursor1 = { SELECT empno, firstnme from db2admin.employee };
System.out.println("Received results:");
while (cursor1.next()) {
str1 = cursor1.empno();
str2 = cursor1.firstnme();
System.out.print (" empno= " + str1);
System.out.print (" firstname= " + str2);
System.out.print ("");
}
cursor1.close();
#sql cursor2 = { SELECT firstnme from db2admin.employee where empno = :str1 };
System.out.println("Received results:");
while (true) {
#sql { FETCH :cursor2 INTO :str2 };
if (cursor2.endFetch()) break;
System.out.print (" empno= " + str1);
System.out.print (" firstname= " + str2);
System.out.print ("");
}
cursor2.close();
// rollback the update
System.out.println("Rollback the update...");
#sql { ROLLBACK work };
System.out.println("Rollback done.");
}
catch( Exception e )
{
e.printStackTrace();
}
}
}
注:本程序采用JDBCODBC橋的方式訪問數據庫,必須配置ODBC數據源。