рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдБ

SQL: рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рдбреЗрдЯрд╛ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдФрд░ рджреИрдирд┐рдХ рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП SQL рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░реЗрдВтАФрд╕реАрдЦреЗрдВ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдЪреБрдиреЗрдВ, рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ рдФрд░ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВ, рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рдореЗрдХрд┐рдд рдбреЗрдЯрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреИрд╕реЗ рдХрд░реЗрдВ!
┬╖ 15 рдорд┐ре░ рдкрдврд╝реЗрдВ

AI рдХреЗ рд╕рд╛рде рдЦреЛрдЬреЗрдВ

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЖрдк ANSI (American National Standards Institute) SQL рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ, рдЬреЛ Oracle, MySQL, Microsoft SQL Server рдЖрджрд┐ рдЬреИрд╕реЗ рд╣рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдЪрд▓рд┐рдП SQL рдХрд╛ рдкрд░рд┐рдЪрдп (Structured Query Language) рдФрд░ рдПрдХ рдбреЗрдЯрд╛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рдкрдбрд╝рддреА рд╣реИ, рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

SQL рдФрд░ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕

рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдПрдХ рдбреЗрдЯрд╛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХреЛ SQL рдХреНрдпреЛрдВ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ SQL рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХреЗ рдХрд░рд┐рдпрд░ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░реЗрдЧрд╛:

  • рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ, BI (рдмрд┐рдЬрд╝рдиреЗрд╕ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕) рдбреЗрд╡рд▓рдкрд░, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░, рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬреИрд╕реА рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рдиреМрдХрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП SQL рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдмрди рдЧрдпрд╛ рд╣реИред SQL рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИред
  • рдпрджрд┐ рдЖрдкрдиреЗ Tableau рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЗрдЯрд╛ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдпрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХреИрд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рдлрд╝реАрд▓реНрдбреНрд╕ рдмрддрд╛рдХрд░ рдЧреНрд░рд╛рдлрд╝ рдФрд░ рдкреНрд▓реЙрдЯреНрд╕ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдкрд░ рдбреНрд░реИрдЧ-рдПрдВрдб-рдбреНрд░реЙрдк рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдмрд╛рдХреА рд╕рдм рдХрд░ рджреЗрддрд╛ рд╣реИред рдЬрдм рдЖрдк рдбреЗрдЯрд╛ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдХрд╛ рдбреНрд░реИрдЧ-рдПрдВрдб-рдбреНрд░реЙрдк рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдпреВрдЬрд╝рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдПрдХ рдХреНрд▓рд┐рдХ рдореЗрдВ рдСрдкрд░реЗрд╢рдВрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рдкреАрдЫреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SQL рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИред SQL рд╕реАрдЦрдХрд░, рдЖрдк рд╕реАрдзреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • SQL рдХреЛ PHP, Java рдЬреИрд╕реА рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ SQL рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдХреЗ рдЕрдкрдиреА рдЦреБрдж рдХреА рдбреЗрдЯрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдХрд░ рдЙрдиреНрд╣реЗрдВ рд╡реЗрдм рд╕рд░реНрд╡рд┐рд╕реЗрдЬрд╝ рдпрд╛ APIs рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП XML, JSON рдлрд╝реЙрд░реНрдореИрдЯ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
  • рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдП рд╣реИрдВ; рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдмрд┐рдЧ рдбреЗрдЯрд╛ рдЪрд░реНрдЪрд╛ рдХрд╛ рд╡рд┐рд╖рдп рдмрдирд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рд╣рдорд╛рд░реЗ рджреИрдирд┐рдХ рдЬреАрд╡рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛ рд╣реИ, NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рд░рд╣реЗ рд╣реИрдВред SQL рд╕реАрдЦрдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдордЬрдмреВрдд рдиреАрдВрд╡ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА рдФрд░ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреА рдХрд┐ рдХрдм рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдХрдм NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛, рдФрд░ рдЙрдирдХреЗ рдЕрдВрддрд░ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреИрд╕реЗ рдХрд░рдиреА рд╣реИред

рдпрд╣рд╛рдВ рдореИрдВ SQL рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдХреБрдЫ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдФрд░ рд╢рдмреНрджрд╛рд╡рд▓рд┐рдпреЛрдВ рд╕реЗ рдЧреБрдЬрд░реВрдВрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рдХреЛрдб рдХрд░рдирд╛ рд╕реАрдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ! рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрдпрд╛ рд╣реИ рдФрд░ SQL рдХреНрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдХреЛрдб рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

SQL рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдкрд░рд┐рдЪрдп

рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реВрдЪрдирд╛ рдХрд╛ рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо (DBMS) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред DBMS рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рдЕрдиреБрд░реЛрдз рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд, рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╕рдордп рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд░рд╣реЗ рд╣реИрдВ: рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд (Hierarchical), рдиреЗрдЯрд╡рд░реНрдХ, рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдЕрдм NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ред рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд░рд┐рд▓реЗрд╢рдиреНрд╕ рдпрд╛ рджреНрд╡рд┐-рдЖрдпрд╛рдореА рддрд╛рд▓рд┐рдХрд╛рдУрдВ (two-dimensional tables) рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИред

sample relational database

RDBMS рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╢рдмреНрджрд╛рд╡рд▓реА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:

рд╢рдмреНрджрд╡рд┐рд╡рд░рдг
рдЯреЗрдмрд▓рдЯреЗрдмрд▓ RDBMS рдХреА рдореВрд▓ рднрдВрдбрд╛рд░рдг рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдПрдХ рдЯреЗрдмрд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреА рдХрд┐рд╕реА рд╡рд╕реНрддреБ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг: Employees.
рдПрдХрд▓ рдкрдВрдХреНрддрд┐ рдпрд╛ рдЯрдкрд▓рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ред рдЯреЗрдмрд▓ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдПрдХ рдкреНрд░рд╛рдЗрдорд░реА рдХреА рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдбреБрдкреНрд▓реАрдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ред
рдХреЙрд▓рдо рдпрд╛ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯрдЖрдорддреМрд░ рдкрд░ рдХрд┐рд╕реА рдПрдВрдЯрд┐рдЯреА рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ
рдкреНрд░рд╛рдЗрдорд░реА рдХреАрдПрдХ рдлрд╝реАрд▓реНрдб рдЬреЛ рдХрд┐рд╕реА рдкрдВрдХреНрддрд┐ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рди рдХрд░рддреА рд╣реИ
рдлреЙрд░реЗрди рдХреАрдлреЙрд░реЗрди рдХреА рд╡рд╣ рдХреЙрд▓рдо рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЯреЗрдмрд▓реНрд╕ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдлреЙрд░реЗрди рдХреА рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреЗрдмрд▓ рдХреА рдкреНрд░рд╛рдЗрдорд░реА рдХреА рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИред

рдЖрдк рдкреНрд░рд╛рдЗрдорд░реА рдФрд░ рдлреЙрд░реЗрди рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрд╛рдзрд┐рдХ рдЯреЗрдмрд▓реНрд╕ рдХреЛ рдЖрдкрд╕ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдкреНрд░рд╛рдЗрдорд░реА рдХреА (PK) рджреНрд╡рд╛рд░рд╛ рдЕрджреНрд╡рд┐рддреАрдп рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдлреЙрд░реЗрди рдХреА (FK) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреЗрдмрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

multiple tables

рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ Structured Query Language рдпрд╛ SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд░ рдбреЗрдЯрд╛рдмреЗрд╕ ANSI SQL, рдпрд╛рдиреА рдорд╛рдирдХ SQL, рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛, рд╕рд╛рде рд╣реА рдХреБрдЫ рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рднреА рд╣реЛрдЧрд╛ред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЖрдк ANSI SQL рд╕реАрдЦреЗрдВрдЧреЗ рддрд╛рдХрд┐ рдЖрдк рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВред ANSI SQL рдХреЛ рдкрд╛рдБрдЪ рднрд╛рдЧреЛрдВ рдореЗрдВ рдмрд╛рдВрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд╕рднреА рдХреЗ рдирд╛рдо рдмрддрд╛рдКрдВрдЧрд╛, рдкрд░ рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рджреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рднрд╛рдЧ рд╣реИрдВтАФрдбреЗрдЯрд╛ рд░рд┐рдЯреНрд░реАрд╡рд▓ рдФрд░ DML:

  1. рдбреЗрдЯрд╛ рд░рд┐рдЯреНрд░реАрд╡рд▓:
    • Select.
  2. рдбреЗрдЯрд╛ рдореИрдирд┐рдкреНрдпреБрд▓реЗрд╢рди рд▓реИрдВрдЧреНрд╡реЗрдЬ (DML):
    • Insert, Update, Delete, Merge
  3. рдбреЗрдЯрд╛ рдбреЗрдлрд╝рд┐рдирд┐рд╢рди рд▓реИрдВрдЧреНрд╡реЗрдЬ (DDL):
    • Create, Alter, Drop, Rename, Truncate.
  4. рдбреЗрдЯрд╛ рдХрдВрдЯреНрд░реЛрд▓ рд▓реИрдВрдЧреНрд╡реЗрдЬ (DCL):
    • Grant, Revoke.
  5. рдЯреНрд░рд╛рдВрдЬрд╝реЗрдХреНрд╢рди рдХрдВрдЯреНрд░реЛрд▓:
    • Commit, Rollback, Savepoint.

RDBMS рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХреНрд░реЗрддрд╛ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд╕рдмрд╕реЗ рдЖрдо рдФрд░ рдкреНрд░рдЪрд▓рд┐рдд рд╣реИрдВ:

  • Oracle (Oracle Corporation)
  • Microsoft SQL Server (Microsoft)
  • MySQL (Oracle Corporation)
  • PostgreSQL (PostgreSQL Global Development Group)
  • SQLite (D. Richard Hipp рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд)

рддреЛ рдЖрдк SQL рдХреНрд╡реЗрд░реАрдЬрд╝ рдХрд╣рд╛рдБ рдЪрд▓рд╛рддреЗ рд╣реИрдВ? рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  • рдРрд╕рд╛ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рдбреЗрдЯрд╛ рджреЗрдЦрдиреЗ рджреЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг: Tableau, Microsoft BI)
  • рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢рд╛рд╕рди рдХреЗ рд▓рд┐рдП GUI (рдЙрджрд╛рд╣рд░рдг: Oracle рдХреЗ рд▓рд┐рдП TOAD, SQL Developer; MySQL рдХреЗ рд▓рд┐рдП phpMyAdmin)
  • рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓-рдЖрдзрд╛рд░рд┐рдд рдбрд╛рдпрд░реЗрдХреНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдЙрджрд╛рд╣рд░рдг: Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП SQL Plus)

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдХреА рд╕рд╛рдЦ рд╣реИ, рддреЛ рдЖрдк рдХреНрд╡реЗрд░реАрдЬрд╝ рдпрд╛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ GUI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдмрд╕ рдЗрддрдирд╛ рд╣реА! рдЕрдм SQL рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ...

