DB2数据库使用 DML(Data Manipulation Language commands)数据操纵语言 DDL(Data Definition Language commands) 数据定义语言 TCC(Transaction Control commands) 事务控制语言 SCC(System Control commands ) 系统控制语言
一 DML数据操纵语言
(一)数据查询命令
select <查询内容> From <表名> where <条件> /*in,between,like%或_*/ group by<分组内容> having<组内条件> order by<排序内容>[asc/desc];
(二)数据更新命令
1、数据插入命令
(1).具体的值插入表中 Insert into <表名> [(列名表)] values<值表1>,<值表2>,<值表2>... (注: 日期,字符型值加引号) (2).将其它表满足条件的数据插入到一个表中 Insert into <表名> [<列表名>]
(二)、数据定义 1、Create (创建) 创建表: Create table [<模式名>.]<表名> (<列名1> <类型> [Null|Not null] [,<列 名2> <类型>...] 创建视图: Create view [<模式名>.]<视图名> [<列名表>] as select 语句 创建别名: Create alias [<模式名>.]别名 for [<模式名>.]表名/视图名/别名 创建索引: Create [unique] index <索引名> /*I_表名_字段名*/ on <表名>(<列名 >[asc|desc] 创建模式: Create schema 模式名 authorization 权限名
2、Drop (摧毁) 摧毁表: drop table [<模式名>.]表名 摧毁视图: drop view [<模式名>.]视图名 摧毁别名: drop alias [<模式名>.]别名 摧毁触发器: drop trigger [<模式名>.]触发器名 摧毁索引: drop index [<模式名>.]<索引名> 摧毁包: drop package [<模式名>.]包名
3、Alter (变更) 增加表列: Alter table [<模式名>.]<表名> add column [<列名1> <类型> [Null|Not null]]... 增加约束: Alter table [<模式名>.]<表名> add constraint 列名 CHECK (约束) 删除约束: Alter table [<模式名>.]<表名> drop constraint 约束名 修改列类型: Alter table [<模式名>.]<表名> alter column 列名 set data type <类型>
4、Grant (赋权) 对[public/用户/组] 赋于在表上的[all/select/insert/update/delete] 权限: Grant [all/select/insert/update/delete] on [<模式名>.]表名to [public/用户/ 组]; 对[public/用户/组] 赋于在包上的[bind/execute/]权限: Grant [bind/execute/] on package [<模式名>.][包名] to [public/用户/组]; 对[public/用户/组] 赋于在索引上的[control]权限: Grant control on index [<模式名>.]索引名 to [public/用户/组]
5、Revoke (回收) 从public/用户/组] 回收在表上的[all/select/insert/update/delete] 权限: Revoke [all/select/insert/update/delete] on [表名] from [public/用户/组]; 从public/用户/组] 回收在包上的[bind/execute/] 权限: Revoke [bind/execute/] on package [<模式名>.][包名]from [public/用户/组]; 三 事务控制语言
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 模式名.表名
例: 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("\nUsage: java App [username password]\n"); 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 ("\n"); } 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 ("\n"); } cursor2.close(); // rollback the update System.out.println("\n\nRollback the update..."); #sql { ROLLBACK work }; System.out.println("Rollback done."); } catch( Exception e ) { e.printStackTrace(); } }}
七 触发器 建一个触发器,应包含以下部分: 触发器名字 触发器触发事件: insert,delete,update 激活时间: before,after 粒度: for each statement,for each row 过渡变量: old row:表示触发事件之前被修改的值: new row表示触发事件之后被修改的值 old table表示触发事件之前全部被修改行的一个只读假想表 new table表示触发事件之后全部被修改行的一个假想表 触发条件: 由WHEN开始,可包含一个或多个谓词,可包含过渡变量和子查询 触发体: 由一个或多个SQL语句组成
例:
CREATE TRIGGER REORDER AFTER UPDATE OF ON_HAND, MAX_STOCKED ON PARTS REFERENCING NEW AS N_ROW FOR EACH ROW MODE DB2SQL WHEN (N_ROW.ON_HAND < 0.10 * N_ROW.MAX_STOCKED AND N_ROW.ORDER_PENDING = 'N') BEGIN ATOMIC VALUES(ISSUE_SHIP_REQUEST(N_ROW.MAX_STOCKED - N_ROW.ON_HAND, N_ROW.PARTNO)); UPDATE PARTS SET PARTS.ORDER_PENDING = 'Y' WHERE PARTS.PARTNO = N_ROW.PARTNO; END