Пример запроса из нескольких таблиц: система управления успеваемостью учащихся

Оглавление

Шаг 1. Создайте базу данных и таблицы данных.

Шаг 2. Вставьте данные

Шаг 3. Пример запроса к нескольким таблицам

1. Запросить все записи в таблице учеников.

2. Запросите записи со 2-й по 4-ю таблицы учащихся. 

3. Запросить номер студента (id), имя (имя) и информацию об отделе (отделе) всех студентов из таблицы студентов.

4. Запросить информацию о студентах компьютерного факультета и английского факультета из таблицы студентов.

5. Запросить информацию об учащихся в возрасте от 18 до 22 лет из таблицы учащихся.

6. Запросить количество людей в каждом отделе из таблицы студентов.

7. Запросите наивысший балл по каждому предмету из таблицы оценок.

8. Запросите испытуемых Ли Си (c_name) и результаты тестов (оценка

9. Запрашивайте информацию обо всех студентах и ​​информацию об экзаменах через соединение.

10. Подсчитайте общий балл каждого ученика.

11. Подсчитайте средний балл по каждому предмету экзамена.

12. Запросите информацию об учащихся, чьи баллы по компьютеру ниже 95.

13. Запросите информацию об учащихся, сдавших экзамены по компьютеру и английскому языку.

14. Отсортируйте результаты компьютерного экзамена от большего к меньшему.

15. Запросите номер учащегося из таблицы учащихся и таблицы оценок, а затем объедините результаты запроса.

16. Запросите имя, факультет, экзаменационные предметы и оценки студентов по имени Чжан или Ван.

 17. Запросите имена, возраст, факультеты, экзаменационные предметы и оценки студентов из провинции Хунань.

Подведем итог


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

Шаг 1. Создайте базу данных и таблицы данных.

Во-первых, нам нужно создать базу данных, которую мы назовем «Система управления успеваемостью студентов». Затем создайте в базе данных две таблицы данных: таблицы «студент» и «оценка». Таблица «Студент» используется для хранения основной информации об учениках, а таблица «Оценки» используется для хранения информации об оценках учащихся.

CREATE DATABASE 学生成绩管理系统;

USE 学生成绩管理系统;

CREATE TABLE student (
  id INT(10) NOT NULL UNIQUE PRIMARY KEY,
  name VARCHAR(20) NOT NULL,
  sex VARCHAR(4),
  birth YEAR,
  department VARCHAR(20),
  address VARCHAR(50)
);

CREATE TABLE score (
  id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT,
  stu_id INT(10) NOT NULL,
  c_name VARCHAR(20),
  grade INT(10)
);

Шаг 2. Вставьте данные

Затем мы вставляем некоторые образцы данных в таблицу «студент» и таблицу «оценка» для последующего запроса и демонстрации.

INSERT INTO student VALUES(901, '张老大', '男', 1985, '计算机系', '北京市海淀区');
INSERT INTO student VALUES(902, '张老二', '男', 1986, '中文系', '北京市昌平区');
INSERT INTO student VALUES(903, '张三', '女', 1990, '中文系', '湖南省永州市');
INSERT INTO student VALUES(904, '李四', '男', 1990, '英语系', '辽宁省阜新市');
INSERT INTO student VALUES(905, '王五', '女', 1991, '英语系', '福建省厦门市');
INSERT INTO student VALUES(906, '王六', '男', 1988, '计算机系', '湖南省衡阳市');

INSERT INTO score VALUES(NULL, 901, '计算机', 98);
INSERT INTO score VALUES(NULL, 901, '英语', 80);
INSERT INTO score VALUES(NULL, 902, '计算机', 65);
INSERT INTO score VALUES(NULL, 902, '中文', 88);
INSERT INTO score VALUES(NULL, 903, '中文', 95);
INSERT INTO score VALUES(NULL, 904, '计算机', 70);
INSERT INTO score VALUES(NULL, 904, '英语', 92);
INSERT INTO score VALUES(NULL, 905, '英语', 94);
INSERT INTO score VALUES(NULL, 906, '计算机', 90);
INSERT INTO score VALUES(NULL, 906, '英语', 85);

Шаг 3. Пример запроса к нескольким таблицам

1. Запросить все записи в таблице учеников.

SELECT * FROM student;

2. Запросите записи со 2-й по 4-ю таблицы учащихся. 

SELECT * FROM student LIMIT 1 OFFSET 1; -- This will fetch the second record
SELECT * FROM student LIMIT 1 OFFSET 2; -- This will fetch the third record
SELECT * FROM student LIMIT 1 OFFSET 3; -- This will fetch the fourth record

3. Запросить номер студента (id), имя (имя) и информацию об отделе (отделе) всех студентов из таблицы студентов.

SELECT id, name, department FROM student;

4. Запросить информацию о студентах компьютерного факультета и английского факультета из таблицы студентов.

SELECT * FROM student WHERE department IN ('计算机系', '英语系');

5. Запросить информацию об учащихся в возрасте от 18 до 22 лет из таблицы учащихся.

SELECT * FROM student WHERE YEAR(CURRENT_DATE) - birth BETWEEN 18 AND 22;

6. Запросить количество людей в каждом отделе из таблицы студентов.

SELECT department, COUNT(*) AS total_students FROM student GROUP BY department;

7. Запросите наивысший балл по каждому предмету из таблицы оценок.

SELECT c_name, MAX(grade) AS max_grade FROM score GROUP BY c_name;

8. Запросите испытуемых Ли Си (c_name) и результаты тестов (оценка

SELECT c_name, grade FROM score WHERE stu_id = (SELECT id FROM student WHERE name = '李四');

9. Запрашивайте информацию обо всех студентах и ​​информацию об экзаменах через соединение.

SELECT s.id, s.name, s.sex, s.birth, s.department, s.address, sc.c_name, sc.grade
FROM student s
JOIN score sc ON s.id = sc.stu_id;

10. Подсчитайте общий балл каждого ученика.

SELECT s.id, s.name, SUM(sc.grade) AS total_score
FROM student s
JOIN score sc ON s.id = sc.stu_id
GROUP BY s.id, s.name;

11. Подсчитайте средний балл по каждому предмету экзамена.

SELECT c_name, AVG(grade) AS average_grade
FROM score
GROUP BY c_name;

12. Запросите информацию об учащихся, чьи баллы по компьютеру ниже 95.

SELECT s.id, s.name, s.department, sc.c_name, sc.grade
FROM student s
JOIN score sc ON s.id = sc.stu_id
WHERE sc.c_name = '计算机' AND sc.grade < 95;

13. Запросите информацию об учащихся, сдавших экзамены по компьютеру и английскому языку.

SELECT s.id, s.name, s.department, sc.c_name, sc.grade
FROM student s
JOIN score sc ON s.id = sc.stu_id
WHERE sc.c_name IN ('计算机', '英语')
GROUP BY s.id, s.name, s.department
HAVING COUNT(DISTINCT sc.c_name) = 2;

14. Отсортируйте результаты компьютерного экзамена от большего к меньшему.

SELECT s.id, s.name, s.department, sc.c_name, sc.grade
FROM student s
JOIN score sc ON s.id = sc.stu_id
WHERE sc.c_name = '计算机'
ORDER BY sc.grade DESC;

15. Запросите номер учащегося из таблицы учащихся и таблицы оценок, а затем объедините результаты запроса.

SELECT s.id AS stu_id, s.name AS stu_name, sc.c_name, sc.grade
FROM student s
LEFT JOIN score sc ON s.id = sc.stu_id;

16. Запросите имя, факультет, экзаменационные предметы и оценки студентов по имени Чжан или Ван.

SELECT s.name, s.department, sc.c_name, sc.grade
FROM student s
JOIN score sc ON s.id = sc.stu_id
WHERE s.name LIKE '张%' OR s.name LIKE '王%';

 17. Запросите имена, возраст, факультеты, экзаменационные предметы и оценки студентов из провинции Хунань.

SELECT s.name, YEAR(CURRENT_DATE) - s.birth AS age, s.department, sc.c_name, sc.grade
FROM student s
JOIN score sc ON s.id = sc.stu_id
WHERE s.address LIKE '%湖南%';

Подведем итог

В этой статье в качестве примера рассматривается система управления успеваемостью учащихся и подробно описывается метод использования операторов SQL для получения связанных данных из разных таблиц данных посредством отображения примеров запросов из нескольких таблиц. Овладение навыками многотабличных запросов может помочь нам более эффективно управлять базой данных в практических приложениях и повысить эффективность поиска и анализа данных. Я надеюсь, что эта запись в блоге будет полезна вам при изучении и применении многотабличных запросов. Я надеюсь, что вы можете следовать за мной. Если у вас есть какие-либо вопросы, вы также можете отправить мне личное сообщение.

рекомендация

отblog.csdn.net/weixin_62304542/article/details/131861586