栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

cgb2108-day05

Java 更新时间:发布时间: 百科书网 趣学号

文章目录
    • 一,作业
      • --1,测试
    • 二,SQL面试题
      • --1,测试
    • 三,JDBC
      • --1,概述
      • --2,使用步骤
      • --3,入门案例
      • --4,JDBC的练习

一,作业 –1,测试
#SQL的练习:
#练习1:查询部门编号是1的员工姓名dept emp
SELECt ename FROM emp WHERe deptno = (
  SELECt deptno FROM dept WHERe dname='java开发部'
)
#练习2:查询员工姓名叫jack的部门信息
SELECt * FROM dept WHERe deptno = (
 SELECt deptno FROM emp WHERe ename='jack'
)
#练习3:查询岗位是总监所在的部门信息
SELECt * FROM dept WHERe deptno=(
 SELECt deptno FROM emp WHERe job='总监'
)
#练习4:列出java开发部 部门下的所有员工的信息
SELECt * FROM emp WHERe deptno=(
 SELECt deptno FROM dept WHERe dname='java开发部'
)
#练习5:查询部门地址在北京和广州的员工信息
#in形式的子查询:因为子查询中查询出来多个结果,必须用in不能用=
SELECt * FROM emp WHERe deptno IN(
 #select deptno from dept where loc='北京' or loc='广州'
 SELECt deptno FROM dept WHERe loc IN ('北京','广州')#简写,效果同上
)
二,SQL面试题 –1,测试
#SQL面试题
#1.报错,emp表中没有id字段
SELECt * FROM emp WHERe id=100 
#2.模糊查询,最好指定开始元素,否则索引失效
SHOW INDEX FROM emp ; #查看表里的索引,确定了ename是有索引的
EXPLAIN #查看了possible_keys是有值的就是索引生效了
SELECt * FROM emp WHERe ename='jack' #索引生效
EXPLAIN
SELECt * FROM emp WHERe ename LIKE 'j%' #索引生效
EXPLAIN
SELECt * FROM emp WHERe ename LIKE '%j' #索引失效
EXPLAIN
SELECt * FROM emp WHERe ename LIKE '%j%' #索引失效
#3.查询员工编号[100,300]范围内的数据
SELECt * FROM emp WHERe empno BETWEEN 100 AND 300
#4.综合排序order by
#按照名字降序,按照sal升序,默认就是升序asc
SELECt * FROM emp ORDER BY ename DESC,sal ASC
#5.分组:查询学生表,每个班级的总人数,只要95033班的数据
SELECt COUNT(1),class FROM students 
#当查询结果中出现了聚合列(用了聚合函数)和非聚合列,必须分组
GROUP BY class #按照非聚合列分组
HAVINg class=95033 #分组后的过滤,使用having
#5.1 比上面的一句SQL要高效
SELECt COUNT(1),class FROM students
WHERe class=95033#分组前的过滤,使用where(不能用别名,聚合函数)
#当查询结果中出现了聚合列(用了聚合函数)和非聚合列,必须分组
GROUP BY class #按照非聚合列分组
#6.子查询:查询>平均工资的员工信息
SELECt * FROM emp WHERe sal>(
 SELECt AVG(sal) FROM emp
)
#6.1 查询最高薪的员工姓名
SELECt ename FROM emp WHERe sal=(
 SELECt MAX(sal) FROM emp 
)
#7. SQL中小数的精确处理: round()四舍五入
SELECt AVG(comm) FROM emp #850.175000
#查询平均值并保留两位小数
SELECt ROUND(AVG(comm)) FROM emp#850,四舍五入取整
SELECt ROUND(AVG(comm),2) FROM emp#850.18,可以指定小数位数
#8. 查询学生的年龄
SELECt sname,YEAR(NOW())-YEAR(sbirthday) age 
FROM students
#9. 分页:limit 3 #分页,取前3条
LIMIT 2,3 #分页,从第三条开始取,总共取3条
#10. 整合order by和limit,获取最高分的数据
SELECt * FROM scores ORDER BY degree DESC LIMIT 1

三,JDBC –1,概述

是简称,全称是java database connectivity,专门用来完成 java程序 和 数据库 的连接的技术.

–2,使用步骤

1,导入jar包(使用JDBC提供了丰富的工具类)
2,提供连接数据库的参数(用户名root 密码root 端口号3306)
3,在java程序中,发起SQL语句操作数据库
4,如果数据库有查到的结果,返回给java程序

–3,入门案例

1,创建project: File - New - Project - 选择java - next - next - 输入工程名称 - Finish
2,导入jar包:
找到磁盘里的mysql-connector-java-5.1.32.jar复制,粘贴到Project里.
在IDEA里,选中jar包,右键编译(add as library…),ok
检查是否编译成功:看到IDEA里的jar包可以被点开了
3,编写java代码

package cn.tedu.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

//JDBC的入门案例:
//JDBC是java连接数据库的一个标准,本质上就是一堆的工具类
public class Test1 {
    public static void main(String[] args) throws Exception {
        //1,注册驱动
        Class.forName("com.mysql.jdbc.Driver");//全路径
        //2,获取数据库的连接(用户名/密码)
        //jdbc连接mysql数据库的协议//本机:端口号/数据库的名字
        String url="jdbc:mysql://localhost:3306/cgb2108" ;
        Connection c = DriverManager.getConnection(
                url,"root","root");
        //3,获取传输器
        Statement s = c.createStatement();
        //4,执行SQL,并返回结果集
        String sql="select * from dept" ;//查询dept表的所有数据
        ResultSet r = s.executeQuery(sql);//executeQuery执行查询的SQL,executeUpdate执行增删改查的SQL
        //5,处理数据库返回的结果
        while(r.next()){//next()判断resultset中有数据吗
            //getXxx()获取resultset中的数据
            int a = r.getInt(1);//获取第1列的 整数值
            String b = r.getString(2);//获取第2列的 字符串值
            String c1 = r.getString(3);//获取第3列的 字符串值
            System.out.println(a+b+c1);
        }
        //6,释放资源
        r.close();//释放结果集
        s.close();//释放传输器
        c.close();//释放连接器
    }
}

–4,JDBC的练习
package cn.tedu.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

//需求:利用JDBC,查询tb_user表里的数据

public class Test2 {
    public static void main(String[] args) throws Exception {
        method();//查询tb_user表里的数据
        method2();//模拟用户登录
    }
    //查询tb_user表里的数据
    private static void method() throws Exception{
        //1,注册驱动
        Class.forName("com.mysql.jdbc.Driver");//全路径
        //2,获取数据库的连接(用户名/密码)
        //jdbc连接mysql数据库的协议//本机:端口号/数据库的名字
        String url="jdbc:mysql://localhost:3306/cgb2108" ;
        Connection c = DriverManager.getConnection(
                url,"root","root");
        //3,获取传输器
        Statement s = c.createStatement();
        //4,执行SQL
        ResultSet r = s.executeQuery("select * from tb_user");
        //5,解析结果集
        while(r.next()){//判断r有数据
            //获取r的数据
            int a = r.getInt("id");//获取表里的id字段的值
            String b = r.getString("name");//获取表里的name字段的值
            String c1 = r.getString("password");//获取表里的password字段的值
            System.out.println(a+b+c1);
        }
        //6,释放资源
        r.close();//释放结果集
        s.close();//释放传输器
        c.close();//释放连接器
    }


    
    private static void method2() {
    }
}

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/280954.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号