import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Test {
static Connection dbConn=null;
public static void main(String[] args) {
String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL="jdbc:sqlserver://localhost:1433;";
String userName="TangHao";
String userPwd="tanghao6.1";
try {
Class.forName(driverName);
dbConn=DriverManager.getConnection(dbURL,userName,userPwd);
System.out.println("数据库连接成功");
} catch ( Exception e) {
// TODO: handle exception
e.printStackTrace();
System.out.println("连接失败");
}
Statement sta = null;
ResultSet res = null;
Collection coll= new ArrayList<String>();
/*
数据查询的sql语句
显示列:所有字段(列)
数据库:超级数据库
数据表:超级表1
条件:姓别='女'
*/
String selSql = "select distinct * from 超级数据库.. 超级表1 where 性别='女';";
try {
sta=dbConn.createStatement();
res=sta.executeQuery(selSql);
while (res.next()) //将查找获取的结果存进集合
{
((ArrayList) coll).add(res.getString("编号"));
((ArrayList) coll).add(res.getString("姓名"));
((ArrayList) coll).add(res.getString("年龄"));
((ArrayList) coll).add(res.getString("性别"));
((ArrayList) coll).add(res.getString("工资"));
((ArrayList) coll).add(res.getString("出生日期"));
}
int i=0;
for (Iterator iter=coll.iterator();iter.hasNext();) //将集合中的信息打印
{
System.out.print(iter.next()+" ");
i++;
if (i%6==0) //六条信息换行
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
运行结果:
由于除了查询的sql语句外,都是重复的,所以后面只贴出执行查询的sql语句代码段
/*
数据查询的sql语句
显示列:编号、姓名
数据库:超级数据库
数据表:超级表1
条件:年龄在18-50岁之间
*/
String selSql = "select distinct 编号,姓名 from 超级数据库.. 超级表1 where 年龄>=18 and 年龄<=50;";
运行结果:
/*
数据查询的sql语句
显示列:年龄
数据库:超级数据库
数据表:超级表1
条件:性别='男'
*/
String selSql = "select 年龄 from 超级数据库.. 超级表1 where 性别='男';";
运行结果:
可以看到这里出现了重复项(3个20岁),如果在实际应用中我们不希望有重复行出现,可以使用distinct关键字:
String selSql = "select distinct 年龄 from 超级数据库.. 超级表1 where 性别='男';";
运行结果:
/*
数据查询的sql语句
显示列:所有列
数据库:超级数据库
数据表:超级表1
条件:性别='女'
显示搜索结果的前3行
*/
String selSql = "select top 3 * from 超级数据库.. 超级表1 where 性别='女';";
运行结果:
/*
数据查询的sql语句
显示列:所有列
数据库:超级数据库
数据表:超级表1
条件:性别='女'
显示搜索结果的百分之十行
*/
String selSql = "select top 10 percent * from 超级数据库.. 超级表1 where 性别='女';";
运行结果:
/*
条件:姓吴(姓名以吴开头的)
like表示字符串的匹配查询,%通配0个或者多个字符的任意字符串
*/
String selSql = "select * from 超级数据库.. 超级表1 where 姓名 like '吴%';";
/*
条件:姓名中带有三字的
like表示字符串的匹配查询,%通配0个或者多个字符的任意字符串
*/
String selSql = "select * from 超级数据库.. 超级表1 where 姓名 like '%三%';";
/*
条件:名字为两个字的
like表示字符串的匹配查询,_通配任何单个字符
*/
String selSql = "select * from 超级数据库.. 超级表1 where 姓名 like '__';";
/*
条件:名字开头为赵钱孙李
like表示字符串的匹配查询,[]通配指定范围([赵-李])或集合([赵钱孙李])中的任何单个字符
*/
String selSql = "select * from 超级数据库.. 超级表1 where 姓名 like '[赵钱孙李]%';";
/*
条件:名字开头不为赵钱孙李
like表示字符串的匹配查询,[]通配不属于指定范围([赵-李])或集合([赵钱孙李])中的任何单个字符
*/
String selSql = "select * from 超级数据库.. 超级表1 where 姓名 like '[^赵钱孙李]%';";
/*
条件:年龄在20-50之间,包含20和50(等价年龄>=20 and 年龄<=50)
*/
String selSql = "select * from 超级数据库.. 超级表1 where 年龄 between 20 and 50;";
/*
条件:年龄在不20-50之间
*/
String selSql = "select * from 超级数据库.. 超级表1 where 年龄 not between 20 and 50;";
/*
条件:年龄小于等于25岁
查询结果按年龄的降序排列
order——对结果进行排序(默认升序) bydesc——降序 asc——升序
*/
String selSql = "select * from 超级数据库.. 超级表1 where 年龄 <=25 order by 年龄 desc;";
/*
数据查询的sql语句
查询年龄列的最大值,最小值,平均值,年龄和,年龄列的行数。
聚集函数:max()返回某列最大值、min()返回某列最小值、返回某列平均值、avg返回某列平均值
sum()返回某列值的和、count()返回某列的行数
*/
String selSql = "select max(年龄) 最大年龄,min(年龄) 最小年龄,avg(年龄) 平均年龄," +
"sum(年龄) 年龄和, count(年龄) 行数 from 超级数据库.. 超级表1;";
/*
按照年龄分组,显示各个年龄的人的工资和
group by——分组
*/
String selSql = "select 年龄,sum(工资) 工资总和 from 超级数据库.. 超级表1 group by 年龄;";
运行结果:
/*
查询人数大于1人的人的年龄
group by——分组 having——限制条件
*/
String selSql = "select 年龄 from 超级数据库.. 超级表1 group by 年龄 having count(*)>1;";
/*
查询与张三相同年龄的人的信息(含张三)
嵌套查询 内层查询返回的是“姓名为张三的人的年龄”,将其放入到外层进行查询,
得到的是年龄是“姓名为张三的人的年龄”的人的所有信息
*/
String selSql = "select * from 超级数据库.. 超级表1 where 年龄 in
(select 年龄 from 超级数据库.. 超级表1 where 姓名='张三');";
/*
查询年龄为20岁,工资不高于10000的人的信息
except——差操作
*/
String selSql = "select * from 超级数据库.. 超级表1 where 年龄=20 except select * from 超级数据库.. 超级表1 where 工资>10000;";
/*
查询年龄为20岁,且工资高于10000的人的信息
intersect——交操作
*/
String selSql = "select * from 超级数据库.. 超级表1 where 年龄=20 intersect select * from 超级数据库.. 超级表1 where 工资>10000;";
/*
查询年龄为20岁和工资高于10000的人的信息(自动去掉重复元组,如果保留重复元组,用union all操作符)
union——并操作
*/
String selSql = "select * from 超级数据库.. 超级表1 where 年龄=20 union select * from 超级数据库.. 超级表1 where 工资>10000;";