
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 НазванияАльбомов;