Рубрики

Часто задаваемые вопросы интервью СУБД | Набор 2

Эта статья является расширением часто задаваемых вопросов интервью СУБД | Установите 1 .

В. Есть таблица, в которой полностью повторяется только одна строка. Напишите запрос, чтобы найти повторную строку

NameSection
abcCS1
bcdCS2
abcCS1

В приведенной выше таблице мы можем найти повторяющуюся строку, используя запрос ниже.

SELECT name, section FROM tbl
GROUP BY name, section
HAVING COUNT(*) > 1

Q. Запрос, чтобы найти 2-й самый высокий оклад сотрудника?

SELECT max(salary) FROM EMPLOYEES WHERE salary IN
(SELECT salary FROM EMPLOYEEs MINUS SELECT max(salary)
FROM EMPLOYEES);

ИЛИ

SELECT max(salary) FROM EMPLOYEES WHERE 
salary <> (SELECT max(salary) FROM EMPLOYEES);

Q. Рассмотрите следующую таблицу сотрудников. Сколько строк в результате следующего запроса?

ID зарплаты DeptName
1 10000 EC
2 40000 EC
3 30000 CS
4 40000 МЕ
5 50000 ME
6 60000 ME
7 70000 CS

Сколько строк в результате следующего запроса?

SELECT E.ID
FROM  Employee E
WHERE  EXISTS  (SELECT E2.salary
FROM Employee E2
WHERE E2.DeptName = 'CS'
AND   E.salary > E2.salary)

Следующие 5 строк будут результатом запроса, так как 3000 — минимальная зарплата сотрудников CS, и все эти строки больше 30000.

2
4
5
6
7

Q. Напишите триггер для обновления таблицы Emp так, чтобы, если обновление выполнялось в таблице Dep, зарплата всех сотрудников этого отдела была увеличена на некоторое количество (обновление)

Предполагая, что в качестве имени таблицы используются Dept и Emp, триггер можно записать как —

CREATE OR REPLACE TRIGGER update_trig
AFTER UPDATE ON Dept
FOR EACH ROW
DECLARE
CURSOR emp_cur IS SELECT * FROM Emp;
BEGIN
FOR i IN emp_cur LOOP
IF i.dept_no = :NEW.dept_no THEN
DBMS_OUTPUT.PUT_LINE(i.emp_no);  --  for printing those
UPDATE Emp                      -- emp number which are
SET sal = i.sal + 100           -- updated
WHERE emp_no = i.emp_no;
END IF;
END LOOP;
END;

Q. Существует таблица, которая содержит два столбца «Студент» и «Оценки», вам нужно найти всех учащихся, оценки которых превышают средние оценки, то есть список учащихся выше среднего уровня.

SELECT student, marks 
FROM table
WHERE marks > SELECT AVG(marks) from table;

Q. Назовите студента, который получил третье высшее образование, используя подзапросы.

SELECT Emp1.Name
FROM Employee Emp1
WHERE 2 = (SELECT COUNT(DISTINCT(Emp2.Salary))
           FROM Employee Emp2
           WHERE Emp2.Salary > Emp1.Salary
          )

* ЛОГИКА — Количество людей с зарплатой выше, чем этот человек будет 2.

В. Почему мы не можем использовать предложение WHERE с агрегатными функциями, такими как HAVING?

Различие между предложением where и where в SQL заключается в том, что предложение where НЕ МОЖЕТ использоваться с агрегатами, а предложение has может. Обратите внимание: это не предопределенное правило, но в целом вы увидите, что в большом количестве SQL-запросов мы используем WHERE до GROUP BY и HAVING после GROUP BY.

Предложение Where действует как предварительный фильтр, а в качестве Имеющего — как пост-фильтр.

Предложение where работает с данными строки, а не с агрегированными данными.

Рассмотрим ниже таблицу «Знаки».

Оценка студенческого курса

с1 40
с2 50
б с3 60
д с1 70
е с2 80

Рассмотрим запрос

SELECT Student, sum(Score) AS total 
FROM Marks

Это выберет данные построчно. Имеющий предложение работает на агрегированных данных.

Например, вывод запроса ниже

SELECT Student, sum(score) AS total FROM Marks

Всего студентов
90
б 60
д 70
Е 80

Когда мы применяем наличие в запросе выше, мы получаем

SELECT Student, sum(score) AS total
FROM Marks having total > 70

Всего студентов
90
Е 80

В. Разница между первичным ключом и уникальным ключом и почему следует использовать уникальный ключ, если он допускает только один ноль?

Первичный ключ:

  • Только один в ряд (кортеж).
  • Никогда не допускает нулевого значения (только ключевое поле).
  • Уникальный идентификатор ключа и не может быть нулевым и должен быть уникальным.

Уникальный ключ:

  • Может быть более одного уникального ключа в одном ряду.
  • Уникальный ключ может иметь нулевые значения (допускается только один нулевой).
  • Это может быть ключ-кандидат.
  • Уникальный ключ может быть нулевым и не может быть уникальным.

В. В чем разница между материализованным и динамическим представлением?

Материализованные взгляды

  • На основе диска и периодически обновляются на основе определения запроса.
  • Материализованная таблица создается или обновляется нечасто, и ее необходимо синхронизировать с соответствующими базовыми таблицами.

Динамические представления

  • Только виртуальный и запускайте определение запроса каждый раз, когда к ним обращаются.
  • Динамическое представление может создаваться каждый раз, когда пользователь запрашивает конкретное представление.

В. Что такое встроенный и динамический SQL?

Статический или встроенный SQL

  • Операторы SQL в приложении, которые не изменяются во время выполнения и, следовательно, могут быть жестко запрограммированы в приложении.

Динамический SQL

  • Операторы SQL, которые создаются во время выполнения; например, приложение может разрешать пользователям вводить свои собственные запросы.
  • Динамический SQL — это метод программирования, который позволяет динамически создавать операторы SQL во время выполнения. Вы можете создавать более универсальные, гибкие приложения, используя динамический SQL, поскольку полный текст оператора SQL может быть неизвестен при компиляции.

S.No.Static (embedded) SQLDynamic (interactive) SQL
1.In static SQL how database will be accessed is predetermined in the embedded SQL statement.In dynamic SQL, how database will be accessed is determined at run time.
2.It is more swift and efficient.It is less swift and efficient.
3.SQL statements are compiled at compile time.SQL statements are compiled at run time.
4.Parsing, validation, optimization, and generation of application plan are done at compile time.Parsing, validation, optimization, and generation of application plan are done at run time.
5.It is generally used for situations where data is distributed uniformly.It is generally used for situations where data is distributed non-uniformly.
6.EXECUTE IMMEDIATE, EXECUTE and PREPARE statements are not used.EXECUTE IMMEDIATE, EXECUTE and PREPARE statements are used.
7.It is less flexible.It is more flexible.

http://docs.oracle.com/cd/A87860_01/doc/appdev.817/a76939/adg09dyn.htm

В. В чем разница между CHAR и VARCHAR?

  • CHAR и VARCHAR различаются по хранению и поиску.
  • Длина столбца CHAR фиксирована, а длина VARCHAR является переменной.
  • Максимум нет. символьный тип данных CHAR может содержать до 255 символов, а VARCHAR может содержать до 4000 символов.
  • CHAR на 50% быстрее, чем VARCHAR.
  • CHAR использует статическое выделение памяти, а VARCHAR использует динамическое выделение памяти.

Вам также может понравиться:

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Часто задаваемые вопросы интервью СУБД | Набор 2

0.00 (0%) 0 votes