SQL рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░

рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдХрд╛ рдПрдХ рдирд╛рдо, рдПрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдФрд░ рдХрднреА-рдХрднреА рдЙрд╕рд╕реЗ рдЬреБрдбрд╝рд╛ рдПрдХ рдЖрдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреМрди-рд╕рд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИред

рдПрдХ рдбреЗрдЯрд╛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╕рдЯреАрдХ рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд╛рдо, рд╕рдВрдЧреНрд░рд╣реАрдд рдЯреЗрдХреНрд╕реНрдЯ, рд╕рдВрдЦреНрдпрд╛рдПрдБ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреЛрдИ рдЗрдореЗрдЬ рдЖрджрд┐ред

рдпрд╣рд╛рдВ Oracle Server, SQL Server рдФрд░ MySQL Server рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрд╛рдП рдЬрд╛рдПрдВрдЧреЗ:

servers

рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП:

SQL рдФрд░ рдбреЗрдЯрд╛ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕рднреА SQL рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдирдореВрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдорд╛рдиреЗрдВ:

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджреЛ рдЯреЗрдмрд▓ рд╣реИрдВтАФemp рдЬреЛ рдХрд░реНрдордЪрд╛рд░реА рдбреЗрдЯрд╛ рд░рдЦрддрд╛ рд╣реИ рдФрд░ dept рдЬреЛ рд╡рд┐рднрд╛рдЧреЛрдВ рдХреЗ рдЕрднрд┐рд▓реЗрдЦ рд░рдЦрддрд╛ рд╣реИред

emp рдЯреЗрдмрд▓ рдореЗрдВ рдХрд░реНрдордЪрд╛рд░реА рд╕рдВрдЦреНрдпрд╛ (empno), рдХрд░реНрдордЪрд╛рд░реА рдирд╛рдо (ename), рд╡реЗрддрди (sal), рдХрдореАрд╢рди (comm), рдиреМрдХрд░реА рдХрд╛ рдирд╛рдо (job), рдкреНрд░рдмрдВрдзрдХ рдЖрдИрдбреА (mgr), рдирд┐рдпреБрдХреНрддрд┐ рддрд┐рдерд┐ (hiredate) рдФрд░ рд╡рд┐рднрд╛рдЧ рд╕рдВрдЦреНрдпрд╛ (deptno) рд╣реИрдВред рдЪреВрдВрдХрд┐ рдкреНрд░рдмрдВрдзрдХ рднреА рдХрд░реНрдордЪрд╛рд░реА рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреА рднреА рдПрдХ рдХрд░реНрдордЪрд╛рд░реА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП mgr рдЙрди empno рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕рдХреА рдиреМрдХрд░реА "MANAGER" рд╣реИред

dept рдЯреЗрдмрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЧ рд╕рдВрдЦреНрдпрд╛ (deptno), рд╡рд┐рднрд╛рдЧ рдХрд╛ рдирд╛рдо (dname) рдФрд░ рд╡рд┐рднрд╛рдЧ рдХрд╛ рд╕реНрдерд╛рди (loc) рд╣реИред

tables

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд┐рдирд╛рдВрдХ рдХрд╛ рдлрд╝реЙрд░реНрдореИрдЯ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдВ DD-MON-YY Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджрд┐рдирд╛рдВрдХ рдлрд╝реЙрд░реНрдореИрдЯ рд╣реИред Microsoft SQL Server рдФрд░ MySQL рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝реЙрд░реНрдореИрдЯ YYYY-MM-DD рд╣реЛрддрд╛ рд╣реИред

рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдЯреЗрдмрд▓ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдЯреЗрдмрд▓ рдирд╛рдо рдФрд░ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдХреЗ рдирд╛рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдорд╛рдпреЛрдЬрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХреЗрд╡рд▓ рдкрдврд╝реЗрдВрдЧреЗтАФрд▓рд┐рдЦрдирд╛, рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдпрд╛ рдирдИ рдЯреЗрдмрд▓/рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП рдбреЗрдЯрд╛ рд▓реЙрд╕ рдпрд╛ рдмрджрд▓рд╛рд╡ рдХреА рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ!

рд╕реВрдЪрдирд╛: рд╕реНрдХреАрдорд╛ рдЯреЗрдмрд▓реНрд╕, рдлрд╝рдВрдХреНрд╢рдВрд╕, рдкреНрд░реЛрд╕реАрдЬрд░, рд╡реНрдпреВрдЬрд╝ рдЬреИрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ

рдКрдкрд░ рджрд┐рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ emp рдЯреЗрдмрд▓ рдореЗрдВ Employee рдПрдВрдЯрд┐рдЯреА рдХреЗ рд▓рд┐рдП рдЫрд╣ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рд╣реИрдВред dept рдЯреЗрдмрд▓ рдореЗрдВ Department рдПрдВрдЯрд┐рдЯреА рдХреЗ рд▓рд┐рдП рддреАрди рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рд╣реИрдВред

SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

1. рдкреНрд░реЛрдЬреЗрдХреНрд╢рди: рдЖрдк SQL рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдмрд▓ рдХреЗ рд╡реЗ рдХреЙрд▓рдо рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрдкрдиреА рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдк рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░ рдЯреЗрдмрд▓ рдХреЗ рдХрдо рдпрд╛ рдЕрдзрд┐рдХ рдХреЙрд▓рдо рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред

2. рд╕реЗрд▓реЗрдХреНрд╢рди: рдЖрдк SQL рдореЗрдВ рд╕реЗрд▓реЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдмрд▓ рдХреА рд╡реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рд╡рд╛рдкрд╕ рдкрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЖрдк рдЬрд┐рди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдорд╛рдирджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

3. рдЬреЙрдЗрдирд┐рдВрдЧ: рдЖрдк SQL рдореЗрдВ рдЬреЙрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреЗрдмрд▓реНрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреЛ рдЙрдирдХреЗ рдмреАрдЪ рдПрдХ рд▓рд┐рдВрдХ рдмрдирд╛рдХрд░ рд╕рд╛рде рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдмреЗрд╕рд┐рдХ SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдЯреЗрдмрд▓ рд╕реЗ рдХреМрди-рд╕реЗ рдХреЙрд▓рдо рдЪрд╛рд╣рд┐рдПред SELECT рдХреНрд▓реЙрдЬрд╝ рдХреЙрд▓рдо/рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдмрддрд╛рддрд╛ рд╣реИ рдФрд░ FROM рдХреНрд▓реЙрдЬрд╝ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдЯреЗрдмрд▓ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдирд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдФрд░ рдЙрдирдХреА рдиреМрдХрд░рд┐рдпрд╛рдБ рдХреНрдпрд╛ рд╣реИрдВ: SELECT ename, job FROM employee; рдКрдкрд░ рдХреА SQL рдХреНрд╡реЗрд░реА, рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдкрдХреЛ рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧреА:

enamejob
ASalesman
BManager
CManager

рд╕рднреА рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдФрд░ рд╕рднреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП * рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

SELECT *
FROM employee;
The output will be:

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30

SQL рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рдХреБрдЫ рд╕реБрдЭрд╛рд╡:

  • SQL рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗрд╕-рд╕реЗрдВрд╕рд┐рдЯрд┐рд╡ рдирд╣реАрдВ рд╣реЛрддреЗ
  • рд░реАрдбреЗрдмрд┐рд▓рд┐рдЯреА рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓реЙрдЬрд╝ рдЕрд▓рдЧ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рд▓рд┐рдЦреЗрдВ
  • рдЖрдк SQL рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ

рдЖрдк рдбреЗрдЯ рдФрд░ рдирдВрдмрд░ рдбреЗрдЯрд╛ рдкрд░ +, -, /, * рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдЬреЗрдирд░реЗрдЯ рд╣реЛред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрд╕реЗ рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╡реЗрддрди рдХрд╛ 20% рдирд┐рдХрд╛рд▓рдиреЗ рдХреЛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рдХреНрд╡реЗрд░реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧреА:

SELECT ename, sal*(20/100)
FROM employee;
Output:

    ENAME      SAL*(20/100)
   ---------- ------------
    SMITH               160
    ALLEN               320
    WARD                250
    JONES               595
    BLAKE               570

рд╕реВрдЪрдирд╛:

  • рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд╖реНрдардХ (parentheses) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • рднрд╛рдЧ рдФрд░ рдЧреБрдгрд╛ рдХреЛ рдЬреЛрдбрд╝ рдФрд░ рдШрдЯрд╛рд╡ рдкрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдорд┐рд▓рддреА рд╣реИ
  • рдпрджрд┐ рд╕рдорд╛рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реЛ рддреЛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдмрд╛рдПрдБ рд╕реЗ рджрд╛рдПрдБ рдореВрд▓реНрдпрд╛рдВрдХрди рд╣реЛрддрд╛ рд╣реИ

рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ NULL рдорд╛рдиреЛрдВ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдЯреНрд░реАрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред NULL рдорд╛рди рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдорд╛рди рдЕрдЬреНрдЮрд╛рдд рд╣реИред NULL рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рдСрдкрд░реЗрд╢рди NULL рджреЗрддрд╛ рд╣реИред рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ NULL рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди COALESCE рд╣реИ, рдЬреЛ MySQL, Microsoft SQL Server рдФрд░ Oracle рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╣реЛрддрд╛ рд╣реИред

SELECT ename, sal+COALESCE(comm,0)
FROM employee;
Output:

    ENAME      SAL+COALESCE(COMM,0)
---------- --------------------
    SMITH                       800
    ALLEN                      1900
    WARD                       1750
    JONES                      2975
    BLAKE                      2850

рдХреЙрд▓рдо рдЙрдкрдирд╛рдо (Aliases) рдФрд░ рдХрдВрдХреИрдЯрдиреЗрд╢рди

рдЖрдк рдКрдкрд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯреНрд╕ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЙрд▓рдо рдХрд╛ рдирд╛рдо рд╡рд╣реА рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝реАрд▓реНрдб рдпрд╛ рдЪреБрдиреЗ рдЧрдП рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХрд╛ рд╣реИред рдХрднреА-рдХрднреА, рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдЖрдк рд╣реЗрдбрд░реНрд╕ рдХреЛ рдЕрдкрдирд╛ рдирд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ aliases рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

