- •II) Вопросы по языку sql
- •Как можно специфицировать вывод всех столбцов таблицы?
- •Зачем необходимы алиасы имена столбцов? Как это делается?
- •Содержит ли результат запроса повторяющиеся строки? Как можно удалить повторяющиеся строки?
- •Зачем нужны алиасы столбцов? Как они задаются?
- •Зачем нужна квалификация столбцов именами таблиц?
- •Что такое внешнее соединение? Сформулируйте и запишите запрос с внешним соединением.
- •Как можно соединить две или более таблицы?
- •Что собой представляет значение выражения, содержащего значение null? Как проверить, что значение столбца равно null.
- •Назначение оператора like. Примеры
- •Назначение операторов in и between. Примеры.
- •Агрегатные функции. Какая область действия агрегатных функций при наличии и отсутствии фразы group by. Примеры.
- •Назначение фраз group by и having
- •Что можно использовать во фразе select при наличии и отсутствии фразы group by?
- •Что такое независимые и связанные подзапросы. Примеры.
- •Подзапросы в условии сравнения групп. Примеры
- •Подзапросы в условии проверки вхождения элемента во множество. Примеры.
- •Подзапрос в условии exists
- •Простые и связанные подзапросы во фразе having
II) Вопросы по языку sql
Как можно специфицировать вывод всех столбцов таблицы?
Для вывода всех столбцов таблицы следует либо перечислить все столбцы во фразе SELECT, либо воспользоваться символом ‘*’ вместо списка столбцов. В следующем запросе выводится вся таблица FACULTY:
SELECT *
FROM FACULTY;
Зачем необходимы алиасы имена столбцов? Как это делается?
Квалификация имен столбцов именами таблиц. Имя столбца может быть квалифицировано (уточнено) именем таблицы с использованием следующего синтаксиса:
table_name.column_name
Уточнение имени столбца необходимо в том случае, когда запрос использует много таблиц (см. позже) и различные таблицы имеют столбцы с одинаковыми именами. Уточнение имени столбца можно производить и в том случае, когда нет необходимости в этом. Например, следующий запрос считается корректным:
SELECT ROOM.Num, ROOM.Seats, ROOM.Floor
FROM ROOM;
Содержит ли результат запроса повторяющиеся строки? Как можно удалить повторяющиеся строки?
Вы можете удалить дубликаты строк результата, используя фразу DISTINCT или UNIQUE во фразе SELECT. Эта фраза применяется ко всей выходной строке, а не к отдельному столбцу. Например, следующий два запроса эквивалентны и дают список всех имеющихся должностей:
SELECT DISTINCT Post SELECT UNIQUE Post
FROM TEACHER; FROM TEACHER;
Ключевое слово ALL означает, что дубликаты должны быть сохранены. Это значение используется по умолчанию, если перечисленные выше ключевые слова не указываются. Следующие два запроса эквивалентны:
SELECT ALL Post SELECT Post
FROM TEACHER; FROM TEACHER;
Зачем нужны алиасы столбцов? Как они задаются?
Предоставляет другое имя для выражения столбца и этот алиас используется в качестве заголовка столбца. Фраза AS является факультативной. Алиас переименовывает элемент списка фразы SELECT в контексте всего запроса. Алиас может использоваться во фразе ORDER BY, однако его использование в других фразах запрещено.
Зачем нужна квалификация столбцов именами таблиц?
Квалификация имен столбцов именами таблиц. Имя столбца может быть квалифицировано (уточнено) именем таблицы с использованием следующего синтаксиса:
table_name.column_name
Уточнение имени столбца необходимо в том случае, когда запрос использует много таблиц (см. позже) и различные таблицы имеют столбцы с одинаковыми именами. Уточнение имени столбца можно производить и в том случае, когда нет необходимости в этом. Например, следующий запрос считается корректным:
SELECT ROOM.Num, ROOM.Seats, ROOM.Floor
FROM ROOM;
Что такое внешнее соединение? Сформулируйте и запишите запрос с внешним соединением.
Внешнее соединение (оuter join). Внешнее соединение расширяет возможности обычного соединения. Внешнее соединение возвращает все строки, которые удовлетворяют условию соединения, а также строки одной из таблиц, для которых не нашлось строки из другой таблицы, которые бы удовлетворили условию соединения. Такие строки не возвращаются обычным соединением. Для того, чтобы произвести внешнее соединение таблиц A и B с получением в результате ВСЕХ строк таблицы A, следует применить оператор внешнего соединения (+) ко всем столбцам таблицы В. Для всех тех строк таблицы А, для которых не нашлось совпадающих строк из таблицы В, Oracle возвращает значение NULL для всех тех выражений из списка SELECT, которые используют столбцы из В. В следующем примере мы получаем список факультетов и их кафедр, причем имена кафедр присутствуют даже в том случае, когда у них нет факультетов – в этом случае вместо имени факультета выводится значение NULL:
SELECT FACULTY.Name AS FacName, DEPARTMENT.Name AS DepName, DEPARTMENT.Fund AS DepFund
FROM FACULTY, DEPARTMENT
WHERE FACULTY.FacNo = DEPARTMENT.FacNo (+);