黑马程序员技术交流社区

标题: day16 学习笔记分享 [打印本页]

作者: kuqi3712    时间: 2017-12-28 21:37
标题: day16 学习笔记分享
查询对结果进行排序
                默认是升序
                升序: order by 列名[asc]
                降序: order by 降序[desc]
               
聚合
                可以对一列进行计算,返回单一的值
                count
                select count (*) from 表名
                select sum(money) from 表名
                select max  最大值
                select avg 平均数
                这些方法的后面不能有空格
               
                SELECT COUNT(*),department FROM student GROUP BY department;
               
                SELECT 列名1,列名2  FROM 表名 order BY 列名1,列名2 desc; 2种排序
                排序语句一定是在sql语句的末尾
               
                select truncate(avg(列名),2) from 表名 计算平均值后保留2位
               
                查询后 在count 列的后面有一个department列
                分组之后再次筛选 用having 关键字
                where 与 having 区别
                where 是分组之前过滤 having 是分组之后过滤
               
JDBC:
                可以理解为java提供的一套API,可以为多种数据库提供统一的访问.是java访问数据库的规范
       
        JDBC的开发步骤:
                !.注册驱动
                告知jvm使用的是哪一个数据库驱动
                //使用 java.sql.DriverManager的静态方法registerDriver(Driver driver)
                driver 是一个接口,参数传递 MySQL驱动程序中的实现类
                通过看源码发现这种方法 注册了两次
                解决办法
                 Class.forName("com.mysql.jdbc.Driver");
                2.获得连接
                使用jdbc中的类完成对MySQL数据库的连接
                 //url: 数据库地址 jdbc:mysql://链接主机ip:端口号//数据库名字
                 String url="jdbc:mysql://localhost:3306/mydatabase";
                 String username="root";
                 String password="root";
                 Connection connection=DriverManager.getConnection(url,username,password);
                3.获得语句执行平台
                通过连接对象获取对SQL语句的执行者对象
                //获取statement对象
                Statement statement= connection.createStatement();
                4.执行sql语句
                使用执行者对象,向数据库执行SQL语句
                 //int executeUpdate(String sql) 执行数据库中的sql语句 仅限 insert delete update
                 //返回值int是操作成功数据表的行数
                int row= statement.executeUpdate("NSERT INTO sort(sname,sprice,sdesc) VALUES ('汽车用品',200000,'疯狂涨价')");
                System.out.println(row);
                statement.executeQuery(sql);查询
               
                注入攻击
                密码处填写 ' or 1='1
                防止注入攻击
                PreparedStatement
                set
                可以多次高效的执行SQL语句
                //?是占位符
                String sql = "SELECT * FROM pass WHERE puser=? AND ppassword=?";
                PreparedStatement pstatement=connection.prepareStatement(sql);
                //PreparedStatement中的set方法 设置占位符
                pstatement.setObject(1, user);
                pstatement.setObject(2, pass);
                //用PreparedStatement获取结果集不用传sql的参数
                ResultSet rs = pstatement.executeQuery();
               
                prepareStatement是connection接口中的方法
               
                获取数据库执行后的结果
                // boolean next()  
                5.处理结果
               
                6.释放资源
                一堆的close
                statement.close();
                connection.close();
               
               
        使用JDBC查询表 获取结果集


作者: 陈文老师    时间: 2017-12-29 09:27

作者: wheat    时间: 2017-12-29 10:11
不错哦哦

作者: 渝小妹    时间: 2017-12-29 10:28
总结很不错哟~继续加油
作者: 1414225997    时间: 2017-12-29 13:57
保持,继续努力
作者: xiongliu    时间: 2018-1-2 10:21
新年快乐~~~~·
作者: 渝小妹    时间: 2018-1-2 10:23
成功不是“一朝一夕”的事,需要的是“一如既往”的坚持,“一成不变”的乐观,“一门心思”的奋斗,“一鸣惊人”的能力,“一丝不苟”的态度,只有这样,2018你才能取得“一飞冲天”的骄人成绩。
作者: 狸大大    时间: 2018-1-2 14:35
新年快乐    继续加油




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2