SELECT ename AS "Emp Name", sal*(20/100) as "20% of Salary"
FROM employee;
Output:

    Emp Name      20% of Salary
   ---------- ------------
    SMITH               160
    ALLEN               320
    WARD                250
    JONES               595
    BLAKE               570

рдЬрдм рдЖрдк рдРрд╕рд╛ рдЙрдкрдирд╛рдо рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдкреЗрд╕ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдбрдмрд▓ рдХреЛрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдиреНрдпрдерд╛ AS рдХреЗ рдмрд╛рдж рдбрдмрд▓ рдХреЛрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред рдХрднреА-рдХрднреА рдЖрдк рдХреАрд╡рд░реНрдб AS рдХреЛ рдЫреЛрдбрд╝ рднреА рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдк рдХрдВрдХреИрдЯрдиреЗрд╢рди рд╕реЗ рдЕрдкрдирд╛ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝реЙрд░реНрдореИрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк CONCAT рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╡рд┐рдХреНрд░реЗрддрд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдкрд░реЗрдЯрд░реНрд╕ рдЬреИрд╕реЗ || рдпрд╛ + рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЕрдкрдиреЗ рдХрдерди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

  • Oracle CONCAT() рдФрд░ || рд╕рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди CONCAT() рдХреЗрд╡рд▓ рджреЛ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рд▓реЗрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдиреЗрд╕реНрдЯреЗрдб CONCAT() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
  • MySQL CONCAT() рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
  • Microsoft SQL Server '+' рдСрдкрд░реЗрдЯрд░ рдФрд░ CONCAT() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

Oracle: SELECT '20% of salary of '||ename||' is '||sal*(20/100) as "20% of salary" FROM employee;

SELECT CONCAT(CONCAT('20% of salary of',ename),CONCAT(' is ',sal(20/100))) as "20% of salary" FROM employee; MySQL рдФрд░ Microsoft SQL Server: SELECT CONCAT('20% of salary of ',ename,' is ',sal(20/100)) as "20% of salary" FROM employee; рд╕рднреА рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╕рдорд╛рди рд╣реЛрдЧрд╛:

    20% of salary
-----------------------------------------------------------------------
    20% of salary of SMITH is 160
    20% of salary of ALLEN is 320
    20% of salary of WARD is 250
    20% of salary of JONES is 595
    20% of salary of BLAKE is 570

DISTINCT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛрд╣рд░рд╛рдИ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣рдЯрд╛рдирд╛

SELECT deptno
FROM employee;
Above query will result in:


    DEPTNO
----------
        20
        30
        30
        20
        30

рдпрд╣рд╛рдВ deptno 20 рдФрд░ 30 рджреЛрд╣рд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдк SELECT рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ DISTINCT рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред

SELECT distinct ename, deptno, job
FROM employee;



    DEPTNO
----------
        30
        20

рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдФрд░ рд╕реЙрд░реНрдЯ рдХрд░рдирд╛

WHERE рдХреНрд▓реЙрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рд╢рд░реНрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЗрдЯрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред

рд╡реЗ рд╕рднреА рдХрд░реНрдордЪрд╛рд░реА рдЦреЛрдЬреЗрдВ рдЬрд┐рдирдХреА рдиреМрдХрд░реА CLERK рд╣реИ:

SELECT ename, job
FROM employee
WHERE job='CLERK';
    ENAME      JOB
---------- ---------
    SMITH      CLERK

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

operators

=, <>, !=, >=, <=, >, < рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХреА рдХреНрд╡реЗрд░реА рдореЗрдВ = рдХрд╛ рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛ рд╣реИред

AND рдФрд░ OR рд╕рд┐рдВрдЯреИрдХреНрд╕: SELECT column1, column2,.. FROM table_name WHERE condition1 AND condition2 AND condition 3...;

SELECT column1, column2,.. FROM table_name WHERE condition1 OR condition2 OR condition 3...; рд╡реЗ рдХрд░реНрдордЪрд╛рд░реА рдирд╛рдо рдЦреЛрдЬреЗрдВ рдЬрд┐рдирдХреА рдиреМрдХрд░реА MANAGER рд╣реИ рдФрд░ рдЬреЛ рд╡рд┐рднрд╛рдЧ 30 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ:

SELECT ename
FROM employee
WHERE job='MANAGER' AND deptno=30;
    ENAME
    ----------
    BLAKE
SELECT ename
FROM employee
WHERE job='MANAGER' OR deptno=30;
    ENAME
    ----------
    ALLEN
    WARD
    JONES
    BLAKE

NOT рд╕рд┐рдВрдЯреИрдХреНрд╕: SELECT column1, column2, ... FROM table_name WHERE NOT condition; рд╡реЗ рд╕рднреА рдХрд░реНрдордЪрд╛рд░реА рдЦреЛрдЬреЗрдВ рдЬрд┐рдирдХреА рдиреМрдХрд░реА SALESMAN рдирд╣реАрдВ рд╣реИ:

SELECT ename, job
from employee
WHERE NOT job='SALESMAN';
    ENAME      JOB
    ---------- ---------
    SMITH      CLERK
    JONES      MANAGER
    BLAKE      MANAGER

рдЖрдк AND, OR рдФрд░ NOT рддреАрдиреЛрдВ рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрдЯрд┐рд▓ рд╢рд░реНрддреЗрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреНрд░рдо рд╣реИ:

  1. NOT
  2. AND
  3. OR

рд╡реЗ рд╕рднреА рдХрд░реНрдордЪрд╛рд░реА рдЦреЛрдЬреЗрдВ рдЬрд┐рдирдХреА рдиреМрдХрд░реА CLERK рдирд╣реАрдВ рд╣реИ рдФрд░ рдЬреЛ рд╡рд┐рднрд╛рдЧ 20 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ:

SELECT ename, job
from employee
WHERE NOT job='SALESMAN' AND sal>800;
    ENAME      JOB
    ---------- ---------
    JONES      MANAGER
    BLAKE      MANAGER

рдпрд╣рд╛рдВ рдкрд╣рд▓реЗ NOT рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реБрдЖ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж AND рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рд╣реБрдЖред

рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдХрдВрдбреАрд╢рдирд▓ рдСрдкрд░реЗрдЯрд░реНрд╕ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╣реИрдВ:

BETWEEN...AND:

SELECT *
FROM employee
WHERE sal BETWEEN 1000 AND 2000;
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30

LIKE:

LIKE рджреЛ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рдкреНрд░рддрд┐рд╢рдд % рдФрд░ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ _ рдЬреЛ рдкреИрдЯрд░реНрди рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред

  1. % рдХрд╛ рдЕрд░реНрде рд╣реИ рд╢реВрдиреНрдп, рдПрдХ, рдпрд╛ рдПрдХрд╛рдзрд┐рдХ рд╡рд░реНрдг
    • %M%: рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ M рд░рдЦрдиреЗ рд╡рд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдБ
    • M%: M рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рди рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдБ
    • %M: M рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рди рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдБ
    • M%A: M рд╕реЗ рд╢реБрд░реВ рдФрд░ A рдкрд░ рд╕рдорд╛рдкреНрдд

рдкреИрдЯрд░реНрди рдХреЗрд╕-рд╕реЗрдВрд╕рд┐рдЯрд┐рд╡ рд╣реЛрддреЗ рд╣реИрдВред

  1. _ рдЬреНрдЮрд╛рдд рд╡рд░реНрдг рдХреЗ рдкрд╣рд▓реЗ рдпрд╛ рдмрд╛рдж рдореЗрдВ рдЕрдЬреНрдЮрд╛рдд рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдПрдХ рд╡рд░реНрдг рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
    • _r%: рджреВрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ r рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рди рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдБред

рд╡реЗ рд╕рднреА рдХрд░реНрдордЪрд╛рд░реА рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬрд┐рдирдХреЗ рдирд╛рдо 'B' рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ:

SELECT *
FROM employee
WHERE ename LIKE 'B%';

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30

рд╡реЗ рд╕рднреА рдХрд░реНрдордЪрд╛рд░реА рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬрд┐рдирдХреЗ рдирд╛рдо 'A' рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ 'A' рдХреЗ рдмрд╛рдж рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ 'E' рд╣реЛ:

SELECT *
FROM employee
WHERE ename LIKE 'A%E%';

        EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30

IN(value1, value2, value3,..):

IN() рдлрд╝рдВрдХреНрд╢рди рдПрдХ, рджреЛ рдпрд╛ рдПрдХрд╛рдзрд┐рдХ рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИ рдФрд░ WHERE рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рдХреЙрд▓рдо рдХреЛ рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рджрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рд╕реЗ рдорд┐рд▓рд╛рдиреЗ рджреЗрддрд╛ рд╣реИ:

SELECT ename, job, hiredate
FROM employee
WHERE job IN ('CLERK','SALESMAN');
    ENAME      JOB       HIREDATE
    ---------- --------- ---------
    SMITH      CLERK     17-DEC-80
    ALLEN      SALESMAN  20-FEB-81
    WARD       SALESMAN  22-FEB-81

рдЖрдк IN() рдореЗрдВ SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдорд╛рди рд▓реМрдЯрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

SELECT ename, job, hiredate
FROM employee
WHERE deptno IN (select deptno FROM department WHERE loc='CHICAGO');
    ENAME      JOB       HIREDATE
    ---------- --------- ---------
    ALLEN      SALESMAN  20-FEB-81
    WARD       SALESMAN  22-FEB-81
    BLAKE      MANAGER   01-MAY-81

IN() рдореЗрдВ SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЛ рд╕рдм-рдХреНрд╡реЗрд░реА рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЖрдЧреЗ рд╕рдм-рдХреНрд╡реЗрд░реАрдЬрд╝ рдкрд░ рдФрд░ рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреА!

IS NULL:

IS NULL рдХрд╛ рдЙрдкрдпреЛрдЧ рджрд┐рдП рдЧрдП рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдореЗрдВ NULL рдорд╛рдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗ рд╕рднреА рдХрд░реНрдордЪрд╛рд░реА рдЦреЛрдЬреЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрдореАрд╢рди рдирд╣реАрдВ рдорд┐рд▓рд╛:

SELECT ename, job, sal
FROM employee
WHERE comm IS NULL;
    ENAME      JOB              SAL
    ---------- --------- ----------
    SMITH      CLERK            800
    JONES      MANAGER         2975
    BLAKE      MANAGER         2850

