JDBC操作数据库(SQL server)——查询数据代码

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;";

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值