数据库

1、数据库的分类及常用数据库

数据库分为关系型数据库和非关系型数据库
关系型:MySQL、Oracle、SqlServer
非关系型:Redis、MemCache、MongoDB、Hadoop

2、简单介绍一下关系数据库三范式

范式就是规范,在设计关系型数据库表时需要遵循的规范。要满足第二范式必须先满足第一范式,要满足第三范式必须先满足第二范式

  • 第一范式(1NF):是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。(列数据的不可分割
  • 第二范式(2NF):要求数据库表中的每个行必须可以被唯一区分,为实现区分通常需要为表加上一列,以存储每个行的唯一标识。(主键
  • 第三范式(3NF):要求一个数据库表中不包含在其它表中以包含的非主关键字信息。(外键
    反三范式:有时为了提高效率,可以设置重复或者可以推导出的字段。

3、事务的四大基本特征(ACID)

事务是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。事务必须满足四大特征:原子性、一致性、隔离性、持久性。

  • 原子性(Atomicity):表示事务内操作不可分割,要么都成功,要么都失败。
  • 一致性(Consistency):要么都成功,要么都失败。后面的失败了要对前面的操作进行回滚。
  • 隔离性(Isolation):一个事务开始后,不能受其他事务干扰。
  • 持久性(Durability):表示事务开始了,就不能终止。

4、MySQL数据库默认的最大连接数?

为什么需要最大连接数?
特定服务器上面的数据库只能支持一定数目同时连接,这时候我们一般都会设置最大连接数(最多同时服务多少个连接),在数据库安装时都会有一个默认的最大连接数100

5、说一下MySQL分页和Oracle分页?

为什么需要分页?
有很多数据时,不可能完全显示数据,需要分段显示。

  • MySQL:使用limit关键字进行分页,limit offset,size,offset表示从哪个索引开始,size表示取多少条数据。
SELECT* FROM emp LIMIT offset,size
  • Oracle:使用伪列 ROWNUM 结合子查询实现,要实现分页查询需要知道两个参数currentPage和lineSize。currentPage表示当前页(cp);lineSize表示每页显示的数据量(ls)。根据当前页(cp)和每页显示的数据量(ls),可以计算出要从数据库中第m条查询到第n条数据的公式:

m=(currentPage-1) * lineSize+1
n=currentPage * linesSize

SELECT *
  FROM (SELECT ROWNUM rn,empno,ename,job,mgr,hiredate,comm,deptno
  FROM emp
  WHERE ROWNUM<=n) temp
  WHERE temp.rn>=m;

6、简单讲一下数据库触发器的使用场景?

触发器,需要有触发条件,当条件满足后执行一些操作。
比如你发了一个动态后自动通知好友,就是在增加动态时增加了一个后触发,然后向通知表中写入条目。

7、简单讲一下数据库存储过程的使用场景?

  • 什么是数据库存储过程?
    存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
  • 数据库存储过程的优点?
    (1) 存储过程只在创建时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,因此使用存储过程可以大大提高数据库执行速度。
    (2) 通常,复杂的业务逻辑需要多条 SQL 语句。这些语句要分别地从客户机发送到服务器,当客户机和服务器之间的操作很多时,将产生大量的网络传输。如果将这些操作放在一个存储过程中,那么客户机和服务器之间的网络传输就会大大减少,降低了网络负载。
    (3) 存储过程创建一次便可以重复使用,从而可以减少数据库开发人员的工作量。
    (4) 安全性高,存储过程可以屏蔽对底层数据库对象的直接访问,使用 EXECUTE 权限调用存储过程,无需拥有访问底层数据库对象的显式权限。

正是由于存储过程的上述优点,目前常用的数据库都支持存储过程,例如 IBM DB2,Microsoft SQL Server,Oracle,Access 等,开源数据库系统 MySQL 也在 5.0 的时候实现了对存储过程的支持。

  • 存储过程的创建和调用?
create procedure 存储过程名字()
begin
SQL语句/逻辑
end;

call 存储过程名字();
或
call 存储过程名字(@参数1,@参数2,@参数3,...);

8、用jdbc怎么调用存储过程?

(1) 加载驱动
(2) 获取连接
(3) 设置参数
(4) 执行
(5) 释放连接

9、简单说一下对jdbc的理解

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。


绘图1.png

10、写一个简单的jdbc程序

//1. 注册驱动;(只需要注册一次)
//2. 建立连接;
//3. 创建执行的sql语句;
//4. 执行语句;
//5. 处理执行结果;
//6. 释放资源;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet; 
import com.mysql.jdbc.Statement;
 
public class JdbcTest {
 
    public static void main(String[] args) throws Exception {
        test();
    }
 
    public static void test() throws Exception {
        //1. 注册驱动
//      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//      System.getProperty("jdbc.driver", "con.mysql.jdbc.Driver");
        Class.forName("com.mysql.jdbc.Driver");//推荐方式
 
        //2. 建立连接
        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "123456";
        Connection conn = (Connection)DriverManager.getConnection(url, user, password);
 
        //3. 创建执行的sql语句
        Statement st = (Statement) conn.createStatement();
 
        //4. 执行语句
        ResultSet rs = st.executeQuery("select * from user");
        
        //5. 处理执行结果
        while (rs.next()) {
            System.out.println(rs.getObject(1));
        }
 
        //6. 关闭连接,释放资源
        rs.close();
        st.close();
        conn.close();
    }
 
}

11、JDBC 中的PreparedStatement相比Statement的好处?

大多数情况下都使用PreparedStatement代替Statement。
(1) PreparedStatement是预编译的,比Statement速度快。
(2) 代码的可读性和可维护性比较好。虽然用PreparedStatement来代替Statement会使代码多出几行,但这样的代码无论从可读性还是可维护性上来说.都比直接用Statement的代码高很多档次。
(3)安全性比较高。PreparedStatement可以防止SQL注入攻击,而Statement却不能。

12、数据库连接池的作用

(1) 限定数据库连接的个数,不会导致由于数据库连接过多导致系统运行缓慢或崩溃。
(2) 数据库连接池不需要每次都去创建或销毁,节约了资源。
(3) 数据库连接池不需要每次都去创建,响应时间更快。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容