📜  SQL面试题

📅  最后修改于: 2021-05-20 07:30:05             🧑  作者: Mango

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

  3. SQL是否支持编程语言功能?
    确实,SQL是一种语言,但是它不支持编程,因为它不是编程语言,而是命令语言。我们在SQL中没有条件语句,例如for循环或if..else,我们只有可用于查询,更新,删除数据库中数据的命令。 SQL允许我们处理数据库中的数据。
  4. SQL和PL / SQL之间有什么区别?
    回答: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;
    

    此查询将从表“学生”中选择所有这些行,其中字段ROLL_NO的值介于20到30之间。

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

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

    该查询将从表“学生”中选择所有那些行,其中字段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表中的主键,即,它唯一地标识了Customer表中的每一行。因此,它是订单表中的外键。
    句法:

    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 :此联接返回联接左侧的表的所有行,以及联接右侧的表的匹配行。右侧没有匹配行的行,结果集将包含null。 LEFT JOIN也称为LEFT OUTER JOIN
    • RIGHT JOIN :RIGHT JOIN与LEFT JOIN相似。此联接返回联接右侧的表的所有行,以及联接左侧的表的匹配行。对于左侧没有匹配行的行,结果集将包含null。 RIGHT JOIN也称为RIGHT OUTER JOIN。
    • FULL JOIN :FULL JOIN通过合并LEFT JOIN和RIGHT JOIN的结果来创建结果集。结果集将包含两个表中的所有行。没有匹配的行,结果集将包含NULL值。

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

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