Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание БД в SQLite.doc
Скачиваний:
128
Добавлен:
02.04.2015
Размер:
331.26 Кб
Скачать

Insert into Исполнители values (null,'Peter Gabriel');

Мы добавили в таблицу «Исполнители» в колонки «IDИсполнителя» и «ИмяИсполнителя» значения соответственно NULL и 'Peter Gabriel'. При этом, поскольку колонка «IDИсполнителя» указана как целочисленный первичный ключ (который не может содержать значения NULL), в это поле автоматически запишется значение, равное инкрементированному (увеличенному на 1) максимальному значению IDИсполнителя в таблице «Исполнители». Поскольку данных в таблице пока нет, в колонку, скорее всего, будет записано значение 1.

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

insert into Исполнители (ИмяИсполнителя)

values ('Bruce Hornsby');

Здесь мы указали имя таблицы, затем в скобках – список колонок таблицы, куда будут вставлены значения (в данном случае это одна колонка), затем – добавляемые туда значения ('Bruce Hornsby'). В поле «IDИсполнителя» окажется значение 2.

Продолжим заполнение таблиц.

insert into Исполнители (ИмяИсполнителя)

values ('Lyle Lovett');

insert into Исполнители (ИмяИсполнителя)

values ('Beach Boys');

Заполним теперь таблицу «Альбомы». В ней будет автоматически присваиваться значение полю «IDАльбома», а все остальные значения мы указываем явно.

insert into Альбомы (IDИсполнителя,Название,Дата)

values (1,'So',1984);

insert into Альбомы (IDИсполнителя,Название,Дата)

values (1,'Us',1992);

insert into Альбомы (IDИсполнителя,Название,Дата)

values (2,'The Way It Is',1986);

insert into Альбомы (IDИсполнителя,Название,Дата)

values (2,'Scenes from the Southside',1990);

insert into Альбомы (IDИсполнителя,Название,Дата)

values (1,'Security',1990);

insert into Альбомы (IDИсполнителя,Название,Дата)

values (3,'Joshua Judges Ruth',1992);

insert into Альбомы (IDИсполнителя,Название,Дата)

values (4,'Pet Sounds',1966);

Как видно, текстовые значения (VARCHAR(30)) оформляются в одинарные кавычки. Значения полей IDИсполнителя и IDАльбома автоматически инкрементируются.

Необходимо отметить, что SQLite не поддерживает ограничения по внешнему ключу FOREIGN KEY. То есть если мы внесем в таблицу Альбомы значение IDИсполнителя, которого нет в связанном поле IDИсполнителя таблицы Исполнители, то это будет произведено без ошибок и предупреждений. Исправить положение, включив поддержку ограничений по внешнему ключу, позволяет использование триггеров. Подробнее этот метод описан здесь:

http://www.sqlite.org/cvstrac/wiki?p=ForeignKeyTriggers

Отличительной особенностью SQLite также является чрезвычайно слабая типизация. Фактически, любое значение можно хранить в поле любого типа. Проблема соответствия типов поля и значение лежит целиком на совести программиста.

Теперь «нечаянно» внесем в таблицу некорректную запись.

insert into Исполнители (ИмяИсполнителя)

values ('Supernatural');

Мы перепутали имя исполнителя с его альбомом. Теперь необходимо изменить значение, записанное в таблицу. Для этого используется оператор UPDATE. При его использовании после ключевого слова UPDATE указывается имя таблицы, подлежащей изменению, затем – ключевое слово SET, после которого через запятую названия изменяемых колонок и после знака «=» значения, которые в них записываются. Если нам надо изменить только некоторые (например, какую-то конкретную строчку), то мы указываем условие отбора строк после слова WHERE. В противном случае изменяются все строчки в таблице.

Исправим ошибку.

UPDATE Исполнители SET ИмяИсполнителя = 'Santana' WHERE ArtistID=5;

Теперь можно добавить и соответствующий альбом.

insert into Альбомы (IDАльбома,IDИсполнителя,Название,Дата)

values (NULL,5,'Supernatural','1999');

Теперь нам надо удалить из таблицы какую-то информацию. Например, из таблицы «Альбомы» - сведения обо всех альбомах, название которых начинается с «Super».

Для удаления строк из таблицы используется оператор DELETE. Если не указано слово WHERE и условие отбора удаляемых строк, то удаляются все строки таблицы. В противном случае удаляются только строки, соответствующие указанному условию.

Выполним:

DELETE FROM Альбомы WHERE Название = 'Supernatural';

Теперь попробуем создать представление (view). Для этого служит оператор CREATE VIEW. Представление создается как виртуальная таблица, предоставляющая результаты некоторого запроса. В скрипте, создающем представление, необходимо указать запрос на выборку (оператор SELECT), результаты которого будет возвращать представление. Подробнее сам оператор SELECT, рассмотрены в следующей части.

Пусть представление «НазванияАльбомов» возвращает только список названий альбомов, информация о которых есть в базе данных, без дополнительной информации.

CREATE VIEW НазванияАльбомов AS

SELECT Название AS НазваниеАльбома FROM Альбомы;

Удаление представлений выполняется аналогично удалению таблиц.

DROP VIEW НазванияАльбомов;