다중 테이블 쿼리 예시: 학생 성과 관리 시스템

목차

1단계: 데이터베이스 및 데이터 테이블 생성

2단계: 데이터 삽입

3단계: 다중 테이블 쿼리 예

1. 학생 테이블의 모든 기록을 쿼리합니다.

2. 학생 테이블의 2~4번째 기록을 조회한다. 

3. 학생 테이블에서 전체 학생의 학번(id), 이름(name), 학과(학과) 정보를 조회한다.

4. 학생 테이블에서 컴퓨터학과, 영어학과 학생 정보를 조회합니다.

5. 학생 테이블에서 18~22세 학생의 정보를 조회합니다.

6. 학생 테이블에서 각 학과에 몇 명이 있는지 쿼리합니다.

7. 점수표에서 과목별 최고점수를 조회한다

8. Li Si의 시험 과목(c_name)과 시험 점수(학년)를 쿼리합니다.

9. 연결을 통해 전체 학생정보 및 시험정보 조회

10. 각 학생의 총점을 계산합니다.

11. 시험과목별 평균점수 계산

12. 컴퓨터 점수가 95점 미만인 학생의 정보를 조회합니다.

13. 컴퓨터 시험과 영어 시험을 모두 치른 학생의 정보를 조회합니다.

14. 컴퓨터 시험 점수를 높은 순으로 정렬하세요.

15. 학생 테이블과 점수 테이블에서 학생 번호를 쿼리하고 쿼리 결과를 병합합니다.

16. Zhang 또는 Wang이라는 이름의 학생의 이름, 학과, 시험 과목 및 점수를 쿼리합니다.

 17. 후난성 학생의 이름, 나이, 학과, 시험과목, 점수를 조회합니다.

요약하다


소개: 오늘날의 데이터베이스 애플리케이션에서 다중 테이블 쿼리는 매우 중요한 기술입니다. 이를 통해 다양한 데이터 테이블에서 관련 데이터를 얻을 수 있으며 실제 응용 프로그램에서 매우 일반적입니다. 이 블로그에서는 학생 및 성적 테이블을 예시로 삼아 다중 테이블 쿼리를 사용하여 간단한 학생 성과 관리 시스템을 만드는 방법을 단계별로 설명합니다.

1단계: 데이터베이스 및 데이터 테이블 생성

먼저 "학생 성과 관리 시스템"이라는 이름의 데이터베이스를 만들어야 합니다. 그런 다음 데이터베이스에 "student" 및 "score" 테이블이라는 두 개의 데이터 테이블을 만듭니다. "student" 테이블은 학생들의 기본 정보를 저장하는 데 사용되고, "score" 테이블은 학생들의 점수 정보를 저장하는 데 사용된다.

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단계: 데이터 삽입

다음으로, 후속 쿼리 및 시연을 위해 "student" 테이블과 "score" 테이블에 일부 샘플 데이터를 삽입합니다.

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), 이름(name), 학과(학과) 정보를 조회한다.

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. Li Si의 시험 과목(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. Zhang 또는 Wang이라는 이름의 학생의 이름, 학과, 시험 과목 및 점수를 쿼리합니다.

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