Введение
В этой лабораторной работе вы изучите основные навыки создания и управления таблицами в SQLite, легковесном и бессерверном движке баз данных, идеально подходящем для небольших приложений. Вы изучите типы данных SQLite, создадите таблицы с первичными ключами, примените ограничения, такие как NOT NULL и UNIQUE, проверите структуры таблиц с помощью команды .schema и безопасно удалите таблицы. Благодаря пошаговым упражнениям в среде LabEx VM вы получите практический опыт использования инструмента командной строки sqlite3 для создания и управления таблицами баз данных. Эта лабораторная работа предназначена для начинающих и предлагает понятный путь к пониманию управления таблицами SQLite.
Подключение к SQLite и создание таблицы contacts
На этом первом шаге вы подключитесь к базе данных SQLite и создадите свою первую таблицу с именем contacts. SQLite — это легковесный движок баз данных, который хранит данные в одном файле. Вы будете использовать инструмент командной строки sqlite3 для взаимодействия с базой данных.
Откройте терминал в среде LabEx VM. Убедитесь, что вы находитесь в рабочем каталоге по умолчанию
/home/labex/project.Подключитесь к базе данных SQLite с именем
test.dbс помощью инструментаsqlite3. Эта команда создаст файл базы данных, если он еще не существует.sqlite3 test.dbЭта команда открывает оболочку SQLite, и вы увидите приглашение, похожее на
sqlite>, указывающее, что вы находитесь в среде SQLite.Создайте таблицу с именем
contactsсо столбцами дляid,nameиphone. Введите следующую команду SQL в командной строкеsqlite>:CREATE TABLE contacts ( id INTEGER PRIMARY KEY, name TEXT, phone TEXT );Эта команда создает таблицу с именем
contacts. Столбецidявляется целым числом и обозначен какPRIMARY KEY(первичный ключ), что означает, что он будет однозначно идентифицировать каждую строку в таблице. Столбцыnameиphoneимеют типTEXT(текст), который может хранить любые строковые данные.Давайте разберем команду:
CREATE TABLE contacts: Это указывает SQLite создать новую таблицу с именемcontacts.id INTEGER PRIMARY KEY: Это определяет столбец с именемidс типом данныхINTEGER(целое число). ОграничениеPRIMARY KEY(первичный ключ) гарантирует, что каждое значение в этом столбце является уникальным и служит основным идентификатором для каждой строки.name TEXT: Это определяет столбец с именемnameс типом данныхTEXT(текст), который может хранить любые строковые данные.phone TEXT: Это определяет столбец с именемphoneс типом данныхTEXT(текст), который может хранить любые строковые данные.
Вставка данных в таблицу contacts
Теперь, когда вы создали таблицу contacts, давайте вставим в нее некоторые данные. Вы будете использовать оператор INSERT INTO для добавления новых строк в таблицу.
Вставьте новый контакт в таблицу
contacts. Выполните эту команду в командной строкеsqlite>:INSERT INTO contacts (name, phone) VALUES ('John Doe', '123-456-7890');Эта команда вставляет новую строку в таблицу
contactsс именем 'John Doe' и номером телефона '123-456-7890'. Столбцуidбудет автоматически присвоено уникальное значение, поскольку он является первичным ключом (primary key).Давайте разберем команду:
INSERT INTO contacts: Это указывает SQLite вставить данные в таблицуcontacts.(name, phone): Это указывает столбцы, в которые вы хотите вставить данные.VALUES ('John Doe', '123-456-7890'): Это указывает значения, которые будут вставлены в соответствующие столбцы.
Вставьте еще один контакт в таблицу
contacts:INSERT INTO contacts (name, phone) VALUES ('Jane Smith', '987-654-3210');Эта команда вставляет еще одну строку в таблицу
contactsс именем 'Jane Smith' и номером телефона '987-654-3210'.
Извлечение данных из таблицы contacts
Теперь, когда вы вставили данные в таблицу contacts, давайте извлечем их. Вы будете использовать оператор SELECT для запроса к таблице и отображения данных.
Извлеките все данные из таблицы
contacts. Выполните эту команду в командной строкеsqlite>:SELECT * FROM contacts;Эта команда выбирает все столбцы (
*) из таблицыcontactsи отображает результаты.Ожидаемый вывод (Expected Output):
1|John Doe|123-456-7890 2|Jane Smith|987-654-3210Вывод показывает два контакта, которые вы вставили, вместе с их автоматически назначенными значениями
id.Давайте разберем команду:
SELECT *: Это указывает SQLite выбрать все столбцы из таблицы.FROM contacts: Это указывает таблицу, из которой вы хотите извлечь данные.
Извлеките только столбцы
nameиphoneиз таблицыcontacts:SELECT name, phone FROM contacts;Эта команда выбирает только столбцы
nameиphoneиз таблицыcontactsи отображает результаты.Ожидаемый вывод (Expected Output):
John Doe|123-456-7890 Jane Smith|987-654-3210
Создание таблицы users с ограничениями
Ограничения (constraints) — это правила, которые обеспечивают целостность данных в таблице. Давайте добавим ограничения NOT NULL и UNIQUE к новой таблице под названием users.
Создайте таблицу с именем
usersс ограничениями. Выполните эту команду в командной строкеsqlite>:CREATE TABLE users ( id INTEGER PRIMARY KEY, username TEXT NOT NULL UNIQUE, email TEXT NOT NULL, age INTEGER );Эта команда создает таблицу с именем
usersсо следующими ограничениями:usernameне может бытьNULLи должен бытьUNIQUE.emailне может бытьNULL.
Давайте разберем команду:
CREATE TABLE users: Это указывает SQLite создать новую таблицу с именемusers.id INTEGER PRIMARY KEY: Это определяет столбец с именемidс типом данныхINTEGER. ОграничениеPRIMARY KEYгарантирует, что каждое значение в этом столбце является уникальным и служит первичным идентификатором для каждой строки.username TEXT NOT NULL UNIQUE: Это определяет столбец с именемusernameс типом данныхTEXT. ОграничениеNOT NULLгарантирует, что этот столбец не может быть пустым, а ограничениеUNIQUEгарантирует, что все значения в этом столбце различны.email TEXT NOT NULL: Это определяет столбец с именемemailс типом данныхTEXT. ОграничениеNOT NULLгарантирует, что этот столбец не может быть пустым.age INTEGER: Это определяет столбец с именемageс типом данныхINTEGER.
Теперь давайте попробуем вставить некоторые данные, которые нарушают эти ограничения, чтобы увидеть, как они работают. Сначала попробуйте вставить пользователя без имени пользователя (username):
INSERT INTO users (email, age) VALUES ('test@example.com', 25);Вы увидите ошибку, потому что столбец
usernameопределен какNOT NULL.Ожидаемый вывод (Expected Output):
Error: NOT NULL constraint failed: users.usernameЭта ошибка показывает, что SQLite применяет ограничение
NOT NULLкusername, предотвращая вставку.Далее попробуйте вставить пользователя с повторяющимся именем пользователя (username). Сначала вставьте допустимого пользователя:
INSERT INTO users (username, email, age) VALUES ('johndoe', 'john.doe@example.com', 30);Затем попробуйте вставить другого пользователя с тем же именем пользователя:
INSERT INTO users (username, email, age) VALUES ('johndoe', 'jane.doe@example.com', 25);Вы увидите ошибку, потому что столбец
usernameопределен какUNIQUE.Ожидаемый вывод (Expected Output):
Error: UNIQUE constraint failed: users.usernameЭта ошибка демонстрирует, что SQLite применяет ограничение
UNIQUEкusername, предотвращая повторяющиеся значения.
Просмотр структуры таблицы с помощью .schema
Вы можете просмотреть структуру таблицы с помощью команды .schema. Эта команда отображает SQL-запрос, использованный для создания таблицы, включая имена столбцов, типы данных и ограничения (constraints).
Просмотрите структуру таблицы
users. Выполните эту команду в командной строкеsqlite>:.schema usersОжидаемый вывод (Expected Output):
CREATE TABLE users ( id INTEGER PRIMARY KEY, username TEXT NOT NULL UNIQUE, email TEXT NOT NULL, age INTEGER );Вывод показывает оператор
CREATE TABLEдля таблицыusers, включая ограниченияNOT NULLиUNIQUEдля столбцаusername.Команда
.schema— полезный инструмент для понимания структуры ваших таблиц и проверки правильности определения ограничений.Выйдите из оболочки SQLite:
.quitЭта команда выйдет из оболочки SQLite и вернет вас в терминал Linux.
ВАЖНО (IMPORTANT): Убедитесь, что вы выполнили
.exitперед нажатием кнопки "Continue". В противном случае этот шаг не может быть проверен, поскольку история sqlite не будет записана.
Удаление таблицы contacts
Вы можете удалить таблицу из базы данных с помощью команды DROP TABLE. Эта команда навсегда удаляет таблицу и все ее данные, поэтому используйте ее с осторожностью.
Подключитесь к базе данных
test.db:sqlite3 test.dbУдалите таблицу
contacts. Выполните эту команду в командной строкеsqlite>:DROP TABLE contacts;Эта команда удаляет таблицу
contactsи все ее данные из базы данных.Предупреждение (Warning): Это действие необратимо. После удаления таблицы вы не сможете восстановить ее или ее данные.
Убедитесь, что таблица
contactsбыла удалена, попытавшись выбрать из нее данные:SELECT * FROM contacts;Вы увидите ошибку, потому что таблица
contactsбольше не существует.Выйдите из оболочки SQLite:
.quit
Резюме
В этой лабораторной работе вы изучили основные навыки создания и управления таблицами в SQLite. Вы изучили типы данных SQLite, создали таблицы с первичными ключами (primary keys), применили ограничения (constraints), такие как NOT NULL и UNIQUE, просмотрели структуры таблиц с помощью команды .schema и безопасно удалили таблицы. Эти навыки необходимы для работы с базами данных SQLite и создания приложений, управляемых данными (data-driven applications).


