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 = 'Мертвые души';
Проектирование баз данных
Нельзя просто так взять и построить базу данных. (с)
Казалось бы, куда проще. Взял и написал БД по образу и подобию уже существующих. Однако потом выясняется, что хорошей схемы базы нет, БД имеет слишком большой объем или чересчур медленно работает, какие-то возможности потерялись; людям, которые будут базу поддерживать, разобраться в ней очень непросто, да и сам разработчик в какой-то момент забывает, для чего нужно то или иное поле.
Чтобы избежать подобных проблем, весь проект условно разделяют на три основных этапа – концептуальное (инфологическое) проектирование, создание логической и физической моделей БД.
Концептуальное проектирование и построение ER-модели
|
|
Концептуальное проектирование – это построение информационной модели наиболее высокого уровня абстракции, без ориентации на какую-либо конкретную СУБД и модель данных.
На этом этапе проектирования используют так называемые ER-модели (Entity Relationship Model – модель «сущность-связь»). Модель была предложена американским ученым Питером Ченом в 1976 г. Основные элементы модели – сущность, отношение, атрибут.
Сущность – реальный или представляемый объект, информацию о котором необходимо хранить в базе данных (человек, книга, часть света, профессия и т.д.) Сущности состоят из экземпляров данных, т.е. если «профессия» – это сущность, то повар – экземпляр данной сущности.
Сущности могут быть связаны друг с другом. Например, сущность-человек имеет одну или несколько профессий.
Различают связи (отношения) трёх типов: один-к-одному, один-ко-многим, многие-ко-многим. Отношение может объединять две и более сущностей или связывать сущность саму с собой.
Атрибут – значимое свойство сущности или отношения (название профессии, имя и возраст человека, автор книги). Разным сущностям и отношениям могут принадлежать одноименные атрибуты (название для книги и для профессии).
Дата добавления: 2018-06-27; просмотров: 223; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!