现在的位置: 首页 > 综合 > 正文

数据库sql基础

2013年09月18日 ⁄ 综合 ⁄ 共 1376字 ⁄ 字号 评论关闭

建议在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;  



抱歉!评论已关闭.