zoukankan      html  css  js  c++  java
  • SQL面试题

    0.内连接、左连接、右连接的区别是什么?

    连接类型

    INNER JOIN        (内连接)

    LEFT OUTER JOIN    (左外连接)

    RIGHT OUTER JOIN  (右外连接)

    FULL OUTER JOIN    (完全外连接)

    连接类型分成内连接和外连接两种。内连接是等值连接,外连接又分成左、右、完全外连接三种。连接类型中INNER、OUTER字样可不写。

    内连接,也被称为自然连接,只有两个表相匹配的行才能在结果集中出现。返回的结果集选取了两个表中所有相匹配的数据,舍弃了不匹配的数据。由于内连接是从结果表中删除与其他连接表中没有匹配的所有行,所以内连接可能会造成信息的丢失。

    内连接只显示符合连接条件的记录,外连接除了显示符合条件的记录外,还显示表中的记录,例如,如果使用左外连接,还显示左表中的记录。

    1.如何对数据库表PRODUCT中的字段MARKET_PRICE的平均值四舍五入,并保留一位小数?

    SELECT ROUND(AVG(MARKET_PRICE),1) FROM PRODUCT;

    SQL AVG 函数

    定义和用法

    AVG 函数返回数值列的平均值。NULL 值不包括在计算中。

    SQL AVG() 语法

    SELECT AVG(column_name) FROM table_name

    ROUND()

    函数 ROUND 函数用于把数值字段舍入为指定的小数位数。

    SQL ROUND() 语法

    SELECT ROUND(column_name,decimals) FROM table_name

    参数 描述

    column_name 必需。要舍入的字段。

    decimals 必需。规定要返回的小数位数。

    2.如何实现查询第n行到第m行记录?

    MySQL实现:

    SELECT * FROM TABLE1 LIMIT N-1,M-N+1;

    Oracle实现:

    SELECT *

    FROM (SELECT TT.*, ROWNUM AS ROWNO

        FROM ( SELECT T.*

            FROM TABLE1 T) TT

        WHERE ROWNUM <= M) TABLE_ALIAS

    WHERE TABLE_ALIAS.ROWNO>= N;

    3.索引的优缺点分别是什么?

    优点:您可以在表中创建索引,以便更加快速高效地查询数据。用户无法看到索引,它们只能被用来加速搜索/查询。

    缺点:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。

    因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

    4.数据库清空WF.TABLE_WF表中的数据分别有哪几种方法?请写出SQL语句,并说明语句区别是什么?

    DELETE FROM WF.TABLE_WF;

    TRUNCATE TABLE WF.TABLE_WF;

    区别

    1.delete from后面可以写条件,truncate不可以。

    2.delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少。

    3.delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页。

    4.当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。truncate始终锁定表和页,而不是锁定各行。

    5.如果有identity产生的自增id列,delete from后仍然从上次的数开始增加,即种子不变,而truncate后,种子会恢复初始。

    6.truncate不会触发delete的触发器,因为truncate操作不记录各个行删除。

    SQL Delete 语句(删除表中的记录)

    DELETE语句用于删除表中现有记录。

    SQL DELETE 语句

    DELETE 语句用于删除表中的行。

    SQL DELETE 语法

    DELETE FROM table_name WHERE condition;

    请注意

    删除表格中的记录时要小心!

    注意SQL DELETE 语句中的 WHERE 子句!

    WHERE子句指定需要删除哪些记录。如果省略了WHERE子句,表中所有记录都将被删除!

    SQL TRUNCATE TABLE 命令

    SQL TRUNCATE TABLE 命令用于删除现有数据表中的所有数据。

    你也可以使用 DROP TABLE 命令来删除整个数据表,不过 DROP TABLE 命令不但会删除表中所有数据,还会将整个表结构从数据库中移除。如果想要重新向表中存储数据的话,必须重建该数据表。

    语法:

    TRUNCATE TABLE 的基本语法如下所示:

    TRUNCATE TABLE table_name;

    5.SQL中有一个单表查询,性能差,消耗高,在硬件无法升级、不修改条件语句、不分页的情况下,如何优化?

    从索引方面入手:

    1.在作为查询条件的字段上添加索引,即跟在where后面的字段

    2.索引最好不要添加在查询条件为某个范围的字段上

  • 相关阅读:
    软件工程实践总结作业
    SDN第4次上机作业
    SDN第四次作业
    SDN第三次上机作业
    SDN第三次作业
    SDN第二次上机作业
    SDN第一次上机作业
    免费自动生成字幕工具推荐,啃生肉啊(6.12更新)
    博客园美化,自定义你的博客,css+html (iframe)
    找质数、素数_算法优化(C++)
  • 原文地址:https://www.cnblogs.com/denggelin/p/8974960.html
Copyright © 2011-2022 走看看