数据库

1.MySQL和Oracle的区别
    MySQL是直接在SQL语句中写"select... from ...where...limit  x, y",有limit就可以实现分页;而Oracle则是需要用到伪列ROWNUM和嵌套查询,limit参数含义,limit 1.a,b:从第a行之后(不包含a)读取b行数据
    2.最重要的区别,MySQL是轻量型数据库,并且免费,没有服务恢复数据。 Oracle是重量型数据库,收费,Oracle公司对Oracle数据库有任何服务。
2.rowid和rownum区别
    rowid 用于定位数据表中某条数据的位置,是唯一的、也不会改变
    rownum 表示查询某条记录在整个结果集中的位置, 同一条记录查询条件不同对应的 rownum 是不同的而 rowid 是不会变的
3.事务级别
    Read uncommitted 读未提交
      会出现:脏读(发生事务回滚),不可重复读(两次读之间被修改),幻读(两次查询之间数据被修改)
    Read committed 读提交
      会出现:不可重复读(两次读之间被修改),幻读(两次查询之间数据被修改)
    Repeatable read 重复读
      会出现:脏读(发生事务回滚),不可重复读(两次读之间被修改),幻读(两次查询之间数据被修改)
    Serializable 序列化
4.数据库存储过程
    create or replace procedure p_stu is
      v_sql varchar2(2000);
      cursor class_cursor is
        select distinct class from student;


    begin
      v_sql := 'select name';
      for c in class_cursor loop
        v_sql := V_SQL || ',' || 'SUM(DECODE(CLASS,''' || c.CLASS ||
                 ''',score,0)) AS ' || C.CLASS;
      end loop;
      v_sql := v_sql || ' from student group by name ';
      v_sql := 'CREATE OR REPLACE VIEW RESULTrrr  AS '||V_SQL; --创建视图
      DBMS_OUTPUT.PUT_LINE(v_sql); 
      execute immediate v_sql; -- 执行动态sql 语句
    end;
          
    begin
      p_stu;
    end;
5.sql调优
    1.mysql通过explain 查询执行计划,
    2.尽量少or,尽量用 union all 代替 union
    3.避免类型转换
    4.对于筛选条件尽可能提前过滤
    5.避免在where中使用!=, >, <操作符
    6.in和not in,对连续的数值尽量用between
    7.避免在where子句中对字段进行表达式操作
    8.避免在where子句中对字段进行函数操作
    9.索引不是越多越好,一个表的索引数最好不要超过6个
    10.能用exit就用这个
    11.通过分区,分库,分表
        分区:
            1.通过show variables like '%partition%';查询当前mysql是否支持分区
            2.根据range来分区
            partition by range(store_id)(
                partition p0 values less than (6),
                partition p1 values less than (11),
                partition p2 values less than (16),
                partition p3 values less than (21)
            );
    
6.数据库连接池
    一般使用druid
7.jdbc使用步骤
    注冊载入JDBC驱动程序Class.forName(DriverName);
    得到连接对象 Connection con =DriverManager.getConnection(url ,username , password ) ;     
    创建 Statement对象 
        Statement stmt = con.createStatement(); 
        PreparedStatement pstmt=con.prepareStatement(sql);
        CallableStatement cstmt =con.prepareCall("{CALLdemoSp(? , ?)}") ;   
    运行sql语句ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
    处理结果
    关闭资源释放资源

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值