Введение
В этом проекте вы научитесь создавать систему управления информацией о студентах с использованием MySQL. Эта система включает две таблицы: student_info и student_score, между которыми существует связь по внешнему ключу.
👀 Предварительный просмотр
MySQL [studentSys]> DESC student_info;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| Id | int | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.002 sec)
MySQL [studentSys]> DESC student_score;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| Id | int | NO | PRI | NULL | |
| score | varchar(4) | YES | | NULL | |
| Sid | int | YES | MUL | NULL | |
+-------+------------+------+-----+---------+-------+
3 rows in set (0.001 sec)
🎯 Задачи
В этом проекте вы научитесь:
- Как запустить сервер MySQL и войти в терминал MySQL
- Как создавать базу данных и таблицы с использованием SQL-инструкций
- Как установить связь по внешнему ключу между двумя таблицами
🏆 Достижения
После завершения этого проекта вы сможете:
- Понять концепцию реляционной базы данных и научиться создавать и управлять таблицами
- Реализовать ограничение по внешнему ключу для обеспечения целостности данных между связанными таблицами
- Применить свои знания SQL для создания простой системы управления информацией о студентах
Запустить MySQL и создать базу данных
На этом шаге вы научитесь запускать сервер MySQL и создавать базу данных studentSys.
Запустите сервер MySQL:
sudo /etc/init.d/mysql startВойдите в терминал MySQL:
mysql -urootСоздайте новый файл с именем
studentSys.sqlв директории/home/labex/project.В файле
studentSys.sqlсоздайте базу данныхstudentSys:DROP DATABASE IF EXISTS studentSys; CREATE DATABASE IF NOT EXISTS studentSys CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;Инструкция
DROP DATABASE IF EXISTSпроверяет, существует ли уже база данныхstudentSys, и если существует, то удаляет ее. Затем инструкцияCREATE DATABASE IF NOT EXISTSсоздает базу данныхstudentSysс указанным набором символов и правилом сравнения.
Создать таблицу student_info
На этом шаге вы научитесь создавать таблицу student_info.
В файле
studentSys.sqlиспользуйте базу данныхstudentSys:USE studentSys;Создайте таблицу
student_info:DROP TABLE IF EXISTS student_info; CREATE TABLE student_info ( Id INT NOT NULL AUTO_INCREMENT, name VARCHAR(10), PRIMARY KEY (Id) );Инструкция
DROP TABLE IF EXISTSпроверяет, существует ли уже таблицаstudent_info, и если существует, то удаляет ее. Затем инструкцияCREATE TABLEсоздает таблицуstudent_infoс двумя столбцами:Idиname. СтолбецIdустановлен как первичный ключ и настроен на автоматическое увеличение.
Создать таблицу student_score и установить связь по внешнему ключу
На этом шаге вы научитесь создавать таблицу student_score и устанавливать связь по внешнему ключу между таблицей student_score и таблицей student_info.
В файле
studentSys.sqlсоздайте таблицуstudent_score:DROP TABLE IF EXISTS student_score; CREATE TABLE student_score ( Id INT NOT NULL, score VARCHAR(4), Sid INT, PRIMARY KEY (Id), FOREIGN KEY (Sid) REFERENCES student_info(Id) );Инструкция
DROP TABLE IF EXISTSпроверяет, существует ли уже таблицаstudent_score, и если существует, то удаляет ее. Затем инструкцияCREATE TABLEсоздает таблицуstudent_scoreс тремя столбцами:Id,scoreиSid.Инструкция
PRIMARY KEY (Id)устанавливает столбецIdкак первичный ключ для таблицыstudent_score.Инструкция
FOREIGN KEY (Sid) REFERENCES student_info(Id)устанавливает связь по внешнему ключу между столбцомSidв таблицеstudent_scoreи столбцомIdв таблицеstudent_info. Это означает, что значения в столбцеSidтаблицыstudent_scoreдолжны совпадать с значениями в столбцеIdтаблицыstudent_info.В командной строке MySQL выполните следующую команду для запуска скрипта
studentSys.sql:
SOURCE ~/project/studentSys.sql
После выполнения этих шагов вы создали базу данных studentSys, таблицу student_info и таблицу student_score, а также установили связь по внешнему ключу между двумя таблицами.
MySQL [studentSys]> DESC student_info;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| Id | int | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.002 sec)
MySQL [studentSys]> DESC student_score;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| Id | int | NO | PRI | NULL | |
| score | varchar(4) | YES | | NULL | |
| Sid | int | YES | MUL | NULL | |
+-------+------------+------+-----+---------+-------+
3 rows in set (0.001 sec)
Резюме
Поздравляем! Вы завершили этот проект. Вы можете попрактиковаться в других лабораторных работах в LabEx, чтобы улучшить свои навыки.