рдпрджрд┐ рдЖрдк рдЙрди рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдкрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрдореАрд╢рди рдорд┐рд▓рд╛, рддреЛ рдЖрдк IS NOT NULL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

SELECT ename, job, sal, comm
FROM employee
WHERE comm IS NOT NULL;
    ENAME      JOB              SAL       COMM
    ---------- --------- ---------- ----------
    ALLEN      SALESMAN        1600        300
    WARD       SALESMAN        1250        500

рджрд┐рдирд╛рдВрдХ рдХреЙрд▓рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдо рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджрд┐рдирд╛рдВрдХ рдлрд╝реЙрд░реНрдореИрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдХреЛрдИ рдЕрдиреНрдп рдлрд╝реЙрд░реНрдореИрдЯ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рддреЛ рджрд┐рдирд╛рдВрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЖрдЧреЗ рджреЗрдЦреЗрдВрдЧреЗред 21 рдлрд╝рд░рд╡рд░реА 1981 рдХреЗ рдмрд╛рдж рдирд┐рдпреБрдХреНрдд рдХрд┐рдП рдЧрдП рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬреЗрдВ:

(рдпрд╣рд╛рдВ Oracle рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджрд┐рдирд╛рдВрдХ рдлрд╝реЙрд░реНрдореИрдЯ рдЙрдкрдпреЛрдЧ рд╣реБрдЖ рд╣реИ)

SELECT ename, job, sal, comm
FROM employee
WHERE hiredate>'21-FEB-81';
    ENAME      JOB              SAL       COMM
    ---------- --------- ---------- ----------
    WARD       SALESMAN        1250        500
    JONES      MANAGER         2975
    BLAKE      MANAGER         2850

рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдСрдкрд░реЗрдЯрд░реНрд╕ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рдЬрдЯрд┐рд▓ рдХрдВрдбреАрд╢рдирд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд░ рдЖрдкрдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреНрд░рдо рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╣ рдХреНрд░рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рдпрдо рдирд┐рдореНрди рд╣реИрдВ:

рджреЛ рдЙрдкрдпреЛрдЧреА рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВ: ANY(), ALL() рдЬрд┐рдиреНрд╣реЗрдВ рдХрдВрдбрд┐рд╢рдВрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг:

SELECT ename, job, sal, comm
FROM employee
WHERE deptno=ANY(SELECT deptno from dept WHERE loc='NEW YORK');
SELECT ename, job, sal, comm
FROM employee
WHERE deptno=ALL(SELECT deptno from dept WHERE dname='SALES');

рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕рдмрдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЗрдЦреЗрдВред рдЖрдк рдЖрдЧреЗ рд╕рдмрдХреНрд╡реЗрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕реАрдЦреЗрдВрдЧреЗред

ORDER BY рдХреНрд▓реЙрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреНрд░рдорд┐рдд рдХрд░рдирд╛

рдЖрдк рдЕрдкрдиреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдпрд╛ рдПрдХрд╛рдзрд┐рдХ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрд░реЛрд╣реА (ASC) рдпрд╛ рдЕрд╡рд░реЛрд╣реА (DESC) рдХреНрд░рдо рдореЗрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк SELECT рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рджрд┐рдП рдЧрдП aliases рдХреЗ рдЕрдиреБрд╕рд╛рд░ рднреА рдСрд░реНрдбрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

SELECT ename, job, sal, comm
FROM employee
WHERE hiredate>'21-FEB-81'
ORDER BY sal desc;
    ENAME      JOB              SAL       COMM
    ---------- --------- ---------- ----------
    JONES      MANAGER         2975
    BLAKE      MANAGER         2850
    WARD       SALESMAN        1250        500

рдзреНрдпрд╛рди рджреЗрдВ: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд░рдо рдЖрд░реЛрд╣реА рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ ASC рд╕реЗ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ, рдФрд░ ASC рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред

SELECT ename, job, sal, comm
FROM employee
WHERE hiredate>'21-FEB-81'
ORDER BY sal;
    ENAME      JOB              SAL       COMM
    ---------- --------- ---------- ----------
    WARD       SALESMAN        1250        500
    BLAKE      MANAGER         2850
    JONES      MANAGER         2975

рдЖрдк ORDER BY рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рдХреЙрд▓рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рджрд┐рдП рдЧрдП рдХреНрд░рдо рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдкрд╣рд▓реЗ deptno рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ, рдФрд░ рдлрд┐рд░ рдирд╛рдореЛрдВ рдХреЛ рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВ:

SELECT ename, job, sal, comm, deptno
FROM employee
WHERE hiredate>'21-FEB-81'
ORDER BY deptno ASC, ename DESC;
    ENAME      JOB              SAL       COMM     DEPTNO
    ---------- --------- ---------- ---------- ----------
    JONES      MANAGER         2975                    20
    WARD       SALESMAN        1250        500         30
    BLAKE      MANAGER         2850                    30

рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЧрд▓-рд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ

рд╕рднреА RDBMS рдореЗрдВ рдХрдИ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдкрд╛рдирд╛, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдЬреЛрдбрд╝рдирд╛, рдлрд╝реЙрд░реНрдореИрдЯрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдЧрдгрд┐рддреАрдп рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЖрджрд┐ред SQL рдореЗрдВ рд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ:

  • рд╕рд┐рдВрдЧрд▓-рд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕
  • рдорд▓реНрдЯрд┐рдкрд▓-рд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕

рд╕рд┐рдВрдЧрд▓-рд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕:

рдпреЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐ рдкрдВрдХреНрддрд┐ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред CONCAT() рдПрдХ рдХреИрд░реЗрдХреНрдЯрд░ рдореИрдирд┐рдкреНрдпреБрд▓реЗрд╢рди рд╕рд┐рдВрдЧрд▓-рд░реЛ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдЗрдиреНрд╣реЗрдВ SELECT, WHERE рдФрд░ ORDER BY рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рднреА RDBMS рдореЗрдВ рдирд┐рдореНрди рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЧрд▓-рд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:

  • рдХреИрд░реЗрдХреНрдЯрд░ рдореИрдирд┐рдкреНрдпреБрд▓реЗрд╢рди рдлрд╝рдВрдХреНрд╢рдВрд╕
  • рдбреЗрдЯ рдФрд░ рдЯрд╛рдЗрдо рдлрд╝рдВрдХреНрд╢рдВрд╕
  • рдирдВрдмрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕
  • рдХрдиреНрд╡рд░реНрдЬрд╝рди рдлрд╝рдВрдХреНрд╢рдВрд╕

рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдореИрдВ Microsoft SQL Server, Oracle рдФрд░ MySQL рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧреА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдмрддрд╛рдКрдВрдЧрд╛ред рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЖрдк рдКрдкрд░ рдХреЗ рд╕реЗрдХреНрд╢рдВрд╕ рдореЗрдВ рд╕реАрдЦ рдЪреБрдХреЗ рд╣реИрдВред рдЗрд╕ рд╕реЗрдХреНрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЖрдЧреЗ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЗрди рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреА рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдВрдХ рдорд┐рд▓реЗрдВрдЧреЗред

рдЖрдЗрдП рдкреНрд░рддреНрдпреЗрдХ рд╢реНрд░реЗрдгреА рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ:

рдХреИрд░реЗрдХреНрдЯрд░ рдореИрдирд┐рдкреНрдпреБрд▓реЗрд╢рди рдлрд╝рдВрдХреНрд╢рдВрд╕

LOWER(): рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд▓реЛрдЕрд░рдХреЗрд╕ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред

SELECT lower(ename) as ename
FROM employee;
    ENAME
    ----------
    smith
    allen
    ward
    jones
    blake

UPPER(): рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрдкрд░рдХреЗрд╕ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред

SELECT upper(ename) as ename
FROM employee;
    ENAME
    ----------
    SMITH
    ALLEN
    WARD
    JONES
    BLAKE

SUBSTR()[Oracle, MySQL]: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрд╕рд╛рд░ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ SUBSTR(string, start-position, length)

SUBSTRING()[SQL Server]: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрд╕рд╛рд░ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ SUBSTRING(string, start-position, length).

SELECT SUBSTR(ename,2,3) as substr_ename
FROM employee;

SQL Server рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо SUBSTRING рд╕реЗ рдмрджрд▓ рджреЗрдВред

SUBSTR_ENAME
------------
MIT
LLE
ARD
ONE
LAK

LENGTH()[Oracle, MySQL]: рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рджреА рдЧрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рд▓реМрдЯрд╛рддрд╛ рд╣реИ

LEN()[SQL Server]: рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рджреА рдЧрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рд▓реМрдЯрд╛рддрд╛ рд╣реИ

SELECT LENGTH(ename) as len_ename
FROM employee;

SQL Server рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо LEN рдХрд░ рджреЗрдВред

     LEN_ENAME
    ----------
             5
             5
             4
             5
             5

рд▓реЗрдлрд╝реНрдЯ/рд░рд╛рдЗрдЯ рдкреИрдбрд┐рдВрдЧ, рд░рд┐рдкреНрд▓реЗрд╕ рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рддреАрдиреЛрдВ рд╡рд┐рдХреНрд░реЗрддрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдХреИрд░реЗрдХреНрдЯрд░ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рд╕реВрдЪреА:

рдирдВрдмрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕

рдлрд╝рдВрдХреНрд╢рди рдирд╛рдордХрд╛рд░реНрдп
ROUND(m,n):рдорд╛рди m рдХреЛ n рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рдиреЛрдВ рддрдХ рд░рд╛рдЙрдВрдб рдХрд░рддрд╛ рд╣реИред
ABS(m,n):рдХрд┐рд╕реА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкрд░рд┐рдореВрд▓реНрдп (absolute value) рд▓реМрдЯрд╛рддрд╛ рд╣реИ
FLOOR(n):FLOOR n рдХреЗ рдмрд░рд╛рдмрд░ рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкреВрд░реНрдгрд╛рдВрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
MOD(m,n):m рдХреЛ n рд╕реЗ рднрд╛рдЧ рджреЗрдиреЗ рдкрд░ рд╢реЗрд╖рдлрд▓ рд▓реМрдЯрд╛рддрд╛ рд╣реИ (SQL Server рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ, рд╡рд╣рд╛рдБ % рдСрдкрд░реЗрдЯрд░: 35 % 6)

Oracle:

    SELECT ROUND(45.926,2),MOD(11,5),FLOOR(34.4),ABS(-24) from dual;

OUTPUT:

    ROUND(45.926,2)  MOD(11,5) FLOOR(34.4)   ABS(-24)
