рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдХреНрдпрд╛ рд╣реИ?
рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рд╣реИред рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ, рдХреЗрд╡рд▓ рдпрд╣ рдирд╣реАрдВ рдХрд┐ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣реА SQL рд╕реЗ рдореБрдЦреНрдп рдЕрдВрддрд░ рд╣реИ, рдЬреЛ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реИред рдЬрдм рдЖрдк SQL рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдордирдЪрд╛рд╣рд╛ рдкрд░рд┐рдгрд╛рдо рдмрддрд╛рддреЗ рд╣реИрдВред рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рд╡рд╣рд╛рдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдЯреАрдХ рдХреНрд░рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред
рдпрд╣ рд░рд┐рд▓реЗрд╢рди рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ тАФ рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдФрдкрдЪрд╛рд░рд┐рдХ рд╢рдмреНрджред рдЖрдк рдЗрд╕рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд░рд┐рд▓реЗрд╢рди рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрддреЗ рд╣реИрдВ, рдХреЛрдИ рдСрдкрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдПрдХ рд░рд┐рд▓реЗрд╢рди рд╣реА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдЖрдЦрд┐рд░реА рд╣рд┐рд╕реНрд╕рд╛ рдХреНрд▓реЛрдЬрд╝рд░ рдкреНрд░реЙрдкрд░реНрдЯреА рд╣реИред рдЖрдк рдХреЛрдИ рднреА рдСрдкрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░реЗрдВ тАФ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдлрд┐рд▓реНрдЯрд░ рдХрд░рдирд╛, рдХреЙрд▓рдо рдЪреБрдирдирд╛, рдЯреЗрдмрд▓ рдорд┐рд▓рд╛рдирд╛ тАФ рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ рд░рд┐рд▓реЗрд╢рди рд╣реА рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдЪреЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдСрдкрд░реЗрд╢рди рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЕрдЧрд▓реЗ рдХрд╛ рдЗрдирдкреБрдЯ рдмрдирддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЬрд╝рд░реВрд░рдд рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдЙрдиреНрд╣реЗрдВ рдкрд░рдд-рджрд░-рдкрд░рдд рдЬреЛрдбрд╝рддреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдХреЛ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХреНрд╕ рдХреА рддрд░рд╣ рд╕рдордЭреЗрдВред рд╣рд░ рдмреНрд▓реЙрдХ рдПрдХ рдЯреЗрдмрд▓ (рдпрд╛ рджреЛ) рд▓реЗрддрд╛ рд╣реИ, рдЙрд╕ рдкрд░ рдХреБрдЫ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рд╡рд╛рдкрд╕ рдПрдХ рдЯреЗрдмрд▓ рджреЗрддрд╛ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рдЗрдиреНрд╣реАрдВ рдмреНрд▓реЙрдХреНрд╕ рдХрд╛ рдЕрдВрджрд░реВрдиреА рддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдкрдХреА SQL рдХреНрд╡реЗрд░рд┐рдпреЛрдВ рдХреЛ рддреЛрдбрд╝рддреЗ рдФрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВред
рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рд╕рд┐рджреНрдзрд╛рдВрдд
рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╢рдмреНрджрд╛рд╡рд▓реА рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкрд╛рдБрдЪ рд╢рдмреНрдж рд╣реИрдВред
-
Relation рдмрд╕ рдПрдХ рдЯреЗрдмрд▓ рд╣реИред рдЗрд╕рдореЗрдВ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдФрд░ рдХреЙрд▓рдо рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдХрд╛рдИ тАФ рдЬреИрд╕реЗ рдХрд░реНрдордЪрд╛рд░реА рдпрд╛ рд╡рд┐рднрд╛рдЧ тАФ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдореБрдЪреНрдЪрдп рдХрд╛ рдирд┐рд░реВрдкрдг рдХрд░рддреА рд╣реИред рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдореЗрдВ рд╣рд░ рдСрдкрд░реЗрд╢рди рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд░рд┐рд▓реЗрд╢рди рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдПрдХ рд░рд┐рд▓реЗрд╢рди рджреЗрддрд╛ рд╣реИред
-
Tuple рдЙрд╕ рдЯреЗрдмрд▓ рдХреА рдПрдХ рдПрдХрд▓ рдкрдВрдХреНрддрд┐ рд╣реИред рдпрджрд┐ рдЖрдкрдХреА
EmployeesрдЯреЗрдмрд▓ рдореЗрдВ 10 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ, рддреЛ рдЙрд╕рдореЗрдВ 10 рдЯреНрдпреВрдкрд▓ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЯреНрдпреВрдкрд▓ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ тАФ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдХрд░реНрдордЪрд╛рд░реАред -
Attribute рдПрдХ рдХреЙрд▓рдо рд╣реИред
EmployeesрдЯреЗрдмрд▓ рдореЗрдВemployee_id,nameрдФрд░department_idрдЬреИрд╕реЗ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рд░ рдЯреНрдпреВрдкрд▓ рдореЗрдВ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рд╣реЛрдЧрд╛ред -
Degree рдХрд┐рд╕реА рд░рд┐рд▓реЗрд╢рди рдореЗрдВ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдпрджрд┐
EmployeesрдореЗрдВ рдкрд╛рдБрдЪ рдХреЙрд▓рдо рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдбрд┐рдЧреНрд░реА 5 рд╣реИред рдпрд╣ рддрдм рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рд░рд┐рд▓реЗрд╢рдиреЛрдВ рдХреЛ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ тАФ рдХреБрдЫ рдСрдкрд░реЗрд╢рдиреЛрдВ рдореЗрдВ рдбрд┐рдЧреНрд░реА рдХрд╛ рдореЗрд▓ рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред -
Cardinality рдХрд┐рд╕реА рд░рд┐рд▓реЗрд╢рди рдореЗрдВ рдЯреНрдпреВрдкрд▓реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреА
EmployeesрдЯреЗрдмрд▓ рдореЗрдВ 200 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ, рддреЛ рдЙрд╕рдХреА рдХрд╛рд░реНрдбрд┐рдиреИрд▓рд┐рдЯреА 200 рд╣реИред рдХрд╛рд░реНрдбрд┐рдиреИрд▓рд┐рдЯреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝рдиреЗ/рд╣рдЯрд╛рдиреЗ рд╕реЗ рдмрджрд▓рддреА рд╣реИ; рдбрд┐рдЧреНрд░реА рдХреЗрд╡рд▓ рдХреЙрд▓рдо рдЬреЛрдбрд╝рдиреЗ/рд╣рдЯрд╛рдиреЗ рдкрд░ рдмрджрд▓рддреА рд╣реИред
рдпреЗ рд╢рдмреНрдж рдЙрди рдЪреАрдЬрд╝реЛрдВ рд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ:

рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдмрдирд╛рдо рдЖрдо рд╢рдмреНрдж
рдкрд╣рд▓реЗ рдЗрдиреНрд╣реЗрдВ рдЕрдЪреНрдЫреЗ рд╕реЗ рд╕рдордЭ рд▓реЗрдВ, рдлрд┐рд░ рдСрдкрд░реЗрдЯрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рд▓рдЧреЗрдВрдЧреЗред
DBMS рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдСрдкрд░реЗрд╢рди
рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдореЗрдВ рдкрд╛рдБрдЪ рдореМрд▓рд┐рдХ рдСрдкрд░реЗрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВред рдмрд╛рдХреА рд╣рд░ рдСрдкрд░реЗрд╢рди тАФ joins, intersection, division тАФ рдЗрдиреНрд╣реАрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдирд┐рд░рдВрддрд░рддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдореИрдВ рджреЛ рдЯреЗрдмрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛:
Employees

Employees рдЯреЗрдмрд▓
Departments

Departments рдЯреЗрдмрд▓
Selection (╧Г)
Selection рдХрд┐рд╕реА рд╢рд░реНрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд▓реНрдЯрд░ рдХрд░рддреА рд╣реИред рдпрд╣ рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдореЗрдВ WHERE рдХреНрд▓реЙрдЬрд╝ рдХреЗ рд╕рдордХрдХреНрд╖ рд╣реИред
рдиреЛрдЯреЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
╧Г condition (Relation)
рдорд╛рди рд▓реЗрдВ рдЖрдк рдЙрди рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рд╡реЗрддрди 60,000 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ:
╧Г salary > 60000 (Employees)
рдкрд░рд┐рдгрд╛рдо рдПрдХ рдирдпрд╛ рд░рд┐рд▓реЗрд╢рди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд╣реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреА рдЬреЛ рдореЗрд▓ рдЦрд╛рддреА рд╣реИрдВ тАФ Alice рдФрд░ Carolред рдЯреЗрдмрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╡рд╣реА рд░рд╣рддреА рд╣реИ, рдпрд╛рдиреА рдЖрдк рдХреЗрд╡рд▓ рд╡реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣рдЯрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╢рд░реНрдд рдкреВрд░реА рдирд╣реАрдВ рдХрд░рддреАрдВред
рдпрд╣ SQL рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
SELECT * FROM Employees
WHERE salary > 60000;
Projection (╧А)
Projection рдХрд┐рд╕реА рд░рд┐рд▓реЗрд╢рди рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрд▓рдо рдЪреБрдирддреА рд╣реИ рдФрд░ рдмрд╛рдХреА рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИред рдЗрд╕рд╕реЗ рдЖрдк рдЯреЗрдмрд▓ рдХреЛ рдХреЗрд╡рд▓ рдЙрди рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рддрдХ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдкрд░рд╡рд╛рд╣ рд╣реИред
╧А attribute1, attribute2 (Relation)
рд╕рд┐рд░реНрдл рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдФрд░ рд╡реЗрддрди рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП:
╧А name, salary (Employees)
рдПрдХ рдмрд╛рдд рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдХреА рд╣реИ рдХрд┐ projection рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣рдЯрд╛ рджреЗрддреА рд╣реИред рдпрджрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрд▓рдо рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рджреЛ рдЯреНрдпреВрдкрд▓ рд╕рдорд╛рди рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХреЙрдкреА рдЖрддреА рд╣реИред
рдпрд╣ SQL рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
SELECT DISTINCT name, salary
FROM Employees;
Union (тИк)
Union рджреЛ рд░рд┐рд▓реЗрд╢рдиреЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдорд┐рд▓рд╛рдХрд░ рдЙрдирдХреЗ рд╕рднреА рдЯреНрдпреВрдкрд▓реНрд╕ рдХреЛ рдЬреЛрдбрд╝ рджреЗрддреА рд╣реИред рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЕрдкрдиреЗ-рдЖрдк рд╣рдЯ рдЬрд╛рддреА рд╣реИрдВред
рдиреЛрдЯреЗрд╢рди:
Relation1 тИк Relation2
рд╢рд░реНрдд рдпрд╣ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рд░рд┐рд▓реЗрд╢рди union-compatible рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрд╛рдиреА, рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рди рд╣реЛ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рднреА рд╕рдорд╛рди рд╣реЛрдВред рдЖрдк рдХрд░реНрдордЪрд╛рд░реА рдЯреЗрдмрд▓ рдХреЛ рд╡рд┐рднрд╛рдЧ рдЯреЗрдмрд▓ рд╕реЗ union рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреА рд╕реНрдХреАрдорд╛ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреАред
рдорд╛рди рд▓реЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ Contractors рдирд╛рдо рдХреА рдЯреЗрдмрд▓ рд╣реИ рдЬрд┐рд╕рдХреА рд╕рдВрд░рдЪрдирд╛ Employees рдЬреИрд╕реА рд╣реА рд╣реИред Union рдЖрдкрдХреЛ рджреЛрдиреЛрдВ рдЯреЗрдмрд▓реЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣рд░ рд╡реНрдпрдХреНрддрд┐ рджреЗрдЧрд╛, рдмрд┐рдирд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯреНрд╕ рдХреЗ:
Employees тИк Contractors
рдпрд╣ SQL рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
SELECT * FROM Employees
UNION
SELECT * FROM Contractors;
Set difference (тИТ)
Set difference рд╡реЗ рдЯреНрдпреВрдкрд▓ рд▓реМрдЯрд╛рддреА рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд░рд┐рд▓реЗрд╢рди рдореЗрдВ рддреЛ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдореЗрдВ рдирд╣реАрдВред рдЗрд╕реЗ рдШрдЯрд╛рд╡ рдХреА рддрд░рд╣ рд╕рдордЭреЗрдВ:
Relation1 тИТ Relation2
Union рдХреА рддрд░рд╣, рджреЛрдиреЛрдВ рд░рд┐рд▓реЗрд╢рди union-compatible рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдк рд╡реЗ рд╕рднреА рдХрд░реНрдордЪрд╛рд░реА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯрд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
Employees тИТ Contractors
рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдХреЗрд╡рд▓ рд╡реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреА рдЬреЛ Employees рдореЗрдВ рд╣реИрдВ рдФрд░ рдЬрд┐рдирдХрд╛ Contractors рдореЗрдВ рдХреЛрдИ рдореЗрд▓ рдирд╣реАрдВ рд╣реИред
SQL рд╕рдордХрдХреНрд╖:
SELECT * FROM Employees
EXCEPT
SELECT * FROM Contractors;
Cartesian product (├Ч)
Cartesian product рдкрд╣рд▓реЗ рд░рд┐рд▓реЗрд╢рди рдХреЗ рд╣рд░ рдЯреНрдпреВрдкрд▓ рдХреЛ рджреВрд╕рд░реЗ рд░рд┐рд▓реЗрд╢рди рдХреЗ рд╣рд░ рдЯреНрдпреВрдкрд▓ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ Employees рдореЗрдВ 4 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ рдФрд░ Departments рдореЗрдВ 3 рдкрдВрдХреНрддрд┐рдпрд╛рдБ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ 4 ├Ч 3 = 12 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреАред
Employees ├Ч Departments
рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рд╢рд╛рдпрдж рд╣реА рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ тАФ рдЖрдкрдХреЛ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдФрд░ рд╡рд┐рднрд╛рдЧреЛрдВ рдХреЗ рд╣рд░ рд╕рдВрднрд╡ рд╕рдВрдпреЛрдЬрди рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╡реЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдкрд╕ рдореЗрдВ рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВред рд▓реЗрдХрд┐рди Cartesian product рд╣реА joins рдХреА рдиреАрдВрд╡ рд╣реИред рдЖрдк рдЗрд╕реЗ selection рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рд╡реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд░рд╣реЗрдВ рдЬрд╣рд╛рдБ рд╕рдВрдмрдВрдз рдЕрд░реНрдердкреВрд░реНрдг рд╣реЛред
SQL рд╕рдордХрдХреНрд╖:
SELECT * FROM Employees, Departments;
рдпреЗ рдкрд╛рдБрдЪ рдСрдкрд░реЗрдЯрд░ рдмреБрдирд┐рдпрд╛рдж рд╣реИрдВред рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдореЗрдВ рдмрд╛рдХреА рд╕рдм рдЗрдиреНрд╣реЗрдВ рдорд┐рд▓рд╛рдХрд░ рд▓рд┐рдЦреЗ рдЧрдП рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╣реИрдВред
рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдореЗрдВ рдЬреЙрдЗрди рдСрдкрд░реЗрд╢рди
Joins рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдСрдкрд░реЗрд╢рди рд╣реИрдВ тАФ рдФрд░ рд╡реЗ рджрд┐рдЦрдиреЗ рдореЗрдВ рдЬрд┐рддрдиреЗ рдкреЗрдЪреАрджрд╛ рд▓рдЧрддреЗ рд╣реИрдВ, рдЙрддрдиреЗ рд╣реИрдВ рдирд╣реАрдВред
рд╣рд░ join рдмрд╕ рдПрдХ Cartesian product рдХреЗ рдмрд╛рдж selection рд╣реИред рдЖрдк рджреЛ рд░рд┐рд▓реЗрд╢рдиреЛрдВ рдХреЗ рд╕рднреА рдЯреНрдпреВрдкрд▓реНрд╕ рдХреЛ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЬреЛ рд╢рд░реНрдд рдирд╣реАрдВ рдкреВрд░реА рдХрд░рддреЗ рдЙрдиреНрд╣реЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рджреЗрддреЗ рд╣реИрдВред joins рд╢реЙрд░реНрдЯрд╣реИрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рд▓рд┐рдП рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рдкреВрд░рд╛ Cartesian product рдмрдирд╛рдирд╛ рдорд╣рдВрдЧрд╛ рд╣реЛрддрд╛ рд╣реИред join рд╕рдВрдпреЛрдЬрди рдХреЗ рджреМрд░рд╛рди рд╣реА рд╢рд░реНрдд рд▓рд╛рдЧреВ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рдШрдЯрддрд╛ рд╣реИред
Natural join (тЛИ)
Natural join рдЕрдкрдиреЗ-рдЖрдк рдЙрди рд╕рднреА рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдкрд░ рджреЛ рд░рд┐рд▓реЗрд╢рдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдирд╛рдо рд╕рдорд╛рди рд╣реИрдВ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЙрди рд╕рд╛рдЭрд╛ рдХреЙрд▓рдореЛрдВ рдХреА рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рддрд┐ рд░рдЦрддрд╛ рд╣реИ:
Employees тЛИ Departments
рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рдЯреЗрдмрд▓ рдореЗрдВ department_id рд╕рд╛рдЭрд╛ рд╣реИ, natural join рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рд╡рд╣ рдорд╛рди рдмрд░рд╛рдмрд░ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдорд┐рд▓рд╛ рджреЗрддрд╛ рд╣реИред Alice (department_id = 10) Engineering рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, Bob Marketing рд╕реЗ, рдЖрджрд┐ред
рдпрд╣рд╛рдБ рдХреЛрдИ рд╢рд░реНрдд рд▓рд┐рдЦрдиреА рдирд╣реАрдВ рдкрдбрд╝рддреА тАФ join рд╕реНрдХреАрдорд╛ рд╕реЗ рдЦреБрдж рдкрддрд╛ рд▓рдЧрд╛ рд▓реЗрддрд╛ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЙрд▓рдо рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдЖрдкрдХреА рдХреНрд╡реЗрд░реА рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред
SQL рд╕рдордХрдХреНрд╖:
SELECT * FROM Employees
NATURAL JOIN Departments;
Theta join (тЛИ╬╕)
Theta join рджреЛ рд░рд┐рд▓реЗрд╢рдиреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рд╢рд░реНрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ тАФ рд╢рд░реНрдд рдореЗрдВ рдХреЛрдИ рднреА рддреБрд▓рдирд╛ рдСрдкрд░реЗрдЯрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: =, тЙа, <, >, тЙд, тЙе.
Employees тЛИ salary > 60000 AND department_id = department_id Departments
рдпрд╣ рдЖрдкрдХреЛ join рдХреА рд╢рд░реНрдд рдкрд░ рдкреВрд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рджреЗрддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЖрдк рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ joins рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╡реЗ рднреАрддрд░ рд╕реЗ theta joins рд╣реА рд╣реЛрддреЗ рд╣реИрдВред
SQL рд╕рдордХрдХреНрд╖:
SELECT * FROM Employees, Departments
WHERE Employees.salary > 60000
AND Employees.department_id = Departments.department_id;
Equi join
Equi join рдПрдХ theta join рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╢рд░реНрдд рдХреЗрд╡рд▓ рд╕рдорд╛рдирддрд╛ (=) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдпрд╣ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рд╣реИред
Employees тЛИ Employees.department_id = Departments.department_id Departments
рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рджреЛрдиреЛрдВ рдЯреЗрдмрд▓реЛрдВ рдХреЗ рд╕рднреА рдХреЙрд▓рдо рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ department_id рджреЛ рдмрд╛рд░ рдЖрддрд╛ рд╣реИред рдпрд╣реА natural join рд╕реЗ рдореБрдЦреНрдп рдЕрдВрддрд░ рд╣реИ тАФ equi join рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЙрд▓рдо рдирд╣реАрдВ рд╣рдЯрд╛рддрд╛ред
SQL рд╕рдордХрдХреНрд╖:
SELECT * FROM Employees
INNER JOIN Departments
ON Employees.department_id = Departments.department_id;
Outer join
рдКрдкрд░ рджрд┐рдП рдЧрдП joins рдХреЗрд╡рд▓ рд╡рд╣реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рджреЛрдиреЛрдВ рд░рд┐рд▓реЗрд╢рдиреЛрдВ рдореЗрдВ рдореЗрд▓ рдореМрдЬреВрдж рд╣реЛред Outer join рдмрд┐рдирд╛ рдореЗрд▓ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рднреА рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдЕрдиреБрдкрд╕реНрдерд┐рдд рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП NULL рднрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рддреАрди рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
-
Left outer join (тЯХ) рдмрд╛рдПрдБ рд░рд┐рд▓реЗрд╢рди рдХреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд░рдЦрддрд╛ рд╣реИред рдпрджрд┐
EmployeesрдореЗрдВ рдХреЛрдИ рдкрдВрдХреНрддрд┐ рдРрд╕реЗ рд╡рд┐рднрд╛рдЧ рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓рддреА, рддреЛ рднреА рд╡рд╣ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЖрддреА рд╣реИ рдФрд░ рд╡рд┐рднрд╛рдЧ рдХреЗ рдХреЙрд▓рдо рдореЗрдВNULLрд╣реЛрддрд╛ рд╣реИред -
Right outer join (тЯЦ) рджрд╛рдПрдБ рд░рд┐рд▓реЗрд╢рди рдХреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд░рдЦрддрд╛ рд╣реИред рдЬрд┐рди рд╡рд┐рднрд╛рдЧреЛрдВ рдореЗрдВ рдХреЛрдИ рдХрд░реНрдордЪрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рд╡реЗ рдлрд┐рд░ рднреА рджрд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рдХреЙрд▓рдо рдореЗрдВ
NULLрд╣реЛрддрд╛ рд╣реИред -
Full outer join (тЯЧ) рджреЛрдиреЛрдВ рд░рд┐рд▓реЗрд╢рдиреЛрдВ рдХреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд░рдЦрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдУрд░ рд╕реЗ рдмрд┐рдирд╛ рдореЗрд▓ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЕрдиреБрдкрд╕реНрдерд┐рдд рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП
NULLрдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВред
рдЗрдирдХреЗ SQL рд╕рдордХрдХреНрд╖:
-- Left outer join
SELECT * FROM Employees
LEFT JOIN Departments
ON Employees.department_id = Departments.department_id;
-- Right outer join
SELECT * FROM Employees
RIGHT JOIN Departments
ON Employees.department_id = Departments.department_id;
-- Full outer join
SELECT * FROM Employees
FULL OUTER JOIN Departments
ON Employees.department_id = Departments.department_id;
Outer joins рддрдм рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрдм рдЖрдк рдмрд┐рдирд╛ рдореЗрд▓ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЦреЛ рдирд╣реАрдВ рд╕рдХрддреЗ тАФ рдЬреИрд╕реЗ рдЬрдм рдЖрдкрдХреЛ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдЪрд╛рд╣рд┐рдП, рдЪрд╛рд╣реЗ рдЙрдирдХрд╛ рд╡рд┐рднрд╛рдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореМрдЬреВрдж рд╣реЛ рдпрд╛ рдирд╣реАрдВред
рд╡реНрдпреБрддреНрдкрдиреНрди рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдСрдкрд░реЗрдЯрд░
Derived рдСрдкрд░реЗрдЯрд░ рд╡реЗ рд╢реЙрд░реНрдЯрдХрдЯ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рдХрд╡рд░ рдХрд┐рдП рдЧрдП рдкрд╛рдБрдЪ рдмреБрдирд┐рдпрд╛рджреА рдСрдкрд░реЗрдЯрд░реЛрдВ рд╕реЗ рдмрдиреЗ рд╣реИрдВред
Intersection (тИй)
Intersection рдХреЗрд╡рд▓ рд╡реЗ рдЯреНрдпреВрдкрд▓ рд▓реМрдЯрд╛рддреА рд╣реИ рдЬреЛ рджреЛрдиреЛрдВ рд░рд┐рд▓реЗрд╢рдиреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдВред Union рдФрд░ set difference рдХреА рддрд░рд╣, рджреЛрдиреЛрдВ рд░рд┐рд▓реЗрд╢рди union-compatible рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
Employees тИй Contractors
рдпрджрд┐ рдХреЛрдИ рдХрд░реНрдордЪрд╛рд░реА рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯрд░ рднреА рд╣реИ, рддреЛ рд╡рд╣ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рджрд┐рдЦреЗрдЧрд╛ред рдмрд╛рдХреА рд╕рднреА рд╣рдЯ рдЬрд╛рддреЗ рд╣реИрдВред
рдЕрдВрджрд░реВрдиреА рд░реВрдк рд╕реЗ, intersection рдмрд╕ set difference рдХреЛ рджреЛ рдмрд╛рд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ:
Employees тИй Contractors = Employees тИТ (Employees тИТ Contractors)
рдпрд╣ SQL рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
SELECT * FROM Employees
INTERSECT
SELECT * FROM Contractors;
Division (├╖)
Division рд╡рд╣ рдСрдкрд░реЗрдЯрд░ рд╣реИ рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ CS рдЫрд╛рддреНрд░реЛрдВ рдФрд░ рдЬреВрдирд┐рдпрд░реНрд╕ рдХреЛ рдЙрд▓рдЭрд╛ рджреЗрддрд╛ рд╣реИ тАФ рд▓реЗрдХрд┐рди рдЕрд╡рдзрд╛рд░рдгрд╛ рдЙрддрдиреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред
Division рдпрд╣ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрддреА рд╣реИ: "рд░рд┐рд▓реЗрд╢рди A рдореЗрдВ рдХреМрди рд╕реЗ рдЯреНрдпреВрдкрд▓реНрд╕ рд░рд┐рд▓реЗрд╢рди B рдХреЗ рд╕рднреА рдЯреНрдпреВрдкрд▓реНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ?"
рдорд╛рди рд▓реЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ CourseEnrollments рдЯреЗрдмрд▓ рд╣реИ рдЬреЛ рдЯреНрд░реИрдХ рдХрд░рддреА рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдЫрд╛рддреНрд░ рдХрд┐рди рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдирд╛рдорд╛рдВрдХрд┐рдд рд╣реИрдВ, рдФрд░ RequiredCourses рдЯреЗрдмрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рд╕рднреА рдкрд╛рдареНрдпрдХреНрд░рдо рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдЫрд╛рддреНрд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реИред Division рдЖрдкрдХреЛ рд╡реЗ рдЫрд╛рддреНрд░ рджреЗрддреА рд╣реИ рдЬреЛ рд╣рд░ рдЖрд╡рд╢реНрдпрдХ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдирд╛рдорд╛рдВрдХрд┐рдд рд╣реИрдВред
CourseEnrollments ├╖ RequiredCourses
рдЗрд╕реЗ рдкреЗрдЪреАрджрд╛ рдЗрд╕рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕реАрдзрд╛ SQL рд╕рдордХрдХреНрд╖ рдирд╣реАрдВ рд╣реИред SQL рдореЗрдВ division рджреЛрд╣рд░реА рдирдХрд╛рд░рд╛рддреНрдордХрддрд╛ рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд░рдиреА рдкрдбрд╝рддреА рд╣реИ тАФ "рд╡реЗ рдЫрд╛рддреНрд░ рдЦреЛрдЬреЗрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХ рдкрд╛рдареНрдпрдХреНрд░рдо рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рд╣реИ":
SELECT DISTINCT student_id FROM CourseEnrollments ce1
WHERE NOT EXISTS (
SELECT course_id FROM RequiredCourses rc
WHERE NOT EXISTS (
SELECT * FROM CourseEnrollments ce2
WHERE ce2.student_id = ce1.student_id
AND ce2.course_id = rc.course_id
)
);
рд╡рд╣ рджреЛрд╣рд░рд╛ NOT EXISTS рдкреИрдЯрд░реНрди SQL рдореЗрдВ division рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХрд╛ рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдЗрдВрдЯрд░рд╡реНрдпреВ рдореЗрдВ рдкреВрдЫрд╛ рдЬрд╛рдП "рд╕рднреА Y рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА X рдЦреЛрдЬреЗрдВ," рддреЛ division рд╡рд╣реА рдСрдкрд░реЗрдЯрд░ рд╣реИ рдЬрд┐рд╕реЗ рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдПред
Rename (╧Б)
Rename рдЖрдкрдХреЛ рдХрд┐рд╕реА рд░рд┐рд▓реЗрд╢рди рдпрд╛ рдЙрд╕рдХреЗ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдХреЛ рдирдпрд╛ рдирд╛рдо рджреЗрдиреЗ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдбреЗрдЯрд╛ рдирд╣реАрдВ рдмрджрд▓рддрд╛, рд╕рд┐рд░реНрдл рдирд╛рдо рдмрджрд▓рддрд╛ рд╣реИред
╧Б NewName (Relation)
рдпрд╛ рд░рд┐рд▓реЗрд╢рди рдФрд░ рдЙрд╕рдХреЗ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рджреЛрдиреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП:
╧Б NewName(attr1, attr2, ...) (Relation)
Rename рддрдм рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЯреЗрдмрд▓ рдХреЛ рдЦреБрдж рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛ тАФ рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдирд╛рдо рдЯрдХрд░рд╛рдПрдБрдЧреЗ рдФрд░ рдСрдкрд░реЗрд╢рди рдЕрд░реНрдерд╣реАрди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рддрдм рднреА рдХрд╛рдо рдЖрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдЪреЗрди рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рдФрд░ рдЪрд╛рд╣рддреЗ рд╣реЛрдВ рдХрд┐ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрд░реНрдердкреВрд░реНрдг рдирд╛рдо рд╣реЛрдВред
SQL рд╕рдордХрдХреНрд╖:
SELECT * FROM Employees AS E1;
-- рдпрд╛ рдХреЙрд▓рдо рдХрд╛ рдирд╛рдо рдмрджрд▓рддреЗ рд╣реБрдП:
SELECT employee_id AS id, name AS employee_name FROM Employees;
рдЗрди рддреАрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЬрд╝рд░реВрд░реА рд╣реИред Intersection рдФрд░ renaming рдЖрд╕рд╛рди рд╣реИрдВ, рдФрд░ division рд╡рд╣реА рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЯрд░рд╡реНрдпреВ рд╕реЗ рдкрд╣рд▓реЗ рдЕрднреНрдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдмрдирд╛рдо SQL
SQL рдФрд░ рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдПрдХ рдЬреИрд╕реА рдЪреАрдЬрд╝ рдирд╣реАрдВ рд╣реИрдВ тАФ рд▓реЗрдХрд┐рди SQL рдЗрдирдХреЗ рдмрд┐рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддреАред
рдореБрдЦреНрдп рдЕрдВрддрд░ рдЗрд╕ рдмрд╛рдд рдореЗрдВ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдХреНрд╡реЗрд░рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рд╕реЛрдЪрддреЗ рд╣реИрдВред рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╣реИ тАФ рдЖрдк рдкрд░рд┐рдгрд╛рдо рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдЯреАрдХ рдХреНрд░рдо рдмрддрд╛рддреЗ рд╣реИрдВред SQL рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реИ тАФ рдЖрдк рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреМрди рд╕рд╛ рдкрд░рд┐рдгрд╛рдо рдЪрд╛рд╣рд┐рдП, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдБ рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдБрдЪрдирд╛ рд╣реИред
рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВред рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдореЗрдВ, Engineering рдХреЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
╧А name, salary (╧Г department_id = 10 (Employees))
рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдмрддрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ: рдкрд╣рд▓реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдлрд┐рд▓реНрдЯрд░ рдХрд░реЛ, рдлрд┐рд░ рдХреЙрд▓рдо рдЪреБрдиреЛред рдСрдкрд░реЗрд╢рдиреЛрдВ рдХрд╛ рдХреНрд░рдо рд╕реНрдкрд╖реНрдЯ рд╣реИред
SQL рдореЗрдВ, рдЖрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
SELECT name, salary
FROM Employees
WHERE department_id = 10;
рдЖрдк рд╡рд╣ рдкрд░рд┐рдгрд╛рдо рд╡рд░реНрдгрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЪрд╛рд╣рд┐рдПред рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рдЙрд╕реЗ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ тАФ рдФрд░ рд╡реЗ рдЕрдВрджрд░реВрдиреА рдСрдкрд░реЗрд╢рди рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдпрд╣реА рд╣реИред SQL рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЙрдиреНрдореБрдЦ рднрд╛рд╖рд╛ рд╣реИ; рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдЗрд╕рдХрд╛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЖрдзрд╛рд░ рд╣реИред рдЬрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рдХреЛрдИ SQL рдХреНрд╡реЗрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЙрд╕реЗ рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред
SQL рд╡рд╣реАрдБ рд╕реЗ рдЖрдЧреЗ рднреА рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬрд╝рдмреНрд░рд╛ рдореЗрдВ рдЗрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдХреЛрдИ рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИ:
-
Aggregation -
SUM(),COUNT(),AVG() -
Grouping -
GROUP BY -
Ordering -
ORDER BY -
Duplicate handling - relational algebra works with sets (no duplicates); SQL works with multisets (duplicates allowed by default)
These features were added to SQL because real-world querying needs them. But they sit on top of the relational algebra foundation.
The bottom line is that understanding relational algebra tells you how your SQL queries are structured and transformed internally. It won't change how you write SQL day to day, but it will change how you reason about what your queries are actually doing.
Common Mistakes and Confusions
Most confusions with relational algebra come down to a couple of recurring misunderstandings. Let me go through them.
-
Treating SQL and relational algebra as the same thing. They're not. SQL is inspired by relational algebra, but the two aren't interchangeable. SQL is declarative and includes features like aggregation and ordering that relational algebra doesn't define. Relational algebra is a formal model; SQL is a practical language built on top of it.
-
Forgetting schema compatibility requirements. Union, intersection, and set difference all require union-compatible relations - same number of attributes, same data types in the same order. Trying to apply these operators to tables with different schemas won't work. This confuses people because joins have no such requirement.
-
Not understanding the division operator. Division is the one operator with no direct SQL equivalent, which is why it trips people up. If you see a query that asks "find all X associated with every Y," that's division. The SQL translation requires a double
NOT EXISTSpattern - it's not obvious, so it's worth practicing before an exam or interview. -
Thinking joins are standalone operators. They're not primitives. Every join is a cartesian product combined with a selection. Natural join, theta join, equi join - all of them are shorthand for that combination. Understanding this makes join behavior much easier to predict when results look unexpected.
Conclusion
Relational algebra is the theoretical backbone of every relational database system. Every query you write in SQL gets translated into a sequence of relational algebra operations before the database engine touches a single row.
The operators - selection, projection, union, set difference, cartesian product, and their derived counterparts - are the building blocks of that translation. Once you understand how they work and how they chain together, you stop seeing SQL as a black box and start seeing the structure underneath it.
That's the real value of learning relational algebra: understanding what your queries are actually doing, and not writing them in formal notation.

