Як можна поєднати дві або більше таблиці

II) Питання по мові SQL

Як можна уточняти висновок всіх стовпців таблиці?

Для виведення всіх стовпців таблиці слід або перерахувати всі стовпці у фразі SELECT, або скористатися символом '*' замість списку стовпців. У наступному запиті виводиться вся таблиця FACULTY:

Навіщо потрібні аліаси імена стовпців? Як це робиться?

Кваліфікація імен стовпців іменами таблиць. Ім'я стовпця може бути кваліфіковано (уточнено) ім'ям таблиці з використанням наступного синтаксису:

Уточнення імені стовпця необхідно в тому випадку, коли запит використовує багато таблиць (див. Пізніше) і різні таблиці мають стовпці з однаковими іменами. Уточнення імені стовпця можна виробляти і в тому випадку, коли немає необхідності в цьому. Наприклад, наступний запит вважається коректним:

SELECT ROOM.Num, ROOM.Seats, ROOM.Floor

3) Чи містить результат запиту повторювані рядки? Як можна видалити повторювані рядки?

Ви можете видалити дублікати рядків результату, використовуючи фразу 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, однак його використання в інших фразах заборонено.

Навіщо потрібна кваліфікація стовпців іменами таблиць?

Кваліфікація імен стовпців іменами таблиць. Ім'я стовпця може бути кваліфіковано (уточнено) ім'ям таблиці з використанням наступного синтаксису:

Уточнення імені стовпця необхідно в тому випадку, коли запит використовує багато таблиць (див. Пізніше) і різні таблиці мають стовпці з однаковими іменами. Уточнення імені стовпця можна виробляти і в тому випадку, коли немає необхідності в цьому. Наприклад, наступний запит вважається коректним:

SELECT ROOM.Num, ROOM.Seats, ROOM.Floor

Що таке зовнішнє з'єднання? Сформулюйте і запишіть запит із зовнішнім з'єднанням.

Зовнішнє з'єднання (о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 (+);

Як можна поєднати дві або більше таблиці?

Багато таблиць. Якщо ви задаєте список таблиць у фразі FROM, то всі рядки першої таблиці конкатенуються з усіма рядками другої таблиці. Наприклад, запит:

FROM FACULTY, DEPARTMENT;

виробляє конкатенацію всіх рядків таблиці FACULTY з усіма рядками таблиці DEPARTMENT. Цей запит еквівалентний операції декартова твори реляційної алгебри.

З'єднання двох таблиць. Щоб отримати семантично осмислений результат, слід з'єднати рядки факультетів зі тими рядками кафедр, які належать цим факультетам.

Використовуючи стовпець FacNo, який присутній в обох таблицях, ви може з'єднати факультети тільки з їх кафедрами за допомогою умови фрази WHERE, як це показано в наступному запиті:

FROM FACULTY, DEPARTMENT

WHERE FACULTY.FacNo = DEPARTMENT.FacNo;

Таке з'єднання називається еквівалентні-з'єднанням. так як воно проводиться за рівністю значень двох стовпців з різних таблиць.

З'єднання багатьох таблиць. Ви можете поєднувати стільки таблиць, скільки необхідно, наприклад, в наступному запиті виводяться факультети з їх викладачами:

SELECT FACULTY.Name, TEACHER.Name

FROM FACULTY, DEPARTMENT, TEACHER

WHERE FACULTY.FacNo = DEPARTMENT.FacNo AND DEPARTMENT.DepNo = TEACHER.DepNo;

Звернемо увагу, що стовпці таблиці DEPARTMENT не виводяться, вона використовується тільки для з'єднання факультетів з викладачами. (Логічні оператори будуть обговорені далі).

Вказівка ​​необхідних стовпців. Коли використовується більш, ніж одна таблиця, ви можете вказати в якості вихідних стовпці з різних таблиць. У разі необхідності імена стовпців можуть бути уточнені іменами таблиць. Імена стовпців також можуть бути перейменовані за допомогою алиасов, як це зроблено в наступному запиті:

SELECT FACULTY.Name AS Faculty_name,

DEPARTMENT.Name AS Department_name,

DEPARTMENT.Fund AS Department_fund

FROM FACULTY, DEPARTMENT

WHERE FACULTY.FacNo = DEPARTMENT.FacNo;

З'єднання за умовою, що відрізняється від рівності. Екві-з'єднання використовує оператор рівності (=) у фразі WHERE для з'єднання таблиць, в НЕ еквівалентні-судинних використовуються інші оператори відносин. Наприклад, в наступному прикладі виводяться кафедри, які мають фонд фінансування, що перевищує фонд фінансування його факультету:

SELECT DEPARTMENT.Name, DEPARTMENT.Fund

FROM FACULTY, DEPARTMENT

WHERE FACULTY.Fund

Зверніть увагу, що хоча для отримання необхідного відповіді ми з'єднуємо дві таблиці, проте в результат потрапляють стовпці тільки з таблиці DEPARTMENT.

Схожі статті