cgb2108-day05 梦里梦外; 2022-09-14 00:29 152阅读 0赞 ### 文章目录 ### * * 一,作业 * * \--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表里的数据 /* 1,创建表,并插入数据 2,利用JDBC,查询数据 CREATE TABLE tb_user( id int PRIMARY KEY auto_increment, name varchar(20) default NULL, password varchar(20) default NULL ) insert into tb_user values(null,'jack','321') */ 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();//释放连接器 } /* 模拟用户登录 1,发起SQL:select * from tb_user where name='jack' and password='321' 2,判断result,如果有结果就登录成功,没结果就登录失败 */ private static void method2() { } }
相关 cgb2108-day07 文章目录 一,改造JDBC释放资源 \--1,完善工具类 \--2,修改测试类 二,HTML 绝地灬酷狼/ 2022年09月14日 15:27/ 0 赞/ 169 阅读
相关 cgb2108-day01 文章目录 一,数据库 \--1,概述 \--2,安装 \--3,数据库结构 二, 雨点打透心脏的1/2处/ 2022年09月12日 13:57/ 0 赞/ 136 阅读
相关 cgb2106-day05 文章目录 一,视图 \--1,概述 \--2,测试 二,SQL练习 \--1,测试 客官°小女子只卖身不卖艺/ 2021年09月11日 03:20/ 0 赞/ 162 阅读
相关 cgb2105-day05-Oracle 文章目录 一,SQL的语法练习 \--1,测试 二,Oralce的过气技术 \--1,虚表 谁践踏了优雅/ 2021年09月11日 02:30/ 0 赞/ 195 阅读
还没有评论,来说两句吧...