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

数据库基础

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据库基础

1、order by  与 group by 的用法

        order by是排序,默认升序(asc)  desc  降序    order by  子句总是select语句的最后一个字节     可以使用索引号排序:

SELECT * FROM employee ORDER BY 1 ASC,2 DESC;

oracle排序会过滤null值:

null值在前面显示(nulls first)   在后面显示:nulls last

SELECt * FROM employee ORDER BY 1 ASC,2 DESC NULLS First;

在order by 排序时可以根据函数排序:

以下语句使用ORDER BY子句中的UPPER()函数来区分客户名称的大小写

SELECt department_id, last_name

FROM employees

ORDER BY UPPER( last_name );

group by  分组

        在group之后不能使用where   可以使用having

2、存储过程与触发器

            存储过程可以说是一个记录集,由一组sql语句组成,可以对但表或多表进行增删改查的操作,将这组sql语句起一个名字,我们需要的时候调用他就可以了,

            存储过程是提前预编译过的,所以执行效率是优于sql语句的,

            存储过程分为:

                    IN  : 输入参数

                    OUT :输出参数

                    IN OUT :输入输出参数

            总之存储过程是一次编译,多次运行,大大提高了运行的效率

    

    触发器:

            触发器是也提前预编译的语句,触发器是不需要调用的,他是由一个触发事件触发执行的sql语句

            触发器语句的组成:

                    监视的表

                 监视动作:insert     update     delete

                 监视时间(之前或之后) 

                 触发的事 :触发之后执行的sql

                triger   关键字

3、数据库的三范式

    1、数据的每一向都是不可分割的、原子性

    2、不能存在非关键字段对关键子段键的部分函数依赖,必须是完全函数依赖

    3、非主键列不能传递依赖于主键属性(每一个表都不能包含其他表的非主关键子学习)

      

4、数据库的优化

        使用预编译 

        有外键约束会影响插入和删除的性能(如果可以保证数据的完整性,可以去掉外键)

        sql语句全部大写

        在经常查询列上面使用索引

        如果可以不链接表查询,就经量不要链接表

5、数据库的分页

    Mysql分页:

mysql分页公式:

page (第几页)

rows  (拿几条)

从第几条开始拿     (page-1)* rows

SELECT * FROM EMPLOYEE LIMIT 0,3

Oracle分页:

使用rownum    第一种使用一个子查询不需要排序。第二种使用俩个子查询  使用order  by   排序

Oracle分页公式

从第九条开始拿    (page-1)* rows

小于多少条            page * rows + 1

6、索引

         

7、为什么要用 ORM? 和 JDBC 有何不一样?

    orm是一种思想,是将Object转换成数据库中的记录,或是将数据库中的记录转换为Object,我们可以使用Jdbc实现这一思想,现在有许多的orm工具,他们底层使用jdbc来实现orm,现在使用较多的orm工具是Hibernate

8、Class.forName的作用?为什么要用?

            Class是通过Java的反射机制按参数中指定的字符串形式的类名去搜索加载相应的类,如果该类的字节码已经被加载过,则返回该字节码对应的Class实例对象,否则,按类加载器的委托机制去搜索和加载该类,如果所有的类加载器都无法加载到该类,则抛出ClassNotFoundException异常,然后使用可以使用Class字节码的newInstance方法去创建该类的实例对象,

    有时候我们在程序中使用的具体类在开发时无法确定,只有在程序运行时才能确定,这时候就需要Class.forName动态的加载该类,

例如Spring的IOC 中每次依赖注入的具体类就是这样配置的

9、用 JDBC 如何调用存储过程

package com.zxl.mysql;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class Demo1 {
     public static void main(String[] args) throws Exception {
         Class.forName("com.mysql.jdbc.Driver");
         Connection conn = DriverManager.getConnection("jdbc:mysql:///test", "root", "root");
         CallableStatement call;
         ResultSet rs;
         String sql = "{CALL proc_queryUser(?)}";
         call = conn.prepareCall(sql);
         call.setString(1, "张");
         rs = call.executeQuery();
         List> list = new ArrayList>();
         while (rs.next()) {
              List li = new ArrayList();
              li.add(rs.getInt(1));
              li.add(rs.getNString(2));
              li.add(rs.getString(3));
              list.add(li);
         }
         for (List l : list) {
              for (Object s : l) {
                  System.err.println(s);
              }
         }
     }
} 

 

10、注册 Jdbc 驱动程序的三种方式

        这里注册jdbc驱动程序的三种方式分别是Java反射机制的获取class对象的方式

        分别是:

            Class.forName()

            类名.class

            对象.class     Object的方法

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号