--------------- ---------- ----------- ----------
          45.93          1          34         24

MySQL:

    SELECT ROUND(45.926,2),MOD(11,5),FLOOR(34.4),ABS(-24);

SQL Server:

    SELECT ROUND(45.926,2) as round,11%5 as mod, FLOOR(34.4) as floor,ABS(-24) as abs;

рддреАрдиреЛрдВ рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдореЗрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рд╕реВрдЪреА:

рдХрдиреНрд╡рд░реНрдЬрд╝рди рдлрд╝рдВрдХреНрд╢рдВрд╕

рдХрдиреНрд╡рд░реНрдЬрд╝рди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдиреНрд╡рд░реНрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рд░реНрд╡рд░ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдореИрдВ Oracle рд╕рд░реНрд╡рд░ рдХреА рдПрдХ рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреВрдБрдЧрд╛ рдЬреЛ to_char рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рд╕рдордЭ рдЖрдПрдЧрд╛ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреНрд╡рд░реНрдЬрд╝рди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред Oracle рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджрд┐рдирд╛рдВрдХ рдлрд╝реЙрд░реНрдореИрдЯ DD-MON-YY рд╣реИред

SELECT ename, to_char(hiredate,'DD, MONTH YYYY') as Hiredate, to_char(hiredate,'DY') as Day
from employee;
    ENAME      Hiredate                                     DAY
    ---------- -------------------------------------------- ------------
    SMITH      17,DECEMBER  1980                            WED
    ALLEN      20,FEBRUARY  1981                            FRI
    WARD       22,FEBRUARY  1981                            SUN
    JONES      02,APRIL     1981                            THU
    BLAKE      01,MAY       1981                            FRI

рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реЗ рдХрдиреНрд╡рд░реНрдЬрд╝рди рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВред рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдФрд░ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВ:

рдбреЗрдЯ рдФрд░ рдЯрд╛рдЗрдо рдлрд╝рдВрдХреНрд╢рдВрд╕

рдбреЗрдЯ рдФрд░ рдЯрд╛рдЗрдо рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЖрдкрдХреЛ рддрд╛рд░реАрдЦ рдореЗрдВ рджрд┐рди рдЬреЛрдбрд╝рдиреЗ, рджреЛ рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рдмреАрдЪ рдорд╣реАрдиреЗ рдирд┐рдХрд╛рд▓рдиреЗ рдЖрджрд┐ рдЬреИрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рдХрд░рдиреЗ рджреЗрддреЗ рд╣реИрдВред рдРрд╕реА рдлрд╝рдВрдХреНрд╢рдВрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдлрд╝рд╛рдпрджреЗрдордВрдж рд╣реЛрддреА рд╣реИрдВред рдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрджрд▓рддреЗ рд╣реИрдВред рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЬреИрд╕рд╛ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рджреВрд╕рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрд╕рдХрд╛ рдирд╛рдо рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рдлрд┐рд░ Oracle, SQL Server рдФрд░ MySQLтАФрд╕рдмрд╕реЗ рдЖрдо рдбреЗрдЯрд╛рдмреЗрд╕тАФрдХреЗ рдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдВрдХ рдорд┐рд▓реЗрдВрдЧреЗред рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдпреЗ рдЙрджрд╛рд╣рд░рдг рдЖрдЬрд╝рдорд╛рдПрдБ!

servers

рдЕрдкрдиреЗ SQL рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╕рдореВрд╣ рдмрдирд╛рдирд╛

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

рдЧреНрд░реБрдк рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдореЗрдХрд┐рдд рдбреЗрдЯрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ

GROUP BY рдХреНрд▓реЙрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИтАФрдЗрд╕реЗ рдЕрдХреНрд╕рд░ COUNT, MAX, MIN, AVG рдФрд░ SUM рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред GROUP BY рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ:

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);

GROUP BY рдХреНрд▓реЙрдЬрд╝ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмрд╛рддреЛрдВ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ:

  • Alias рдирд╛рдо GROUP BY рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ
  • WHERE рдХреНрд▓реЙрдЬрд╝ рд╣рдореЗрд╢рд╛ GROUP BY рд╕реЗ рдкрд╣рд▓реЗ рдЖрдПрдЧрд╛
  • HAVING рдХреНрд▓реЙрдЬрд╝ GROUP BY рдХреЗ рдмрд╛рдж рдЖрдПрдЧрд╛ рдФрд░ рд╕рдореВрд╣ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░ рд╢рд░реНрддреЗрдВ рд▓рдЧрд╛рдПрдЧрд╛ред
  • ORDER BY рдХреНрд▓реЙрдЬрд╝ рд╣рдореЗрд╢рд╛ рд╕рдмрд╕реЗ рдЕрдВрдд рдореЗрдВ рдЖрдПрдЧрд╛

COUNT рдПрдХ рд╕рдореВрд╣ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рд╢рд░реНрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╛ рдмрд┐рдирд╛ рд╢рд░реНрдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЧрд┐рдирддрд╛ рд╣реИред COUNT рдлрд╝рдВрдХреНрд╢рди NULL рдорд╛рдиреЛрдВ рдХреА рдЕрдирджреЗрдЦреА рдХрд░рддрд╛ рд╣реИред

рдЙрди рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреА рдЧрд┐рдирддреА рдХрд░реЗрдВ рдЬрд┐рдирдХрд╛ рдирд╛рдо 'A' рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:

SELECT count(ename)
FROM employee
WHERE ename LIKE 'A%';

Output:

COUNT(ENAME)
------------
           1

рдЯреЗрдмрд▓ employee рдореЗрдВ рдХреБрд▓ рд╡реЗрддрди, рдФрд╕рдд рд╡реЗрддрди, рдиреНрдпреВрдирддрдо рд╡реЗрддрди рдФрд░ рдЕрдзрд┐рдХрддрдо рд╡реЗрддрди рдирд┐рдХрд╛рд▓реЗрдВ:

SELECT sum(sal) as "TOTAL SAL", avg(sal) as "AVG SAL", min(sal) as "MIN SAL", max(sal) as "MAX SAL"
FROM employee;

     TOTAL SAL    AVG SAL    MIN SAL    MAX SAL
    ---------- ---------- ---------- ----------
      9475       1895        800       2975

рдЖрдк рдКрдкрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣рд┐рдд рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

SELECT sum(sal) as "TOTAL SAL", avg(sal) as "AVG SAL", min(sal) as "MIN SAL", max(sal) as "MAX SAL", deptno
FROM employee
GROUP BY deptno;
     TOTAL SAL    AVG SAL    MIN SAL    MAX SAL     DEPTNO
    ---------- ---------- ---------- ---------- ----------
      5700       1900       1250       2850         30
      3775     1887.5        800       2975         20

рдЖрдк рдирд┐рдореНрди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрд░рд┐рдпрдВрд╕ рдФрд░ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди (Standard Deviation) рднреА рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:

Oracle рдФрд░ MySQL рдХреЗ рд▓рд┐рдПMS SQL Server
SELECT STDDEV(column_name) FROM table_name;SELECT STDEV(column_name) FROM table_name;
SELECT VARIANCE(column_name) FROM table_name;SELECT VAR(column_name) FROM table_name;

рдЖрдк рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреЙрд▓рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднреА рд╕рдореВрд╣ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рднрд╛рдЧ рдХреЗ рднреАрддрд░ рдкреНрд░рддреНрдпреЗрдХ рдиреМрдХрд░реА рдХреЗ рд╡реЗрддрди рдХрд╛ рдХреБрд▓ рдпреЛрдЧ рдирд┐рдХрд╛рд▓реЗрдВ:

SELECT sum(sal) as "TOTAL SAL", deptno, job
FROM employee
GROUP BY deptno, job;

     TOTAL SAL     DEPTNO   JOB
    ---------- ---------- ---------
       800         20       CLERK
      2850         30       SALESMAN
      2975         20       MANAGER
      2850         30       MANAGER

рдЖрдк HAVING рдХреНрд▓реЙрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдореВрд╣ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХреЗрд╡рд▓ рд╕рдореВрд╣ рд╢рд░реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ: рд╕рдореВрд╣ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░ рд╢рд░реНрддреЗрдВ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП WHERE рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред

SELECT sum(sal) as "TOTAL SAL", deptno, job
FROM employee
GROUP BY deptno, job
HAVING sum(sal)>1000
ORDER BY sum(sal);
    TOTAL SAL     DEPTNO    JOB
    ---------- ---------- ---------
      2850         30       SALESMAN
      2850         30       MANAGER
      2975         20       MANAGER

рдПрдХрд╛рдзрд┐рдХ рдЯреЗрдмрд▓реНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛

рдЗрд╕ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдирд┐рдореНрди рдЬреЙрдЗрдиреНрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреА:

  • Cartesian product/Cross join
  • Inner join/EquiJoins
  • Natural joins
  • Outer Joins (Left, Right, Full)
  • Self Join

рдЖрдкрдХреЛ рдРрд╕реА рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреА рд╣реЛрдВрдЧреА рдЬреЛ рдХрдИ рдЯреЗрдмрд▓реНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдВред рдиреАрдЪреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:

tables

рдКрдкрд░ рдЬреИрд╕реА рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ employee рдФрд░ department рдЯреЗрдмрд▓реНрд╕ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рджреЛрдиреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП SQL рдореЗрдВ Joins рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред

Cartesian Product/Cross Join:

Cartesian product рддрдм рдмрдирддрд╛ рд╣реИ рдЬрдм рд░рд┐рд▓реЗрд╢рди R рдХреА рд╣рд░ рдЯрдкрд▓ рд░рд┐рд▓реЗрд╢рди S рдХреА рд╣рд░ рдЯрдкрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдмрдирд╛рддреА рд╣реИред

cartesian product

Cartesian product рдСрдкрд░реЗрд╢рди, рдЬрд┐рд╕реЗ Cross Join рднреА рдХрд╣рддреЗ рд╣реИрдВ, рджреЛ рдЯреЗрдмрд▓реНрд╕ рдХрд╛ рдЧреБрдгрд╛ рдХрд░рдХреЗ рдРрд╕реА рд░рд┐рд▓реЗрд╢рди рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рджреЛрдиреЛрдВ рдЯреЗрдмрд▓реНрд╕ рдХреА рд╕рднреА рд╕рдВрднрд╡ рдЯрдкрд▓-рдпреБрдЧреНрдореЛрдВ рд╕реЗ рдмрдиреА рд╣реЛред рдпрджрд┐ рдПрдХ рд░рд┐рд▓реЗрд╢рди R рдореЗрдВ I рдЯрдкрд▓ рдФрд░ M рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╣реЛрдВ рдФрд░ рджреВрд╕рд░рд╛ рд░рд┐рд▓реЗрд╢рди S рдореЗрдВ J рдЯрдкрд▓ рдФрд░ N рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╣реЛрдВ, рддреЛ Cartesian product рдореЗрдВ IxJ рдЯрдкрд▓ рдФрд░ M+N рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╣реЛрдВрдЧреЗред SQL рдорд╛рдирдХ CROSS JOIN рд╕реЗ рднреА Cartesian product рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

