建议在http://www.w3school.com.cn/sql/index.asp这个网站上先系统的在数据库中用sql操作一遍所有的基础sql语句。
/*(若oracle数据库不了解,可以用sql)
test1
ID Varchar2(6) 主键
NAME Varchar2(15)
Test2
Use_ID Varchar2(6) 主键关联TEST1的主键的ID
PASSword Varchar2(10)
*/
--创建TEST1
CREATE TABLE test1(
ID VARCHAR(6) PRIMARY KEY,
NAME VARCHAR(15)
);
--创建TEST2
CREATE TABLE TEST2(
USE_ID VARCHAR(6),
PASSWORD VARCHAR(10)
);
--添加外键
ALTER TABLE TEST2
ADD CONSTRAINT FK_TEST2 FOREIGN KEY(USE_ID) REFERENCES TEST1(ID);
--用JAVA评议连接数据库,并查询出表TEST1的全部记录的前20条。
SELECT TOP 20 * FROM TEST1; --如果查询后N条数据可以用order by ... desc;再取TOP N;
--用一条SQL语句查询ID,NAME,PASSWORD,并且当PASSWORD为空时,用NO PASSWORD代替。
SELECT T1.ID,T1.NAME,ISNULL(T2.PASSWORD,'NO PASSWORD') AS PASSWORD FROM TEST1 T1,TEST2 T2;
补充部分:
select top X * from table_name --查询前X条记录,可以改成需要的数字。
select top n * from (select top m * from table_name order by column_name ) a order by column_name desc --查询第N到M条记录。常用的分页也是这种方式。
例如常用的分页方式:
declare @page int
declare @row int
set @page=2 --页数
set @row=3 --每页展示行数
select top (@row) * from (select top (@row*@page) * from table_name order by id ) a order by id desc --最基本的分页方式,改变@row和@page达到分页效果
ORACLE 的做法:
ORACLE查询前十条的方法:
Sql代码
select * from table_name where rownum<X --X为前多少条记录
select * from (select a.*,a.rownum rn from (select * from table_name) a where a.rownum<M) where rn>n --这句就是从n到m也的数据,分为三层结构
MySQL查询前5条方法:
(假设一个表为users表,这里作为子查询时要加入别名不然会出错,还有一点要注意的是order by在limit前面,不然还没出结果前就说要前几条,怎么搞嘛,所以limit要放最后。):
Sql代码
select * from (select * from users order by id limit 0 , 10) partOfUsers order by id desc limit 0 , 5;