cgb2107-第二阶段-day05-jdbc

一.扩展视图

-1.概述

可视化的表,视图当做是一个特殊的表,是指,把sql执行的结果,直接缓存到了视图中.
下次还要发起相同的sql,直接查视图
使用: 1. 创建视图 2.使用视图

-2 测试

create view 视图名 as sql语句;
select * from 视图名;

#视图: 就是一个特殊的表,缓存上次的查询结果
#好处是提高了sql的复用性,坏处是占内存无法被优化

#1.创建视图
create view emp_view3 as
    select * from emp where ename like '%a%' #模糊查询,名字里有包含a的
#使用视图
select * from emp_view3;

二.sql练习

1. 测试

#统计每个岗位的老师有几个人
select count(1) ,prof from teachers
group by  prof
having prof = '副教授';

#统计每个系最年长的老师
select depart,min(tbirthday) from teachers
group by depart;

#查询大于平均年龄的老师
select avg(tbirthday) from teachers;
select * from teachers where tbirthday < (select  avg(tbirthday) from teachers);

#查询男老师能上的课程
#子查询: in子查询, 因为第一次查到了多个结果
select cname
from courses
where tno in (select tno from teachers where tsex = '男');
# 连接查询: 小表驱动大表,高效
select courses.cname
from courses
         inner join teachers t on courses.tno = t.tno and t.tsex = "男";
#笛卡尔积
select c.cname
from teachers t,
     courses c
where t.tno = c.tno
  and t.tsex = '男';
#了解insert into
# 给指定列插入指定值,多个列名用逗号隔开,多个值也是用逗号隔开
insert into dept(deptno) values ('java开发部')

三.sql优化

-1.sql的执行顺序

  1. from [left_table] 选择表
  2. on <join_condition> 链接条件
  3. <join_type> join <right_table> 链接
  4. WHERE <where_condition> 条件过滤
  5. GROUP BY <group_by_list> 分组
  6. agg_func (COLUMN OR expression),…聚合
  7. HAVING <having_condition> 分组过滤
  8. SELECT(9) DISTINCT COLUMN…选择字段.去重
  9. ORDER BY <order_by_list> 排序

-2 总结

  1. 用字段名代替*
  2. where里能用and就不用or
  3. 设置字段类型时,能用varchar就不用char
  4. 字段值尽量用数字代替字符串
  5. 给常用来作为查询条件的字段,设计索引,但是单表的索引控制在5个以内
  6. 观察sql的性能,使用explain关键字,本质上就是看有没有用到索引
  7. 模糊查询, where name like ‘a%’, 是高效的写法,甚至可以让索引生效
  8. where name = 123 会导致索引失效
    where name =‘123’ 会让name字段的索引生效

四. jdbc

-1 . 概述

全程是java database connectivity,专门用来通过java程序操作数据库
jdbc还是一套标准,支持对各种数据库产品的操作
MySQL数据库使用jdbc:提供了一个jar包(很多工具类)

-2 使用步骤

1.创建工程,导入MySql提供的jar包并编译: 把jar包复制到工程里,编译jar包
2.通过java连接数据库,需要指定一些连接数据库的参数: 用户名,密码,端口号,ip地址,指定库
3.发起sql语句并执行
4.处理结果集

-3.入门案例

package zhu.jdbc;

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

/**
 * @作者: 朱学长
 * @时间: 2021/9/1 0001 星期三
 */
public class test1 {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");

        String url = "jdbc:mysql://localhost:3306/cgb2022";
        Connection conn = DriverManager.getConnection(url,"root","123456");
        Statement st = conn.createStatement();
        String sql = "select * from dept";
        ResultSet rs = st.executeQuery(sql);
        while(rs.next()){
            for (int i = 1; i <= 3; i++) {
                System.out.println(rs.getObject(i));
            }
        }
        rs.close();
        st.close();
        conn.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值