рд░рд┐рд▓реЗрд╢рдирд▓ рдЕрд▓реНрдЬebra FAQs
DBMS рдореЗрдВ рд░рд┐рд▓реЗрд╢рдирд▓ рдЕрд▓реНрдЬebra рдХреНрдпрд╛ рд╣реИ?
рд░рд┐рд▓реЗрд╢рдирд▓ рдЕрд▓реНрдЬebra рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рд╣реИ рдЬреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд░рд┐рд▓реЗрд╢рди (рдЯреЗрдмрд▓) рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИ рдФрд░ рд╣рд░ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирдпрд╛ рд░рд┐рд▓реЗрд╢рди рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ SQL рдХреНрд╡реЗрд░рд┐рдпреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд░рд┐рд▓реЗрд╢рдирд▓ рдЕрд▓реНрдЬebra рдореЗрдВ рдореВрд▓ рдСрдкрд░реЗрдЯрд░ рдХреМрди рд╕реЗ рд╣реИрдВ?
рдкрд╛рдБрдЪ рдореВрд▓рднреВрдд рдСрдкрд░реЗрдЯрд░ рд╣реИрдВ: рдЪрдпрди (╧Г), рдкреНрд░реЛрдЬреЗрдХреНрд╢рди (╧А), рдпреВрдирд┐рдпрди (тИк), рд╕реЗрдЯ рдбрд┐рдлрд░реЗрдВрд╕ (тИТ), рдФрд░ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреНрд░реЛрдбрдХреНрдЯ (├Ч)ред рдЪрдпрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдХреЙрд▓рдо рдЪреБрдирддрд╛ рд╣реИ, рдпреВрдирд┐рдпрди рджреЛ рд╕рдВрдЧрдд рд░рд┐рд▓реЗрд╢рдиреЛрдВ рдХреЛ рдорд┐рд▓рд╛рддрд╛ рд╣реИ, рд╕реЗрдЯ рдбрд┐рдлрд░реЗрдВрд╕ рдЯреНрдпреВрдкрд▓реНрд╕ рдШрдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреНрд░реЛрдбрдХреНрдЯ рджреЛ рд░рд┐рд▓реЗрд╢рдиреЛрдВ рдХреЗ рд╣рд░ рдЯреНрдпреВрдкрд▓ рдХрд╛ рд╕рдВрдпреЛрдЬрди рдмрдирд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рд╕рднреА рдСрдкрд░реЗрдЯрд░ тАФ рдЬреЙрдЗрдиреНрд╕, рдЗрдВрдЯрд░рд╕реЗрдХреНрд╢рди, рдбрд┐рд╡реАрдЬрди тАФ рдЗрдиреНрд╣реАрдВ рдкрд╛рдБрдЪ рд╕реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рд╣реИрдВред
рд░рд┐рд▓реЗрд╢рдирд▓ рдЕрд▓реНрдЬebra рдФрд░ SQL рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
рд░рд┐рд▓реЗрд╢рдирд▓ рдЕрд▓реНрдЬebra рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╣реИ тАФ рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рд╕рдЯреАрдХ рдХреНрд░рдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИред SQL рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реИ тАФ рдЖрдк рдкрд░рд┐рдгрд╛рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдпрд╛ рдЬрд╛рдПред SQL, рд░рд┐рд▓реЗрд╢рдирд▓ рдЕрд▓реНрдЬebra рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдЧреНрд░реАрдЧреЗрд╢рди, рдЧреНрд░реБрдкрд┐рдВрдЧ рдФрд░ рдСрд░реНрдбрд░рд┐рдВрдЧ рдЬреИрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдирдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд░рд┐рд▓реЗрд╢рдирд▓ рдЕрд▓реНрдЬebra рдореЗрдВ рдирд╣реАрдВ рд╣реИред
рд░рд┐рд▓реЗрд╢рдирд▓ рдЕрд▓реНрдЬebra рдореЗрдВ рдбрд┐рд╡реАрдЬрди рдСрдкрд░реЗрдЯрд░ рдХреНрдпрд╛ рд╣реИ?
рдбрд┐рд╡реАрдЬрди рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрддреА рд╣реИ: "рд░рд┐рд▓реЗрд╢рди A рдореЗрдВ рд╡реЗ рдХреМрди рд╕реЗ рдЯреНрдпреВрдкрд▓ рд╣реИрдВ рдЬреЛ рд░рд┐рд▓реЗрд╢рди B рдХреЗ рд╕рднреА рдЯреНрдпреВрдкрд▓реНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ?" рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдРрд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдЦреЛрдЬрдиреЗ рд╣реЛрдВ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд░рд┐рд▓реЗрд╢рди рдХреА рд╣рд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реЛрдВ тАФ рдЬреИрд╕реЗ рд╣рд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рдХреЛрд░реНрд╕ рдореЗрдВ рдирд╛рдорд╛рдВрдХрд┐рдд рдЫрд╛рддреНрд░ред рдЗрд╕рдХрд╛ SQL рдореЗрдВ рдХреЛрдИ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдордХрдХреНрд╖ рдирд╣реАрдВ рд╣реИ; рдЖрдк рдЗрд╕реЗ рдбрдмрд▓ NOT EXISTS рдкреИрдЯрд░реНрди рд╕реЗ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВред
рд░рд┐рд▓реЗрд╢рдирд▓ рдЕрд▓реНрдЬebra рдореЗрдВ рдиреИрдЪреБрд░рд▓ рдЬреЙрдЗрди рдФрд░ рдЗрдХреНрд╡реА рдЬреЙрдЗрди рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
рджреЛрдиреЛрдВ рдЬреЙрдЗрди рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рдирддрд╛ рд╢рд░реНрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЙрд▓рдо рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред рдиреИрдЪреБрд░рд▓ рдЬреЙрдЗрди рдЕрдкрдиреЗ-рдЖрдк рд╕рднреА рд╕рд╛рдЭрд╛ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдирд╛рдореЛрдВ рдкрд░ рдЬреЙрдЗрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЙрд▓рдо рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдЗрдХреНрд╡реА рдЬреЙрдЗрди рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╢рд░реНрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЬреЙрдЗрди рдХреЙрд▓рдореНрд╕ рдХреА рджреЛрдиреЛрдВ рдкреНрд░рддрд┐рдпрд╛рдБ рд░рдЦрддрд╛ рд╣реИред
рдЬрдм рднреА рдЖрдк рдХреЛрдИ
SELECTрд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рдЙрд╕реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬреЗрдмреНрд░рд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ тАФ рд╡рд╣ рдЧрдгрд┐рддреАрдп рдиреАрдВрд╡ рдЬреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдХреНрд╡реЗрд░реА рдФрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣реА рд╡рд╣ рдЖрдзрд╛рд░ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рдЖрдкрдХреА рдХреНрд╡реЗрд░рд┐рдпреЛрдВ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣реА рд╡рд╣ рд╡рд┐рд╖рдп рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрдВрдЯрд░рд╡реНрдпреВрдЕрд░ рдкреВрдЫрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдЬрд╛рди рд╕рдХреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЛрдВ рд╕реЗ рдЖрдЧреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВредрд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬреЗрдмреНрд░рд╛ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХрд╛ рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рджреЗрддреА рд╣реИ рдХрд┐ рдХреНрд╡реЗрд░рд┐рдпрд╛рдБ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЗрд╕реЗ рд╕рдордЭ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ SQL рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реНрдб рдХреНрд╡реЗрд░рд┐рдпрд╛рдБ рд▓рд┐рдЦрдиреЗ рд▓рдЧреЗрдВрдЧреЗред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдореБрдЦреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ, рдореВрд▓ рдСрдкрд░реЗрдЯрд░реЛрдВ, рдЬреЛрдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ, рдФрд░ рдпрд╣ рдХрд┐ рд░рд┐рд▓реЗрд╢рдирд▓ рдПрд▓реНрдЬреЗрдмреНрд░рд╛ рд░реЛрдЬрд╝рдорд░реНрд░рд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЖрдкрдХреЗ SQL рд╕реЗ рдХреИрд╕реЗ рдореИрдк рд╣реЛрддреА рд╣реИ, рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЗрдХрд░ рдЪрд▓реВрдБрдЧрд╛ред