Система управления оценками студентов

SQLSQLBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь создавать систему управления информацией о студентах с использованием 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 для создания простой системы управления информацией о студентах

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sql(("SQL")) -.-> sql/BasicSQLCommandsGroup(["Basic SQL Commands"]) sql(("SQL")) -.-> sql/DataDefinitionandIntegrityGroup(["Data Definition and Integrity"]) mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) mysql/BasicKeywordsandStatementsGroup -.-> mysql/use_database("Database Selection") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_database("Database Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/drop_database("Database Deletion") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_table("Table Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/drop_table("Table Removal") sql/BasicSQLCommandsGroup -.-> sql/create_table("CREATE TABLE statements") sql/BasicSQLCommandsGroup -.-> sql/drop_table("DROP TABLE statements") sql/DataDefinitionandIntegrityGroup -.-> sql/data_types("Data Types") sql/DataDefinitionandIntegrityGroup -.-> sql/constraints("Constraints") subgraph Lab Skills mysql/use_database -.-> lab-301414{{"Система управления оценками студентов"}} mysql/create_database -.-> lab-301414{{"Система управления оценками студентов"}} mysql/drop_database -.-> lab-301414{{"Система управления оценками студентов"}} mysql/create_table -.-> lab-301414{{"Система управления оценками студентов"}} mysql/drop_table -.-> lab-301414{{"Система управления оценками студентов"}} sql/create_table -.-> lab-301414{{"Система управления оценками студентов"}} sql/drop_table -.-> lab-301414{{"Система управления оценками студентов"}} sql/data_types -.-> lab-301414{{"Система управления оценками студентов"}} sql/constraints -.-> lab-301414{{"Система управления оценками студентов"}} end

Запуск MySQL и создание базы данных

На этом шаге вы научитесь запускать сервер MySQL и создавать базу данных studentSys.

  1. Запустите сервер MySQL:

    sudo /etc/init.d/mysql start
  2. Войдите в терминал MySQL:

    mysql -uroot
  3. Создайте новый файл с именем studentSys.sql в директории /home/labex/project.

  4. В файле 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.

  1. В файле studentSys.sql используйте базу данных studentSys:

    USE studentSys;
  2. Создайте таблицу 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.

  1. В файле 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.

  2. В командной строке 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, чтобы улучшить свои навыки.