??xml version="1.0" encoding="utf-8" standalone="yes"?> Hsqldb有四U运行模式: 一?span style="font: 7pt "Times New Roman";">
Oracle
mysql
Ҏ版本
Enterprise Oracle10g Release 10.2.0.1.0
mysql 4.1.21-nt
默认安装目录
..\oracle\product\10.2.0
..\MySQL\MySQL Server 4.1
各种实用E序所在目?/td>
..\oracle\product\10.2.0\db_1\BIN
..\MySQL\MySQL Server 4.1\bin
客户E序
SQL*Plus
mysql
安装后系l默认用P库)
sys
system
scottmysql
test
昄所有用P库)
SQL >select * from all_users;
mysql> show databases;
退出命?/td>
SQL> exit
SQL> quitmysql> exit
mysql> quit
改变q接用户Q库Q?/td>
SQL> conn 用户?密码@L字符?/td>
mysql> use 库名
查询当前所有的?/td>
SQL> select * from tab;
SQL> select * from cat;mysql> show tables;
F:MySQLbin>mysqlshow 库名
昄当前q接用户Q库Q?/td>
SQL> show user
mysql> connect
查看帮助
SQL> ?
mysql> help
昄表结?/td>
SQL> desc 表名
SQL> describe 表名mysql> desc 表名;
mysql> describe 表名;
mysql> show columns from 表名;
F:MySQLbin>mysqlshow 库名 表名
日期函数
SQL> select sysdate from dual;
mysql> select now();
mysql> select sysdate();
mysql> select curdate();
mysql> select current_date;
mysql> select curtime();
mysql> select current_time;
日期格式?/td>
SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;
SQL> select to_char(sysdate,'hh24-mi-ss') from dual;
mysql> select date_format(now(),'%Y-%m-%d');
mysql> select time_format(now(),'%H-%i-%S');
日期函数
Q增加一个月Q?/td>
SQL> select to_char(add_months(to_date('20000101','yyyymmdd'),1),'yyyy-mm-dd') from dual;
l果Q?000-02-01
SQL> select to_char(add_months(to_date('20000101','yyyymmdd'),5),'yyyy-mm-dd') from dual;
l果Q?000-06-01
mysql> select date_add('2000-01-01',interval 1 month);
l果Q?000-02-01
mysql> select date_add('2000-01-01',interval 5 month);
l果Q?000-06-01
别名
SQL> select 1 a from dual;
mysql> select 1 as a;
字符串截取函?/td>
SQL> select substr('abcdefg',1,5) from dual;
SQL> select substrb('abcdefg',1,5) from dual;
l果Qabcdemysql> select substring('abcdefg',2,3);
l果Qbcd
mysql> select mid('abcdefg',2,3);
l果Qbcd
mysql> select substring('abcdefg',2);
l果Qbcdefg
mysql> select substring('abcdefg' from 2);
l果Qbcdefg
另有SUBSTRING_INDEX(str,delim,count)函数
q回从字W串str的第count个出现的分隔Wdelim之后的子丌Ӏ?br />
如果count是正敎ͼq回最后的分隔W到左边(从左Ҏ) 的所有字W?br />
如果count是负敎ͼq回最后的分隔W到双的所有字W?从右Ҏ)?br />
执行外部脚本命o
SQL >@f:\sql\a.sql
1Qmysql> source f:/sql/a.sql
2QF:MySQLbin>mysql 3QF:MySQLbin>mysql 库名
改表?/td>
SQL> rename a to b;
mysql> alter table a rename b;
执行命o
;<回R>
/
r
run;<回R>
go
ego
distinct用法
SQL> select distinct ? from ?;
SQL> select distinct ?,? from ?;mysql> select distinct ? from ?;
mysql> select distinct ?,? from ?;
注释
--
/*?/#
--
/*?/
限制q回记录条数
SQL> select * from 表名 where rownum<5;
mysql> select * from 表名 limit 5;
新徏用户Q库Q?/td>
SQL> create user 用户?identified by 密码;
mysql> create database 库名;
删用P库)
SQL> drop user 用户?
mysql> drop database 库名;
外连?/td>
使用(+)
使用left join
查询索引
SQL> select index_name,table_name from user_indexes;
mysql> show index from 表名 [FROM 库名];
通配W?/td>
“%”
“%”?#8220;_”
SQL语法
SELECT selection_list 选择哪些?br />
FROM table_list 从何处选择?br />
WHERE primary_constraint 行必L什么条?br />
GROUP BY grouping_columns 怎样对结果分l?br />
HAVING secondary_constraint 行必L的W二条g
ORDER BY sorting_columns 怎样对结果排?br />
SELECT selection_list 选择哪些?br />
FROM table_list 从何处选择?br />
WHERE primary_constraint 行必L什么条?br />
GROUP BY grouping_columns 怎样对结果分l?br />
HAVING secondary_constraint 行必L的W二条g
ORDER BY sorting_columns 怎样对结果排?/td>
]]>
二?span style="font: 7pt "Times New Roman";"> q行Q?/span>In-ProcessQ模式:此模式从应用E序启动数据库,׃所有的数据都将写到文g中,所以,即ɽE序退出,数据也不会被销毁?/span>In-Process不需要另外启动,可以通过DriverManager.getConnection(jdbcUriName,”sa”,””)Q方式即可启动数据库。连?/span>JDBC的实例ؓQ?/span>
jdbc:hsqldb:file:/E:/hsqldb/data/dbname
jdbc:hsqldb:file:/opt/db/dbname
jdbc:hsqldb:file:dbname
三?span style="font: 7pt "Times New Roman";"> 服务器模式:此模式下HSQLDB跟其它数据库服务器一P需要通过服务器的形式来进行启动,可以通过java –cp ../lib/hsqldb.jar org.hsqldb.Server –database.0 testdb –dbname.0 testdbName的命令启动一个守护进E。连?/span>JDBC的实例ؓQ?/span>jdbc:hsqldb:hsql://localhost:<port>/dbname
四?span style="font: 7pt "Times New Roman";"> Web服务器模式:此模式以WEB服务器的形式启动Qƈ通过HTTP协议接受客户端命令。从1.7.2版本开始,Web服务器模式的HSQLDB开始支持事务处理。可以通过java –cp ../lib/hsqldb.jar org.hsqldb.WebServer –database.0 testdb –dbname.0 testdbname的命令来启动?/span>
重点讨论hsqldb服务器模式的启动Ҏ和连接和实际javaE序?/span>JDBCq接情况。假?/span>JDK已经安装到机器上Q环境变量等都正设|?/span>
首先?/span>E:\hsqldbTest目录下徏立两个子目录Q?/span>data?/span>lib目录Q?/span>data用来存放数据Q?/span>lib用来理jar包。将解压之后?/span>hsqldb中的lib目录下的hsqldb.jar文g拯?/span>E:\hsqldbTest\lib目录下?/span>
1Q?span style="font: 7pt "Times New Roman";"> ?/span>hsqldbTest目录下创?/span>runServer.bat文gQ其内容为:
cd data
@java -classpath ../lib/hsqldb.jar org.hsqldb.Server
2Q?span style="font: 7pt "Times New Roman";"> 保存runServer.bat文gQƈ双击q行该文Ӟ此时回弹出命令行H口Q如下图Q表C已启动HSQLDB数据库?/span>
此时Q在data目录下生了三个文gQ如Q?/span>
test.lck ——标识数据库锁状态?/span>
test.log ——运行数据库产生?/span>log信息Q它记录每一个运行和用户操作环节?/span>
test.properties——数据库的配|信息,包括分配的内存大等Q可更具需要修攏V?/span>
注:如果在命令行H口中按?/span>[Ctrl] + [C]l合键,数据库将退出ƈ关闭?/span>
3Q?span style="font: 7pt "Times New Roman";"> 再创?/span>runManager.bat文gQ用来启动图形界面管理工P其内容ؓQ?/span>
cd data
@java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManager
4Q?span style="font: 7pt "Times New Roman";"> 保存runManager.bat文gQƈ双击文gQ此时回弹出囑Ş界面Q注意,在进行这一不之前,必须保W二步已执行Q,如下图?/span>
RecentQ将会列出最q的数据库配|?/span>
Setting Name: 讄名称Q这里不需要填?/span>
TypeQ选择服务器模式(HSQL Database Engine ServerQ?/span>
DriverQ驱动名Uͼ不需要修?/span>
URLQ?/span>JDBCq接Q无需修改
UserQ用户名,Ҏ需要设|?/span>
PasswordQ密码,Ҏ需要设|?/span>
5Q?span style="font: 7pt "Times New Roman";"> 点击?/span>OK】按钮,卛_q接?/span>test数据库。如下图所C?/span>
此时Q我们可以在H口中创{操作,例如Q我们创Z?/span>TBL_USERS的表。在菜单栏中选择?/span>COMMAND?/span>->?/span>CREATE TABLE】命令,此时在右下文本框中显C创的命令,包括各式Q支持的cd{。我们创建的TBL_USERS表结构如下图所C:
6Q?span style="font: 7pt "Times New Roman";"> 点击?/span>Execute】按钮,如果无语法错误,SQL语句正常执行,此时Q选择菜单栏中的?/span>View?/span>->?/span>Refresh Tree】命令,左侧栏中显C创建的TBL_USERS。如下图所C。ƈ且查?/span>test.log文gQ创的过E都全部记录?/span>
7Q?span style="font: 7pt "Times New Roman";"> 另外q可以用DatabaseManagerSwing工具启动囑Ş界面。创?/span>runManagerSwing.bat文gQ内容ؓQ?/span>
cd data
@java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManagerSwing
保存文gQ双击该文gQ将启动Swing囑Ş界面Q如下图所C,具体的操作过E和DatabaseManager工具cMQ不再重复?/span>
以上是启动hsqldb数据库和创徏表的整个q程Q其它的功能可以通过多次联系卛_掌握。按照以上操作方式,hsqldb自动生一?/span>test的数据库。但是有时候我们需要自己指定数据库Q数据库讉K名,数据库访问端口等Q该如何实现呢,很简单。只要在相对根目录下创徏一?/span>server.properties文g卛_?/span>
创徏自己制定的数据库Q?/span>
1. 首先?/span>E:\hsqldbTest目录下创Z?/span>server.properties文gQ文件内容ؓQ注Q在实际文g中,删除后面的注释内容)Q?/span>
server.port=9001 #指定端口号ؓ9001
server.database.0=file:data/mydb # 在data目录下创?/span>mydb数据?/span>
server.dbname.=mydb #指定数据库名Q?/span>jdbcq接时就是用此名U?/span>
server.silent=true
2. ?/span>E:\hsqldbTest目录下创?/span>runServer2.bat文gQ文件内容ؓ
@java -classpath lib/hsqldb.jar org.hsqldb.Server
3. 双击q行runServer2.bat文gQ将会在data目录下创?/span>mydb数据库,q启动数据库?/span>
4. 双击q行已创建好?/span>runManagerSwing.bat文gQ打开囑Ş理界面Qƈ讄q接?/span>mydb数据库中Q如下图所C:
5. 配置好选项Q点凅R?/span>OK】按钮,卛_q接?/span>mydb数据库,在窗口中可以按照以前的步骤创Q添加记录等操作?/span>
好了Q以上就是整?/span>hsqldb的安装、启动、创{的全过E,在这里特别说明的是,hsqldb.1.8.1.3是用JDK.1.5以上的版本的~译的,所以,如果你用的是低?/span>jdk1.5的版本时Q可能出现异常情况,不能正常使用。另外,即你安装的jdk版本?/span>1.5以上的,可能q会出现异常Q该如何办呢Q此Ӟ保你的hsqldb是在官方|站下蝲的,需要检查你?/span>java的环境变量,׃你的机器可能安装?/span>oracleQ很有可能出现问题,此时只需?/span>%JAVA_HOME%\bin路径攄?/span>path路径的最开_q样Q就不会出现异常情况了?/span>
接下来,我们通过一个具体的javaE序来连接徏立好?/span>mydb数据库,q且?/span>mydb数据库中创徏一?/span>TBL_USERS的表。ƈ插入一条记录?/span>
1. ?/span>E:\hsqldbTest目录下创Z?/span>HsqlDemo.java文gQ内容如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import org.hsqldb.jdbcDriver;
public class HsqlDemo {
public static void main(String[] args) {
try {
Class.forName("org.hsqldb.jdbcDriver");
Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9001/mydb", "sa", "");
if (c != null) {
System.out.println("Connected db success!");
String sql = "CREATE TABLE TBL_USERS(ID INTEGER, NAME VARCHAR, BIRTHDAY DATE);";
Statement st = c.createStatement();
st.execute(sql);
sql = "INSERT INTO TBL_USERS(ID, NAME, BIRTHDAY) VALUES ('1', 'ADMIN', SYSDATE);";
st.executeUpdate(sql);
if (st != null) {
st.close();
}
c.close();
}
} catch(Exception e) {
System.out.println("ERROR:failed to load HSQLDB JDBC driver.");
e.printStackTrace();
return;
}
}
}
2. ?/span>E:\hsqldbTest目录下徏立一?/span>runJava.bat文gQ用来运?/span>HsqlDemo.java。内容如下:
@echo off
set path=D:\Program Files\Java\jdk1.6.0_05\bin # jdk的\?/span>
javac -classpath lib/hsqldb.jar HsqlDemo.java
java -cp lib/hsqldb.jar;./ HsqlDemo # 注意./ 后面的空|./[I格] HsqlDemo
3. 定mydb数据库已l启动,如果没有Q运?/span>runServer2.batQ启动数据库?/span>
4. q行runJava.bat文gQ运行程序,如果无异生,说明已正执行,此时Q可以在mydb.log文g中看到创建的TBL_USERSQ插入的记录Q当Ӟ可以用图形工h看表?/span>
OKQ以上就是所有的hsqldb启动q程和连?/span>jdbc的过E?/span>