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; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!