数据库day05复习+JDBC练习


day04作业
–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练习******

package cn.tedu.jbdc;

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

//JDBG的入门案列:JDBC是java连接数据库的一个标准,本质上就是一个工具类
public class Test {
    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 emp";//查询dept表的所有数据
        ResultSet r =s.executeQuery(sql);//executeQuery执行查询SQL,
        //5.处理数据库返回的结果
        while (r.next()){//next()判断resuliset中有数据
            int a = r.getInt(1);//获取第一列,整数值
            String b = r.getString(2);//获取第二列的,字符串
            String c1 = r.getString(3);//获取第三列的,字符串值
            System.out.println(a+b+c1);
        }
        //6.释放资源
        r.close();//释放结果集
        s.close();//释放传输器
        c.close();//释放连接器
    }
}

作业:练习代码敲3遍

/* 模拟用户登录 1,发起SQL:select * from tb_user where name='jack' and password='321' 2,判断result,如果有结果就登录成功,没结果就登录失败 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值