SELECT empno, ename, dname
FROM employee, department;

OR

SELECT empno, ename, dname
FROM employee CROSS JOIN department;
       EMPNO      ENAME      DNAME
    ---------- ---------- --------------
      7369        SMITH      ACCOUNTING
      7499        ALLEN      ACCOUNTING
      7521        WARD       ACCOUNTING
      7566        JONES      ACCOUNTING
      7698        BLAKE      ACCOUNTING
      7369        SMITH      RESEARCH
      7499        ALLEN      RESEARCH
      7521        WARD       RESEARCH
      7566        JONES      RESEARCH
      7698        BLAKE      RESEARCH
      7369        SMITH      SALES

     EMPNO        ENAME      DNAME
    ---------- ---------- --------------
      7499        ALLEN      SALES
      7521        WARD       SALES
      7566        JONES      SALES
      7698        BLAKE      SALES

15 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЪреБрдиреА рдЧрдИрдВред

рдЪреВрдБрдХрд┐ employee рдЯреЗрдмрд▓ рдореЗрдВ 5 рдЯрдкрд▓ рд╣реИрдВ рдФрд░ department рдореЗрдВ 3 рдЯрдкрд▓, рдЗрд╕рд▓рд┐рдП Cartesian product рдореЗрдВ 5x3=15 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВред Cartesian product рддрдм рдЬрдирд░реЗрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрдм:

  • рдЬреЙрдЗрди рдХрдВрдбреАрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛
  • рдЬреЙрдЗрди рдХрдВрдбреАрд╢рди рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ рдпрд╛ рд╕рд╣реА рддрд░рд╣ рд╕реЗ рдмрдиреА рдирд╣реАрдВ рд╣реИ

рдЬрдм рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рдЯреЗрдмрд▓реНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдЪрд╛рд╣рд┐рдП рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдорд┐рд▓ рдЯреЗрдмрд▓реНрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЬреЙрдЗрди рдХрдВрдбреАрд╢рди рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдпреЗ рдкреНрд░рд╛рдпрдГ рдкреНрд░рд╛рдЗрдорд░реА рдХреА рдФрд░ рдлреЙрд░реЗрди рдХреА рд╣реЛрддреЗ рд╣реИрдВред

Cartesian product рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд┐рдореБрд▓реЗрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

*Inner Join/EquiJoin:

Inner Join рдпрд╛ Equijoin (Oracle рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреБрдХреНрдд рд╢рдмреНрдж) рдкреНрд░рд╛рдЗрдорд░реА рдФрд░ рдлреЙрд░реЗрди рдХреА рд░рд┐рд╢реНрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рдЯреЗрдмрд▓реНрд╕ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ:

SELECT ename, dname
FROM employee e,department d
WHERE e.deptno=d.deptno;

OR

SELECT ename, dname
FROM employee e
JOIN department d
ON e.deptno=d.deptno;

    ENAME      DNAME
    ---------- --------------
    SMITH      RESEARCH
    ALLEN      SALES
    WARD       SALES
    JONES      RESEARCH
    BLAKE      SALES

рдКрдкрд░ рдХреА рдХреНрд╡реЗрд░реА рдореЗрдВ, department рдЯреЗрдмрд▓ рдореЗрдВ deptno рдкреНрд░рд╛рдЗрдорд░реА рдХреА рд╣реИ рдФрд░ employee рдЯреЗрдмрд▓ рдореЗрдВ рдлреЙрд░реЗрди рдХреАред рдЖрдк рдКрдкрд░ рджрд┐рдП рддрд╛рд░реНрдХрд┐рдХ рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рд░реНрддреЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

JOINS рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рдмрд┐рдВрджреБ:

  • рдпрджрд┐ рд╡рд╣реА рдХреЙрд▓рдо рдирд╛рдо рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЯреЗрдмрд▓реНрд╕ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рддреЛ рдХреЙрд▓рдо рдирд╛рдо рд╕реЗ рдкрд╣рд▓реЗ рдЯреЗрдмрд▓ рдирд╛рдо рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдпрддрдГ рднреА рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИред
  • n рдЯреЗрдмрд▓реНрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо-рд╕реЗ-рдХрдо n-1 рдЬреЙрдЗрди рдХрдВрдбреАрд╢рдВрд╕ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд╛рд░ рдЯреЗрдмрд▓реНрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рддреАрди рдЬреЙрдЗрдиреНрд╕ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред

рдЯреЗрдмрд▓ aliases: рдЯреЗрдмрд▓ aliases рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ FROM employee e, department d рдореЗрдВ e рдФрд░ d aliases рд╣реИрдВ, рддрд╛рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд╣рдЪрд╛рдирдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдХрд┐ рдХреЙрд▓рдо рдХрд┐рд╕ рдЯреЗрдмрд▓ рд╕реЗ рд╣реИтАФрдЦрд╛рд╕рдХрд░ рдЬрдм рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЯреЗрдмрд▓реНрд╕ рдореЗрдВ рд╕рдорд╛рди рдХреЙрд▓рдо рд╣реЛрдВтАФрдЕрдиреНрдпрдерд╛ ambiguous column рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред рдФрд░ рдпрд╣ рд▓рдВрдмреЗ рдЯреЗрдмрд▓ рдирд╛рдо рдмрд╛рд░-рдмрд╛рд░ рд▓рд┐рдЦрдиреЗ рд╕реЗ рднреА рдмрдЪрд╛рддрд╛ рд╣реИред

рдЖрдк nonequi-joins рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдорд╛рдирддрд╛ (equality) рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд╢рд░реНрддреЛрдВ рдкрд░ рдЯреЗрдмрд▓реНрд╕ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред salgrade рдирд╛рдордХ рдПрдХ рдФрд░ рдЯреЗрдмрд▓ рдорд╛рдиреЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реЗрддрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рдЧреНрд░реЗрдб рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ:

salgrade table

рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдХрд░реНрдордЪрд╛рд░реА рдХрд╛ рдЧреНрд░реЗрдб рд╡реЗрддрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЧреНрд░реЗрдб salgrade рдЯреЗрдмрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ рдЬрдмрдХрд┐ рд╡реЗрддрди employee рдЯреЗрдмрд▓ рдореЗрдВ:

SELECT e.ename, e.sal, s.grade
FROM employee e, salgrade s
WHERE e.sal between s.losal AND s.hisal;
    ENAME             SAL      GRADE
    ---------- ---------- ----------
    JONES            2975          4
    BLAKE            2850          4
    ALLEN            1600          3
    WARD             1250          2
    SMITH             800          1

рдЙрджрд╛рд╣рд░рдг: рдЖрдкрд╕реЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдирд╛рдо, рдЙрдирдХрд╛ рд╡реЗрддрди, рдЧреНрд░реЗрдб рдФрд░ рд╡рд┐рднрд╛рдЧ рдХрд╛ рдирд╛рдо рджреЗрдиреЗ рдХреЛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╡реЗрддрди employee рдЯреЗрдмрд▓ рдореЗрдВ, рдЧреНрд░реЗрдб salgrade рдЯреЗрдмрд▓ рдореЗрдВ рдФрд░ рд╡рд┐рднрд╛рдЧ рдХрд╛ рдирд╛рдо department рдЯреЗрдмрд▓ рдореЗрдВ рд╣реИтАФрддреЛ рдЖрдкрдХреЛ рддреАрди рдЯреЗрдмрд▓реНрд╕ рдХреЛ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

SELECT e.ename, e.sal, d.dname, s.grade
FROM employee e, department d, salgrade s
WHERE e.deptno=d.deptno
AND e.sal BETWEEN s.losal AND s.hisal;

Output:
ENAME             SAL DNAME               GRADE
---------- ---------- -------------- ----------
JONES            2975 RESEARCH                4
BLAKE            2850 SALES                   4
ALLEN            1600 SALES                   3
WARD             1250 SALES                   2
SMITH             800 RESEARCH                1

рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рддреАрди рдЯреЗрдмрд▓реНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рджреЛ рдЬреЙрдЗрди рдХрдВрдбреАрд╢рдВрд╕ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ nonequi-join рд╣реИред

Natural Join:

Natural joins рдЯреЗрдмрд▓реНрд╕ рдХреЛ рд╕реНрд╡рддрдГ рдЙрди рдХреЙрд▓рдореНрд╕ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рдХреЗ рдЬреЛрдбрд╝рдиреЗ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдирд╛рдо рд╕рдорд╛рди рд╣реЛрдВред рдпрджрд┐ рдирд╛рдо рд╕рдорд╛рди рд╣реИрдВ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЕрд▓рдЧ рд╣реИ, рддреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред

рд╕рд┐рдВрдЯреИрдХреНрд╕: SELECT FROM table1 NATURAL JOIN table2; SELECT FROM employee NATURAL JOIN department; рдЪреВрдБрдХрд┐ natural join рд╕реНрд╡рдпрдВ рдореЗрд▓ рдЦрд╛рддреЗ рдХреЙрд▓рдо рдвреВрдБрдврддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реЗ рдХреЙрд▓рдо рдвреВрдБрдв рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП USING рдХреНрд▓реЙрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдмрддрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдХрд┐рди рдХреЙрд▓рдореНрд╕ рдкрд░ equi join рдХрд░рдирд╛ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ: NATURAL JOIN рдФрд░ USING рджреЛ рдЕрд▓рдЧ рдХреНрд▓реЙрдЬрд╝ рд╣реИрдВ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛; рдпреЗ рдкрд░рд╕реНрдкрд░ рдЕрдирдиреНрдп рд╣реИрдВред

SELECT e.ename, d.dname, e.sal
FROM employee e JOIN department d
USING (deptno)
WHERE deptno=20;

output:

ENAME      DNAME                 SAL
---------- -------------- ----------
SMITH      RESEARCH              800
JONES      RESEARCH             2975

