Мазмунга өтүү

Таблицаларды бириктирүү: INNER JOIN

Программалоо SQL Татаалдыгы 1/5

Сабактын башталышы

Таблицаларды бириктирүү: INNER JOIN

Эки (же үч) таблицадан саптарды бир натыйжага чогултабыз

Негизги идея: Чыныгы маалымат базаларында маалымат кайталанбашы үчүн көп таблицага бөлүнөт. INNER JOIN ошол таблицаларды жалпы маани боюнча саптарды дал келтирип, кайра бириктирет, ошондо аларды бир кенен натыйжа катары окуй аласыз.
Сабактын аягында сиз төмөнкүнү жасай аласыз:
  • маалымат эмне үчүн бирден көп таблицада сакталарын түшүндүрүү,
  • ON шарты менен INNER JOIN жазуу,
  • суроолорду тыкан кылуу үчүн кыска таблица лакап аттарын колдонуу,
  • үч таблицаны чынжырча бириктирүү,
  • INNER JOIN кайсы саптарды калтырып, кайсынысын таштаарын алдын ала айтуу.

1. Маалымат эмне үчүн көп таблицада жатат

Мектеп баарын бир чоң таблицада сактайт деп элестетиңиз: ар бир окуучунун сабында дагы толук класстын аты жана мугалимдин аты кайталанат. Эгер Математиканы Mr. Adams окутса, ошол класстагы ар бир окуучу үчүн "Math" жана "Mr. Adams" деп кайра жазууга туура келет. Бул орунду ысырап кылат жана андан да жаманы: мугалимдин атын бир сапта оңдоп, калгандарын унутуп калсаңыз, маалыматыңыз өзүнө өзү каршы чыгат.

Тыкан чечим — ар бир нерсенин түрүн өз таблицасында сактап, аларды ачкычтар менен байланыштыруу (алгачкы жана тышкы ачкычтарды өткөн темада көргөнсүз):

  • students таблицасы (ар бир окуучуга бир сап),
  • classes таблицасы (ар бир класска бир сап),
  • teachers таблицасы (ар бир мугалимге бир сап).

Ар бир окуучунун сабы класстын толук атынын ордуна кичине class_id сактайт. Ат classes ичинде бир жолу жазылат. Окуучунун жанында класстын атын көрүү үчүн биз маалымат базасынан эки таблицаны кайра бириктирүүнү сурайбыз.

2. Биздин мисал мектеп базасы

Бул кичинекей базаны бүт сабак бою колдонобуз. Аны бир жолу түзүп, андан кийин төмөнкү суроолорду ага карата аткарыңыз.

CREATE TABLE teachers (
    teacher_id   INT PRIMARY KEY,
    teacher_name VARCHAR(50)
);

INSERT INTO teachers VALUES
    (1, 'Mr. Adams'),
    (2, 'Ms. Baker'),
    (3, 'Mr. Carter');
CREATE TABLE classes (
    class_id   INT PRIMARY KEY,
    class_name VARCHAR(50),
    teacher_id INT
);

INSERT INTO classes VALUES
    (101, 'Math',    1),
    (102, 'Science', 2),
    (103, 'Art',     3);
CREATE TABLE students (
    student_id INT PRIMARY KEY,
    name       VARCHAR(50),
    class_id   INT
);

INSERT INTO students VALUES
    (1, 'Alice', 101),
    (2, 'Ben',   101),
    (3, 'Carla', 102),
    (4, 'Dan',   103),
    (5, 'Eve',   NULL);

Демек, үч таблица төмөнкүнү камтыйт:

teachers

teacher_idteacher_name
1Mr. Adams
2Ms. Baker
3Mr. Carter

classes

class_idclass_nameteacher_id
101Math1
102Science2
103Art3

students

student_idnameclass_id
1Alice101
2Ben101
3Carla102
4Dan103
5EveNULL

Байкаңыз: Eve нын class_id = NULL — ал азырынча класска кошулган жок. Ага көз салыңыз; ал INNER JOIN эмнени калтырбаганын түшүнүүгө жардам берет.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө