SELECT FilmName, ActorName

FROM (Films F INNER JOIN Cast C ON F.FilmID = C.FilmID)

INNER JOIN Actors A ON C.ActorID = A.ActorID

 

Вывести актеров, которые еще не играли ни в одном фильме.

 

SELECT ActorName

FROM Cast C RIGHT JOIN Actors A ON C.ActorID = A.ActorID

WHERE C.ActorID IS NULL;

Здесь из-за связи LEFT JOIN будут выведены записи обо всех актерах, однако те актеры, ID которых нет в таблице Cast, в поле C.ActorID будут иметь значение NULL. Этим можно воспользоваться при отборе записей (WHERE C.ActorID IS NULL).


Добавление данных

 

Для добавления данных в SQL применяется инструкция INSERT. Чаще всего её используют для вставки в таблицу отдельных записей. Инструкция выглядит следующим образом:

 

INSERT INTO имя_таблицы

VALUES (значение 1, значение 2, …)

 

После ключевого слова VALUES указывается список значений, которые будут добавлены в таблицу. Значения вставляются в столбцы в порядке расположения столбцов в таблице. Вставка данных в столбец счетчика (с признаком IDENTITY) по умолчанию невозможна, в инструкции SQL это поле пропускается.

 

Например, для добавления новой группы в таблицу «Genres» (GenreID, GenreName, GenreHistory):

 

INSERT INTO Genres

VALUES ('Комиксы', 'Не знаю, какая у них история');

 

Для вставки данных можно указать конкретные столбцы, если столбца нет в списке выборки, и он не является счетчиком, в него будет записано значение NULL.

 

INSERT INTO Genres (GenreName, GenreHistory)

VALUES ('Комиксы', 'Не знаю, какая у них история');

 

INSERT INTO Genres (GenreName)

VALUES ('Комиксы');

 

В столбцы, для которых значение не указано, будет добавлено значение NULL.

 

Команду INSERT можно также использовать для перемещения данных из одной таблицы в другую. Для этого предложение VALUES нужно заменить запросом SELECT. Таблицы должны быть идентичными – иметь равное количество столбцов с одинаковыми типами данных. Например, можно записать все жанры из таблицы Genres в Genres1. Код жанра (поле IDENTITY) проставляется автоматически.

 

INSERT INTO Genres1

SELECT GenreName, GenreHistory

FROM Genres;

Добавить записи обо всех читателях г. Ступино из таблицы Readers в таблицу Readers1.

 

INSERT INTO Readers1 (ReaderName, ReaderSurname, Passport, CityID)

SELECT ReaderName, ReaderSurname, Passport, c.CityID

FROM Readers r INNER JOIN Cities c ON r.CityID = c.CityID

WHERE CityName = 'Ступино';


Удаление данных

 

Для добавления данных в SQL применяется инструкция DELETE. Удаляются не отдельные поля, а строки целиком.

 

DELETE FROM Books; - удалить все записи о книгах.

 

Если требуется удалить определенные записи, это можно указать в разделе WHERE.

 

DELETE FROM Books

WHERE BookName = 'Мертвые души';

Если необходимо удалить записи по признаку, информация о котором хранится в другой таблице, строится подзапрос в разделе WHERE. Например, удалить записи о книгах детективного жанра.

 

DELETE FROM Books

WHERE GenreID IN

(SELECT GenreID

FROM Genres

WHERE GenreName = 'Детектив');

Здесь запрос SELECT возвращает какое-то количество значений GenreID (те, для которых имя жанра – «Детектив»). После этого значение каждого поля GenreID из таблицы Books сравнивается по очереди со всеми значениями, полученными с помощью SELECT. Если значения совпадают, соответствующая запись удаляется из таблицы Books.

IN обозначает вхождение – входит ли GenreID в множество значений, которое вернет SELECT.

Если заранее известно, что SELECT способен вернуть только одну запись, вместо оператора IN можно использовать знак «=». В нашем случае книг-детективов может быть несколько.

Удалить из библиотеки книги Агаты Кристи

DELETE FROM Books

WHERE BookID IN

(SELECT BookID

FROM Authors a INNER JOIN AuthorShip ash ON a.AuthorID = ash.AuthorID

WHERE AuthorName = 'Агата' AND AuthorSurname = 'Кристи');


Изменение данных

 

Происходит с помощью инструкции UPDATE. Поля, значения которых нужно изменить, указываются в разделе SET. Например, изменить название г. Ступино на Новое Ступино, а его индекс на 142900

 

UPDATE Cities

SET CityName = 'Новое Ступино', PostCode = '142900'

WHERE CityName = 'Ступино';

Если необходимо изменить несколько полей, в разделе SET их указывают через запятую. В раздел WHERE можно вставлять подзапросы, так же, как в инструкции DELETE. Например, отметить, что читатель Романов сдал все книги.

 

UPDATE BookLending

SET ReturnFlag = 1

WHERE ReaderID =

(SELECT ReaderID

FROM Readers

WHERE ReaderSurname = 'Романов')

 

Подзапрос также может находиться в разделе SET.

Изменить жанр книги «Мертвые души» на «Роман». Для этого необходимо изменить поле GenreID в таблице Books, при этом само название жанра менять ни к чему.

 

UPDATE Books

SET GenreID = (SELECT GenreID FROM Genres WHERE GenreName = 'Роман')

WHERE BookName = 'Мертвые души';

 









Дата добавления: 2018-09-24; просмотров: 247;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.012 сек.