USING рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рджрд┐рдП рдЧрдП рдХреЙрд▓рдореНрд╕ рдХреЗ рдЖрдЧреЗ рдХрд╣реАрдВ рднреА SQL рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдЯреЗрдмрд▓ рдирд╛рдо рдпрд╛ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдЧрд▓рдд рд╣реИ:

SELECT e.ename, d.dname, e.sal
FROM employee e JOIN department d
USING (d.deptno)
WHERE d.deptno=20;

d.deptno рдЧрд▓рдд рд╣реИред рдХреЗрд╡рд▓ deptno рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред Outer Joins:

Outer joins рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ:

  1. Left Outer Join: рджреЛ рдЯреЗрдмрд▓реНрд╕ рдХреЗ рдмреАрдЪ рдРрд╕рд╛ рдЬреЙрдЗрди рдЬреЛ inner join рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдмрд╛рдПрдБ рдЯреЗрдмрд▓ рдХреА рдЕрдкреНрд░рдореЗрд▓рд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рднреА рд▓реМрдЯрд╛рдП, LEFT OUTER JOIN рдХрд╣рд▓рд╛рддрд╛ рд╣реИ
  2. Right Outer Join: рджреЛ рдЯреЗрдмрд▓реНрд╕ рдХреЗ рдмреАрдЪ рдРрд╕рд╛ рдЬреЙрдЗрди рдЬреЛ inner join рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рджрд╛рдПрдБ рдЯреЗрдмрд▓ рдХреА рдЕрдкреНрд░рдореЗрд▓рд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рднреА рд▓реМрдЯрд╛рдП, RIGHT OUTER JOIN рдХрд╣рд▓рд╛рддрд╛ рд╣реИред
  3. Full Outer Join: рджреЛ рдЯреЗрдмрд▓реНрд╕ рдХреЗ рдмреАрдЪ рдРрд╕рд╛ рдЬреЙрдЗрди рдЬреЛ inner join рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рджреЛрдиреЛрдВ рдУрд░ рдХреА рдЕрдкреНрд░рдореЗрд▓рд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рднреА рд▓реМрдЯрд╛рдП, FULL OUTER JOIN рдХрд╣рд▓рд╛рддрд╛ рд╣реИред

рдЗрдиреНрд╣реЗрдВ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рджреЗрдЦреЗрдВ:

SELECT e.ename, s.grade
FROM salgrade s LEFT OUTER JOIN employee e
ON e.sal BETWEEN s.losal AND s.hisal;

Output:

ENAME          DEPTNO DNAME
---------- ---------- --------------
SMITH              20 RESEARCH
JONES              20 RESEARCH
ALLEN              30 SALES
WARD               30 SALES
BLAKE              30 SALES.sal BETWEEN s.losal AND s.hisal;

Output:

ENAME          DEPTNO DNAME
---------- ---------- --------------
SMITH              20 RESEARCH
JONES              20 RESEARCH
ALLEN              30 SALES
WARD               30 SALES
BLAKE              30 SALESSELECT e.ename, d.deptno, d.dname
FROM employee e RIGHT OUTER JOIN department d
ON e.deptno=d.deptno;

output:

ENAME          DEPTNO DNAME
---------- ---------- --------------
SMITH              20 RESEARCH
ALLEN              30 SALES
WARD               30 SALES
JONES              20 RESEARCH
BLAKE              30 SALES
                   10 ACCOUNTINGSELECT e.ename, d.deptno, d.dname
FROM employee e FULL OUTER JOIN department d
ON e.deptno=d.deptno;

Output:
ENAME          DEPTNO DNAME
---------- ---------- --------------
SMITH              20 RESEARCH
ALLEN              30 SALES
WARD               30 SALES
JONES              20 RESEARCH
BLAKE              30 SALES
                   10 ACCOUNTING

department рдЯреЗрдмрд▓ рдореЗрдВ deptno 10 рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкреНрд░рдореЗрд▓рд┐рдд рдкрдВрдХреНрддрд┐ рдереА, рдФрд░ employee рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдкреНрд░рдореЗрд▓рд┐рдд рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рдорд┐рд▓реАред рдЗрд╕реА рдкреНрд░рдХрд╛рд░, salgrade рдореЗрдВ grade 5 рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкреНрд░рдореЗрд▓рд┐рдд рдкрдВрдХреНрддрд┐ рд╣реИред

Self-Join:

рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ рдЬрдм рдЖрдк рдХрд┐рд╕реА рдЯреЗрдмрд▓ рдХреЛ рд╕реНрд╡рдпрдВ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, employee рдЯреЗрдмрд▓ рдореЗрдВ рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рд╕рд╣рд┐рдд рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ (рдКрдкрд░ employee рдЯреЗрдмрд▓ рджреЗрдЦреЗрдВ)ред рдпрджрд┐ рдЖрдк рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЯреЗрдмрд▓ рдХреЛ рд╕реНрд╡рдпрдВ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред Self-Join рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ:

SELECT e.ename as Employee, m.ename as Manager
FROM employee e, employee m
WHERE e.mgr=m.empno;
    EMPLOYEE   MANAGER
    ---------- ----------
    ALLEN      BLAKE
    WARD       BLAKE

рдХреНрд╡реЗрд░реАрдЬрд╝ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ

рд╕рдмрдХреНрд╡реЗрд░реА рдПрдХ рдХреНрд╡реЗрд░реА рдХреЗ рднреАрддрд░ рдХреНрд╡реЗрд░реА рд╣реИред рдмрдбрд╝реА рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрдХреНрд╡реЗрд░реА рдЙрдкрдпреЛрдЧреА рд╣реЛрддреА рд╣реИред рд╕рдмрдХреНрд╡реЗрд░реАрдЬрд╝ рдиреЗрд╕реНрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдирд┐рдореНрди SQL рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ:

  • WHERE
  • FROM
  • HAVING

рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ; рдЖрдкрд╕реЗ рдРрд╕реЗ рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡реЗрддрди рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд░реНрдордЪрд╛рд░реА, рдпрд╣рд╛рдБ James, рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛред рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрд▓рдЭрд╛рдПрдБрдЧреЗ? рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рддреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  • James рдХрд╛ рд╡реЗрддрди рдЦреЛрдЬреЗрдВ
  • James рдХреЗ рд╡реЗрддрди рдХреА рддреБрд▓рдирд╛ рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рд╕реЗ рдХрд░реЗрдВ

рдпрд╣ рд╕рдмрдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрдХреНрд╡реЗрд░реА (рднреАрддрд░реА рдХреНрд╡реЗрд░реА) рдореБрдЦреНрдп (рдмрд╛рд╣рд░реА) рдХреНрд╡реЗрд░реА рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧреАред

SELECT empno, ename
FROM employee
WHERE sal>(SELECT sal from employee where ename='JAMES');

рд╕рдмрдХреНрд╡реЗрд░реА рдХреЗ рдкреНрд░рдХрд╛рд░:

  • рд╕рд┐рдВрдЧрд▓-рд░реЛ рд╕рдмрдХреНрд╡реЗрд░реА: рдРрд╕реА рдХреНрд╡реЗрд░реА рдЬреЛ рднреАрддрд░реА SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рд▓реМрдЯрд╛рддреА рд╣реИред

  • рдорд▓реНрдЯрд┐рдкрд▓-рд░реЛ рд╕рдмрдХреНрд╡реЗрд░реА: рдРрд╕реА рдХреНрд╡реЗрд░реА рдЬреЛ рднреАрддрд░реА SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓реМрдЯрд╛рддреА рд╣реИред

рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рдмрд┐рдВрджреБ:

  • рд╕рдмрдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рдШреЗрд░реЗрдВред
  • рд╕рдмрдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ рддреБрд▓рдирд╛ рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд░рдЦреЗрдВред
  • рд╕рд┐рдВрдЧрд▓-рд░реЛ рд╕рдмрдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдЧрд▓-рд░реЛ рдСрдкрд░реЗрдЯрд░реНрд╕ (>, < , >= , <= , < >) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  • рдорд▓реНрдЯрд┐рдкрд▓-рд░реЛ рд╕рдмрдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЗ рд╕рд╛рде рдорд▓реНрдЯрд┐рдкрд▓-рд░реЛ рдСрдкрд░реЗрдЯрд░реНрд╕ (IN, ANY, ALL) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕рд┐рдВрдЧрд▓-рд░реЛ рд╕рдмрдХреНрд╡реЗрд░реА:

рдЖрдкрд╕реЗ рдЙрди рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдЦреЛрдЬрдиреЗ рдХреЛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдиреМрдХрд░реА рд╢реАрд░реНрд╖рдХ empno 7521 рдХреЗ рд╕рдорд╛рди рд╣реИ

SELECT ename, job
FROM employee
WHERE job=(SELECT job FROM employee WHERE empno=7521);
    ENAME      JOB
    ---------- ---------
    ALLEN      SALESMAN
    WARD       SALESMAN

рдЙрди рд╡рд┐рднрд╛рдЧреЛрдВ рдХрд╛ рдЕрдзрд┐рдХрддрдо рд╡реЗрддрди рдЪреБрдиреЗрдВ рдЬрд╣рд╛рдБ рдЕрдзрд┐рдХрддрдо рд╡реЗрддрди рд╡рд┐рднрд╛рдЧ 20 рдХреЗ рдЕрдзрд┐рдХрддрдо рд╡реЗрддрди рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдмрд░рд╛рдмрд░ рд╣реИ

SELECT deptno, max(sal)
FROM employee
GROUP BY deptno
HAVING max(sal)>=(SELECT max(sal) FROM employee WHERE deptno=20);
    DEPTNO   MAX(SAL)
---------- ----------
        20       2975

рдорд▓реНрдЯрд┐рдкрд▓-рд░реЛ рд╕рдмрдХреНрд╡реЗрд░реА:

рд╡реЗ рдХрд░реНрдордЪрд╛рд░реА рдЦреЛрдЬреЗрдВ рдЬрд┐рдирдХрд╛ рд╡реЗрддрди рдЙрди рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдХрд┐рд╕реА рднреА рд╡реЗрддрди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдЬрд┐рдирдХреА рдиреМрдХрд░реА Manager рд╣реИред рдпрд╣ рдорд▓реНрдЯрд┐рдкрд▓-рд░реЛ рд╕рдмрдХреНрд╡реЗрд░реА рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рд╕рдмрдХреНрд╡реЗрд░реА рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓реМрдЯрд╛ рд╕рдХрддреА рд╣реИред

