📜  SQL 面试问题

📅  最后修改于: 2021-09-09 12:00:22             🧑  作者: Mango

  1. 什么是 SQL?
    SQL 代表结构化查询语言。它是一种用于与数据库进行交互的语言,即创建数据库、在数据库中创建表、检索数据或更新数据库中的表等。SQL 是ANSI(美国国家标准协会)标准。使用SQL,我们可以做很多事情,例如——我们可以执行查询,我们可以在表中插入记录,我们可以更新记录,我们可以创建一个数据库,我们可以创建一个表,我们可以删除一个表等等。
  2. 什么是数据库?
    数据库被定义为一种结构化形式的数据,它以有组织的方式存储在计算机或数据中,并且可以通过各种方式访问。它也是模式、表、查询、视图等的集合。数据库帮助我们轻松地存储、访问和操作计算机中保存的数据。数据库管理系统允许用户与数据库交互。

  3. SQL 是否支持编程语言特性?
    SQL 确实是一种语言,但它不支持编程,因为它不是一种编程语言,而是一种命令语言。我们在 SQL 中没有像 for 循环或 if..else 这样的条件语句,我们只有可用于查询、更新、删除等数据库中数据的命令。 SQL 允许我们操作数据库中的数据。
  4. SQL 和 PL/SQL 之间有什么区别?
    Ans:SQL 和 PL/SQL 之间的一些常见差异如下所示:
    SQL PL/SQL
    SQL is a query execution or commanding language PL/SQL is a complete programming language
    SQL is data oriented language PL/SQL is a procedural language
    SQL is very declarative in nature PL/SQL has a procedural nature
    It is used for manipulating data It is used for creating applications
    We can execute one statement at a time in SQL We can execute block of statements in PL/SQL
    SQL tells database, what to do? PL/SQL tells database how to do
    We can embed SQL in PL/SQL We can not embed PL/SQL in SQL
  5. SQL 中的 BETWEEN 和 IN运算符什么区别?
    之间
    BETWEEN运算符用于根据一系列值获取行。
    例如,
    SELECT * FROM Students 
    WHERE ROLL_NO BETWEEN 20 AND 30;
    

    此查询将从表 Students 中选择字段 ROLL_NO 的值介于 20 和 30 之间的所有行。

    IN运算符用于检查特定集合中包含的值。
    例如,

    SELECT * FROM Students 
    WHERE ROLL_NO IN (20,21,23);
    

    此查询将从表 Students 中选择字段 ROLL_NO 的值为 20、21 或 23 的所有行。

  6. 编写 SQL 查询以查找以“A”开头的员工姓名?
    SQL 的 LIKE运算符用于此目的。它用于通过在 where 子句中搜索特定模式来获取过滤数据。
    使用 LIKE 的语法是,
    SELECT column1,column2 FROM table_name WHERE column_name LIKE pattern; 
    
    LIKE: operator name
    pattern: exact value extracted from the pattern to get related data in
    result set.
    

    所需的查询是:

    SELECT * FROM Employees WHERE EmpName like 'A%' ;
    

    你可以参考这篇关于 WHERE 子句的文章,了解更多关于 LIKE运算符的细节。

  7. SQL 中的 CHAR 和 VARCHAR2 数据类型有什么区别?
    这两种数据类型的用于字符,但VARCHAR2用于而炭被用于固定长度的可变长度的。例如,如果我们指定类型为 char(5) 那么我们将不允许在这个变量中存储任何其他长度的字符串但是如果我们指定这个变量的类型为 varchar2(5) 那么我们将被允许存储可变长度的字符串,我们可以在该可变长度3或4或2的字符串存储。
  8. 命名 SQL 中可用的不同类型的大小写操作函数。
    SQL 中提供了三种大小写操作函数。他们是,
    • LOWER :此函数的目的是以小写形式返回字符串。它接受一个字符串作为参数并通过将其转换为小写来返回该字符串。
      句法:
      LOWER('string')
      
    • UPPER :此函数的目的是以大写形式返回字符串。它接受一个字符串作为参数并通过将其转换为大写来返回该字符串。
      句法:
      UPPER('string')
      
    • INITCAP :该函数的目的是返回首字母大写,其余字母小写的字符串。
      句法:
      INITCAP('string')
      
  9. 数据定义语言是什么意思?
    数据定义语言或 DDL 允许执行查询,如 CREATE、DROP 和 ALTER。也就是说,那些定义数据的查询。

  10. 数据操作语言是什么意思?
    数据操作语言或 DML 用于访问或操作数据库中的数据。
    它允许我们执行以下列出的功能:
    • 在数据库中插入数据或行
    • 从数据库中删除数据
    • 检索或获取数据
    • 更新数据库中的数据。
  11. 主键和唯一约束有什么区别?
    主键不能有 NULL 值,唯一约束可以有 NULL 值。一张表中只有一个主键,但可以有多个唯一约束。主键会自动创建集群索引,但唯一键不会。
  12. SQL 中的视图是什么?
    SQL 中的视图是一种虚拟表。视图也有行和列,因为它们在数据库中的真实表中。我们可以通过从数据库中存在的一个或多个表中选择字段来创建视图。视图可以包含表的所有行或基于特定条件的特定行。
    SQL 的 CREATE VIEW 语句用于创建视图。
    基本语法:
    CREATE VIEW view_name AS
    SELECT column1, column2.....
    FROM table_name
    WHERE condition;
    
    view_name: Name for the View
    table_name: Name of the table
    condition: Condition to select rows
    

    有关如何创建和使用视图的更多详细信息,请参阅本文。

  13. 你说的外键是什么意思?
    外键是可以唯一标识另一个表中每一行的字段。此约束用于将字段指定为外键。也就是说,这个字段指向另一个表的主键。这通常会在两个表之间创建一种链接。
    考虑如下所示的两个表:

    命令

    O_ID ORDER_NO C_ID
    1 2253 3
    2 3325 3
    3 4521 2
    4 8532 1

    顾客

    C_ID NAME ADDRESS
    1 RAMESH DELHI
    2 SURESH NOIDA
    3 DHARMESH GURGAON

    我们可以清楚地看到,Orders 表中的字段C_ID 是Customers 表中的主键,即它唯一标识了Customers 表中的每一行。因此,它是 Orders 表中的外键。
    句法:

    CREATE TABLE Orders
    (
    O_ID int NOT NULL,
    ORDER_NO int NOT NULL,
    C_ID int,
    PRIMARY KEY (O_ID),
    FOREIGN KEY (C_ID) REFERENCES Customers(C_ID)
    )
    
  14. SQL 中的联接是什么?联接的类型有哪些?
    SQL Join 语句用于根据它们之间的公共字段组合来自两个或多个表的数据或行。不同类型的连接是:
    • INNER JOIN :只要条件满足,INNER JOIN 关键字就会从两个表中选择所有行。该关键字将通过组合两个表中条件满足的所有行来创建结果集,即公共字段的值将相同。
    • LEFT JOIN :此连接返回连接左侧表的所有行以及连接右侧表的匹配行。右侧没有匹配行的行,结果集将包含空值。 LEFT JOIN 也称为 LEFT OUTER JOIN
    • RIGHT JOIN :RIGHT JOIN 类似于 LEFT JOIN。此连接返回连接右侧表的所有行以及连接左侧表的匹配行。左侧没有匹配行的行,结果集将包含空值。 RIGHT JOIN 也称为 RIGHT OUTER JOIN。
    • FULL JOIN :FULL JOIN 通过组合 LEFT JOIN 和 RIGHT JOIN 的结果来创建结果集。结果集将包含两个表中的所有行。没有匹配的行,结果集将包含 NULL 值。

    要详细了解这些连接中的每一个,请参阅此处。

  15. 什么是索引?
    数据库索引是一种数据结构,它以额外写入和使用更多存储空间来维护额外的数据副本为代价,提高了对数据库表的数据检索操作的速度。数据只能以一种顺序存储在磁盘上。为了支持根据不同的值进行更快的访问,需要更快的搜索,如对不同值的二分搜索。为此,在表上创建索引。这些索引需要额外的磁盘空间,但它们允许根据不同的频繁搜索值进行更快的搜索。