`
zengshaotao
  • 浏览: 787015 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据库常见面试知识

    博客分类:
  • SQL
 
阅读更多
一。SQL语句优化的策略都有哪些:

1.建表的时候。应尽量建立主键,根据主键查询数据;
2.大数据表删除,用truncate table代替delete。
3.合理使用索引,在OLTP应用中一张表的索引不要太多。组合索引的列顺序尽

量与查询条件列顺序保持一致;对于数据操作频繁的表,索引需要定期重建,

以减少失效的索引和碎片。
4.查询尽量用确定的列名,少用*号
5.使用where条件命中索引
6.将能过滤大量数据的where条件放到where条件集合的最前门
7.对于大量的字符匹配,要使用exist,用in拼接的话容易造成sql被无端截取

二。数据库表关联:

分了内连接和外连接。内连接也就是相等连接
外连接分为左外连接和右外连接。

1. LEFT OUTER JOIN:左外关联
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id);

等价于
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id=d.department_id(+);

结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的

员工记录
2. RIGHT OUTER JOIN:右外关联
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);

等价于
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id(+)=d.department_id;

结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。

3. FULL OUTER JOIN:全外关联
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON (e.department_id = d.department_id);
结果为:所有员工及对应部门的记录,包括没有对应部门编号 department_id

的员工记录和没有任何员工的部门记录。


9. 事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。事务性质:

 原子性。即不可分割性,事务要么全部被执行,要么就全部不被执行。

 一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确

状态

 隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任

何其他事务,

 持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交

后有了其他故障,事务的处理结果也会得到保存。


存储过程:存储过程就是编译好了的一些sql语句。因为SQL语句已经预编绎过

了,因此运行的速度比较快。

GRANT (Select,delete,…) ON (对象) TO USER_NAME [WITH GRANT

OPTION];//授权

REVOKE (权限表) ON(对象) FROM USER_NAME [WITH REVOKE OPTION] //撤权
Create UNIQUE INDEX index_name ON TableName(col_name);//建索引

INSERT INTO tablename {column1,column2,…} values(exp1,exp2,…);//插



INSERT INTO Viewname {column1,column2,…} values(exp1,exp2,…);//插入

视图实际影响表

UPDATE tablename SET name=’zang 3’,email=‘wew’ condition;//更新

数据


数据库索引类似于书的目录,主要用于提高查询效率,也就是按条件查询的时

候,先查询索引,再通过索引找到相关的数据,索引相当于记录了对某个关键

词,指定到不同的文件,或者文件里的不同位置,当然索引自身也是通过文件

来保存的


加了索引后,也不能保证在每次检索时都会使用列索引。
如果, SQL 检索语句编写不当,就无法使用索引。
1、LIKE 运算符,进行模糊检索时,只能在前方一致的检索时,才能使用索引


以下写法,索引不会被使用。
[sql]
SELECT * FROM employee WHERE lname_pinyin LIKE '%w%'; 
SELECT * FROM employee WHERE lname_pinyin LIKE '%w'; 

2、使用 IS NOT NULL 、 <> 的场合,也不会使用索引。如下:
[sql]
SELECT * FROM employee WHERE lname_pinyin IS NOT NULL; 
SELECT * FROM employee WHERE lname_pinyin <> 'wang'; 

3、对列使用了运算或者函数的情况下,不会使用索引,如下:
[sql]
SELECT * FROM employee WHERE YEAR(birth) = '1980'; -- 不使用索引 
SELECT * FROM employee WHERE birth >= '1980-01-01' AND birth <=

'1980-12-31'; --使用了索引 

4、复合索引的第一列,没有包含在 WHERE 条件语句中,如下:
[sql]
CREATE INDEX idx_pinyin ON employee(lname_pinyin, fname_pinyin); 
SELECT * FROM employee WHERE lname_pinyin = 'wang' AND fname_pinyin =

'xiao'; --用了索引 
SELECT * FROM employee WHERE lname_pinyin = 'wang'; --用了索引 
 
SELECT * FROM employee WHERE fname_pinyin = 'xiao'; -- 没有使用索引 
SELECT * FROM employee WHERE lname_pinyin = 'wang' OR fname_pinyin =

'xiao'; -- 没有使用索引

复合索引

[sql]
CREATE INDEX idx_pinyin ON employee( lname_pinyin, fname_pinyin); 
 
SHOW INDEX FROM employee\G 

唯一性索引

使用 UNIQUE 关键字,来创建不可重复的索引,称为:唯一性索引。
对特定列创建唯一性索引,相当于对该列追加了唯一性制约。
创建唯一性索引的时候,如果对象列中,已经含有重复数据,则:创建失败,

报错。
创建成功后,如果,插入重复数据,则:插入失败,报错。
指定多个列,来创建唯一性索引,只要,这些列的组合数据不重复,就可以创

建成功。

索引,顾名思义,是为了检索的便捷性。因为索引需要单独去维护,所以对于

数据库的删除,插入,更新操作有影响,批量的操作,速度就会很慢,感觉就

会很明显。


对于in,rule优化器选择的内查询的结果作为驱动表来进行nest loops连接,

所以当内查询的结果集比较小的时候,这个in的效率还是比较高的。
对于exists,则是利用外查询表的全表扫描结果集过滤内查询的结果集,当外

查询的表比较大的时候,相对效率比较低
分享到:
评论

相关推荐

    数据库常见面试题型总结_数据库语句面试题

    数据库常见面试题型总结是数据库方面常见面试题型的总结,涵盖了数据库语句、SQL 优化、Web 相关知识点等。以下是对标题和描述中所说的知识点的详细说明: 一、IN 和 EXIST 的区别 IN 和 EXISTS 是两种常见的...

    oracle数据库常见面试题

    以下是一些Oracle数据库常见的面试题及其详解: 1. **Oracle数据类型**:了解Oracle支持的数据类型,如VARCHAR2、NUMBER、DATE、BLOB等,以及它们的应用场景。 2. **SQL基础**:掌握基本的SQL语句,如SELECT、...

    数据库面试知识点汇总

    "数据库面试知识点汇总" 数据库面试知识点汇总是对数据库方方面面的总结,涵盖了数据库设计、数据库范式、索引、数据库性能优化等方面的知识点。下面是对这些知识点的详细解释: 一、数据库设计 数据库设计是指对...

    数据库工程师常见面试题.pdf

    以下是对文件“数据库工程师常见面试题.pdf”中提到的各个知识点的详细解释: 1. 关于groupby和orderby操作导致查询变慢的原因,主要是因为这两个操作在处理大量数据时,需要创建临时表以暂存处理结果。由于临时表...

    sql数据库常见面试题

    本文将介绍一些SQL数据库的常见面试题,它们不仅覆盖了基础知识点,也包含了一些实际操作中的应用技巧。 首先,了解SQL数据库的基本概念是非常重要的。SQL是用于访问和操作数据库的标准编程语言。它允许用户定义...

    数据库笔试题及答案,常见数据库面试题

    数据库笔试题及答案涵盖了...这些题目覆盖了数据库基础、数据结构、编程原理、数据库设计和SQL等多个方面,是数据库工程师和程序员面试的常见测试点。理解和掌握这些知识点对于在IT行业中从事数据库相关工作至关重要。

    数据库个常见笔试面试题汇总

    以下是一些数据库常见笔试和面试题目的详细解析,旨在帮助你更好地准备应聘过程。 1. **数据库基本概念** - **RDBMS(关系型数据库管理系统)**:如MySQL、Oracle、SQL Server等,它们基于关系模型,以表格形式...

    面试数据库常见问题以及答案

    以下是一些常见的数据库面试问题及答案概览: 1. **数据模型**: - **概念模型**:用于描述业务对象及其关系,如实体-关系(E-R)模型。 - **逻辑模型**:如关系模型,是数据库管理系统实际使用的数据结构,如SQL...

    数据库常见面试题基础知识及汇总

    数据库中以表为组织单位存储数据。 表类似我们的Java类,每个字段都有对应的数据类型。 那么用我们熟悉的java程序来与关系型数据对比,就会发现以下对应关系。 类----------表 类中属性----------表中字段 对象...

    MySQL数据库基础面试知识点

    MySQL 数据库基础面试知识点 本文档总结了 MySQL 数据库的基础知识点,包括数据库分类、数据类型、数据库基本操作和数据表基本操作等知识点。 数据库分类 MySQL 数据库可以分为四大类:DDL(数据定义语言)、DML...

    数据库面试题(汇总所有的数据库面试题).zip

    数据库是信息技术领域中的...这些知识点涵盖了数据库面试的大部分内容,求职者需要深入理解和实践,才能在面试中展现出扎实的数据库功底。通过解答这些面试题,不仅可以提升技能,也能为未来的职业生涯打下坚实的基础。

    数据库面试题数据库面试题.

    数据库面试题涵盖了数据库基础知识、数据结构、算法、面向对象编程、软件工程以及特定数据库系统(如Visual FoxPro和SQL)的使用等多...这些知识点是数据库面试中常见的考察点,对于理解和解答数据库相关问题至关重要。

    sql数据库常见的面试题

    ### SQL数据库常见面试题解析 #### 1. MSSQL Server数据库信息系统的输出是什么? - A. Asp_dbhelp - B. sp_db - C. sp_help - D. sp_helpdb **正确答案:** D. sp_helpdb - **解析:** 在SQL Server中,`sp_...

    IT面试笔试--数据库面试笔试常见知识点

    数据库面试笔试常见知识点 数据库是一门广泛应用于实践的技术,而对数据库的理解和掌握是IT行业中不可或缺的一部分。面对数据库面试笔试,需要具备扎实的基础知识和实践经验。下面是数据库面试笔试中常见的知识点:...

    几个常见的数据库面试试题

    这些是数据库面试中常见的一些基础知识点,对于面试者来说,还需要掌握索引、事务、视图、触发器、性能优化等方面的知识。理解数据库设计原则,如第三范式(3NF),以及如何设计高效的数据库架构也是至关重要的。...

    数据库常用面试题目_基础题

    以上只是部分数据库面试可能涉及的问题,深入理解和实践这些知识点将有助于你在面试中表现出色。同时,不断学习和跟踪数据库技术的新发展,如NewSQL、内存数据库等,也是提升自己竞争力的关键。

    数据库常见面试题.docx

    以下是一些常见的数据库面试题及其解析,这些题目涵盖了数据库的基础概念、高级特性和最佳实践。 1. **数据连接池的工作机制** 数据连接池是管理数据库连接的一种机制,用于优化数据库应用性能。它在J2EE服务器...

    数据库面试常见问题解析与知识点归纳

    使用场景及目标:①加深对数据库基础知识的理解,提升数据库设计和查询优化能力;②为数据库相关的技术岗位面试做准备,增强自我竞争力。 其他说明:本文档不仅包含了详细的定义解答,还提供了具体的操作案例,有助...

    数据库面试和笔试常见题

    以下是一些常见的知识点,主要涉及Oracle自带的表、SQL函数以及聚合函数。 首先,Oracle数据库中有一些预定义的表,如`emp`和`dept`,它们经常用于示例和练习。`emp`表包含了员工的相关信息,例如`empno`是员工编号...

Global site tag (gtag.js) - Google Analytics