SELECT ename, job, sal
FROM employee
WHERE sal IN (SELECT sal FROM employee WHERE job='MANAGER');
    ENAME      JOB              SAL
    ---------- --------- ----------
    JONES      MANAGER         2975
    BLAKE      MANAGER         2850

рдЬрдм рд╕рдмрдХреНрд╡реЗрд░реАрдЬрд╝ FROM рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╣реЛрддреА рд╣реИрдВ, рддреЛ рд╡реЗ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдХреА рддрд░рд╣ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИрдВ рдЬреЛ рд╕реНрдЯреЛрд░реЗрдЬ рдкрд░ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрддреА, рдмрд▓реНрдХрд┐ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╡реНрдпреВ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг:

SELECT e.ename, e.job, e.sal
FROM employee e, (SELECT deptno FROM department WHERE loc='DALLAS') d
WHERE e.deptno=d.deptno;
    ENAME      JOB              SAL
    ---------- --------- ----------
    SMITH      CLERK            800
    JONES      MANAGER         2975

SET рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ

SQL рдореЗрдВ Set рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХрд╛рдзрд┐рдХ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЧрдгрд┐рдд рдХреА рд╕реЗрдЯ рдереНрдпреЛрд░реА рдФрд░ рдЙрд╕рдХреЗ рдСрдкрд░реЗрд╢рдВрд╕ рдЬреИрд╕реЗ UNION, MINUS, INTERSECT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ SET рдСрдкрд░реЗрдЯрд░реНрд╕ рд╕реЗ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ рдХреИрд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдирд┐рдореНрди SET рдСрдкрд░реЗрдЯрд░реНрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреАред

рд╕реВрдЪрдирд╛: SET рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ compound statements рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

  • UNION рдФрд░ UNION ALL
  • INTERSECT
  • EXCEPT (SQL рдорд╛рдирдХ) рдФрд░ MINUS (Oracle-рд╡рд┐рд╢рд┐рд╖реНрдЯ)

UNION

рджреЛ рд░рд┐рд▓реЗрд╢рдиреНрд╕ (рдЯреЗрдмрд▓реНрд╕) R рдФрд░ S рдорд╛рдиреЗрдВ, рддреЛ UNION R рдХреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдФрд░ S рдХреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓реЗрдХрд░ рдбреБрдкреНрд▓реАрдХреЗрдЯреНрд╕ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рд▓реМрдЯрд╛рдИ рдЧрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХрддрдо r+s рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд╣рд╛рдБ r R рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдФрд░ s S рдореЗрдВред

рд╕рднреА рд╡рд┐рднрд╛рдЧ рдирд╛рдо рдЪреБрдиреЗрдВ, рдЬрд┐рдирдореЗрдВ рд╡реЗ рд╡рд┐рднрд╛рдЧ рдирд╛рдо рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдЬрд┐рдирдХреЗ рдХрд░реНрдордЪрд╛рд░реА 23-OCT-1999 рд╕реЗ рдкрд╣рд▓реЗ рд╣рд╛рдпрд░ рд╣реБрдП рдереЗ

SELECT dname
FROM department
UNION
SELECT dname
FROM department, employee
WHERE department.deptno=employee.deptno AND employee.hiredate<to_date('23-OCT-1999');
    DNAME
    --------------
    ACCOUNTING
    OPERATIONS
    RESEARCH
    SALES

UNION рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рдмрд┐рдВрджреБ:

  • рдХреНрд╡реЗрд░реА рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╕рднреА SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдореЗрдВ рдЪреБрдиреЗ рдЧрдП рдХреЙрд▓рдореНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЙрдирдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рди рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
  • рдХреЙрд▓рдореНрд╕ рдХреЗ рдирд╛рдо рд╕рдорд╛рди рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВред
  • рдЖрдЙрдЯрдкреБрдЯ SELECT рдХреНрд▓реЙрдЬрд╝ рдХреЗ рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдХреЗ рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рд╕реЙрд░реНрдЯ рд╣реЛрддрд╛ рд╣реИред
  • рдбреБрдкреНрд▓реАрдХреЗрдЯ рдЬрд╛рдБрдЪ рдХреЗ рджреМрд░рд╛рди NULL рдорд╛рдиреЛрдВ рдХреА рдЕрдирджреЗрдЦреА рдирд╣реАрдВ рд╣реЛрддреАред

UNION ALL рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдорд┐рд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдбреБрдкреНрд▓реАрдХреЗрдЯреНрд╕ рдирд╣реАрдВ рд╣рдЯрд╛рддрд╛, рдЗрд╕рд▓рд┐рдП DISTINCT рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред рдПрдХ рдФрд░ рдЯреЗрдмрд▓ emp рдорд╛рдиреЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрд╖ 2000 рдХреЗ рдХрд░реНрдордЪрд╛рд░реА рд╣реИрдВред emp рдФрд░ employee рдЯреЗрдмрд▓ рд╕реЗ рд╕рднреА рдХрд░реНрдордЪрд╛рд░реА рд╕рдВрдЦреНрдпрд╛, рдирд╛рдо рдФрд░ рдиреМрдХрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

SELECT empno, ename, job
FROM employee
UNION ALL
SELECT empno, ename, job
FROM emp;
       EMPNO      ENAME      JOB
    ---------- ---------- ---------
      7369        SMITH      CLERK
      7499        ALLEN      SALESMAN
      7521        WARD       SALESMAN
      7566        JONES      MANAGER
      7698        BLAKE      MANAGER
      7369        SMITH      CLERK
      7499        ALLEN      SALESMAN
      7521        WARD       SALESMAN
      7566        JONES      MANAGER
      7654        MARTIN     SALESMAN
      7698        BLAKE      MANAGER

     EMPNO        ENAME      JOB
    ---------- ---------- ---------
      7782        CLARK      MANAGER
      7788        SCOTT      ANALYST
      7839        KING       PRESIDENT
      7844        TURNER     SALESMAN
      7876        ADAMS      CLERK
      7900        JAMES      CLERK

INTERSECT

рд╕реЗрдЯ рдереНрдпреЛрд░реА рдХреЗ рд╕рдорд╛рди, рдЗрдВрдЯрд░рд╕реЗрдХреНрд╢рди рджреЛрдиреЛрдВ рд╕реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рди рджреЗрддрд╛ рд╣реИред рджреЛ рд░рд┐рд▓реЗрд╢рдиреНрд╕ R рдФрд░ S рдорд╛рдиреЗрдВ, рддреЛ INTERSECT рджреЛрдиреЛрдВ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕рднреА рдЯрдкрд▓реНрд╕ рдХрд╛ рд╕реЗрдЯ рд▓реМрдЯрд╛рдПрдЧрд╛ред

SELECT empno, ename, job
FROM employee
INTERSECT
SELECT empno, ename, job
FROM emp;
     EMPNO ENAME      JOB
---------- ---------- ---------
      7369 SMITH      CLERK
      7499 ALLEN      SALESMAN
      7521 WARD       SALESMAN
      7566 JONES      MANAGER
      7698 BLAKE      MANAGER

INTERSECT рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рдмрд┐рдВрджреБ:

  • рдХреНрд╡реЗрд░реА рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╕рднреА SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдореЗрдВ рдЪреБрдиреЗ рдЧрдП рдХреЙрд▓рдореНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЙрдирдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рди рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
  • рдХреЙрд▓рдореНрд╕ рдХреЗ рдирд╛рдо рд╕рдорд╛рди рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВред
  • INTERSECT NULL рдорд╛рдиреЛрдВ рдХреА рдЕрдирджреЗрдЦреА рдирд╣реАрдВ рдХрд░рддрд╛

EXCEPT рдФрд░ MINUS:

EXCEPT (SQL Server рдореЗрдВ) рдФрд░ MINUS (Oracle-рд╡рд┐рд╢рд┐рд╖реНрдЯ) рджреЛрдиреЛрдВ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреА рдЧрдИ рд╡реЗ рд╕рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЪреБрдиреЗрдВ рдЬреЛ рджреВрд╕рд░реА рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдЪреБрдиреА рдЧрдИрдВред рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдЯреЗрдмрд▓ рджреЗрдЦреЗрдВ:

products

рдорд╛рди рд▓реЗрдВ, рдЖрдкрдХреЛ рдРрд╕рд╛ рдЙрддреНрдкрд╛рдж рдвреВрдБрдврдирд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ quantity 1 рд╕реЗ 100 рдХреЗ рдмреАрдЪ рд╣реИ рд▓реЗрдХрд┐рди 50-75 рдХреЗ рдмреАрдЪ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк SQL Server рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣рд╛рдВ EXCEPT рдФрд░ Oracle рд╕рд░реНрд╡рд░ рдкрд░ MINUS рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

SELECT prod_name, qty
FROM products
WHERE qty BETWEEN 1 AND 100
EXCEPT
SELECT prod_name, qty
FROM products
WHERE qty BETWEEN 50 AND 75;

Oracle рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП:

SELECT prod_name, qty
FROM products
WHERE qty BETWEEN 1 AND 100
MINUS
SELECT prod_name, qty
FROM products
WHERE qty BETWEEN 50 AND 75;

      PROD_NAME               QTY      
    -------------       ----------
          COLGATE               1
          SENSODYNE             100
          SENSODYNE TOOTHBRUSH  30

EXCEPT/MINUS рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рдмрд┐рдВрджреБ:

  • рдХреНрд╡реЗрд░реА рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╕рднреА SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдореЗрдВ рдЪреБрдиреЗ рдЧрдП рдХреЙрд▓рдореНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЙрдирдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рди рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
  • рдХреЙрд▓рдореНрд╕ рдХреЗ рдирд╛рдо рд╕рдорд╛рди рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВред
  • MINUS рдСрдкрд░реЗрдЯрд░ рдХреЗ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WHERE рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рджрд┐рдП рдЧрдП рд╕рднреА рдХреЙрд▓рдореНрд╕ SELECT рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рднреА рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдмрдзрд╛рдИ рд╣реЛ!

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

рдпрджрд┐ рдЖрдк SQL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ DataCamp рдХрд╛ рдирд┐рдГрд╢реБрд▓реНрдХ Intro to SQL for Data Science рдХреЛрд░реНрд╕ рдХрд░реЗрдВред

рд╕рдВрджрд░реНрдн

  1. https://docs.oracle.com/cd/B19306_01/server.102/b14200/operators005.htm
  2. https://en.wikipedia.org/wiki/Set_operations_(SQL)#EXCEPT_operator
  3. https://www.w3schools.com/sql/sql_datatypes.asp
  4. https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT012

рд╡рд┐рд╖рдп