рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЖрдк 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) рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИред

RDBMS рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╢рдмреНрджрд╛рд╡рд▓реА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
| рд╢рдмреНрдж | рд╡рд┐рд╡рд░рдг |
|---|
| рдЯреЗрдмрд▓ | рдЯреЗрдмрд▓ RDBMS рдХреА рдореВрд▓ рднрдВрдбрд╛рд░рдг рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдПрдХ рдЯреЗрдмрд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреА рдХрд┐рд╕реА рд╡рд╕реНрддреБ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг: Employees. |
| рдПрдХрд▓ рдкрдВрдХреНрддрд┐ рдпрд╛ рдЯрдкрд▓ | рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ред рдЯреЗрдмрд▓ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдПрдХ рдкреНрд░рд╛рдЗрдорд░реА рдХреА рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдбреБрдкреНрд▓реАрдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ред |
| рдХреЙрд▓рдо рдпрд╛ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ | рдЖрдорддреМрд░ рдкрд░ рдХрд┐рд╕реА рдПрдВрдЯрд┐рдЯреА рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ |
| рдкреНрд░рд╛рдЗрдорд░реА рдХреА | рдПрдХ рдлрд╝реАрд▓реНрдб рдЬреЛ рдХрд┐рд╕реА рдкрдВрдХреНрддрд┐ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рди рдХрд░рддреА рд╣реИ |
| рдлреЙрд░реЗрди рдХреА | рдлреЙрд░реЗрди рдХреА рд╡рд╣ рдХреЙрд▓рдо рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЯреЗрдмрд▓реНрд╕ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдлреЙрд░реЗрди рдХреА рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреЗрдмрд▓ рдХреА рдкреНрд░рд╛рдЗрдорд░реА рдХреА рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИред |
рдЖрдк рдкреНрд░рд╛рдЗрдорд░реА рдФрд░ рдлреЙрд░реЗрди рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрд╛рдзрд┐рдХ рдЯреЗрдмрд▓реНрд╕ рдХреЛ рдЖрдкрд╕ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдкреНрд░рд╛рдЗрдорд░реА рдХреА (PK) рджреНрд╡рд╛рд░рд╛ рдЕрджреНрд╡рд┐рддреАрдп рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдлреЙрд░реЗрди рдХреА (FK) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреЗрдмрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ Structured Query Language рдпрд╛ SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд░ рдбреЗрдЯрд╛рдмреЗрд╕ ANSI SQL, рдпрд╛рдиреА рдорд╛рдирдХ SQL, рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛, рд╕рд╛рде рд╣реА рдХреБрдЫ рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рднреА рд╣реЛрдЧрд╛ред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЖрдк ANSI SQL рд╕реАрдЦреЗрдВрдЧреЗ рддрд╛рдХрд┐ рдЖрдк рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВред ANSI SQL рдХреЛ рдкрд╛рдБрдЪ рднрд╛рдЧреЛрдВ рдореЗрдВ рдмрд╛рдВрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд╕рднреА рдХреЗ рдирд╛рдо рдмрддрд╛рдКрдВрдЧрд╛, рдкрд░ рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рджреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рднрд╛рдЧ рд╣реИрдВтАФрдбреЗрдЯрд╛ рд░рд┐рдЯреНрд░реАрд╡рд▓ рдФрд░ DML:
- рдбреЗрдЯрд╛ рд░рд┐рдЯреНрд░реАрд╡рд▓:
- рдбреЗрдЯрд╛ рдореИрдирд┐рдкреНрдпреБрд▓реЗрд╢рди рд▓реИрдВрдЧреНрд╡реЗрдЬ (DML):
- Insert, Update, Delete, Merge
- рдбреЗрдЯрд╛ рдбреЗрдлрд╝рд┐рдирд┐рд╢рди рд▓реИрдВрдЧреНрд╡реЗрдЬ (DDL):
- Create, Alter, Drop, Rename, Truncate.
- рдбреЗрдЯрд╛ рдХрдВрдЯреНрд░реЛрд▓ рд▓реИрдВрдЧреНрд╡реЗрдЬ (DCL):
- рдЯреНрд░рд╛рдВрдЬрд╝реЗрдХреНрд╢рди рдХрдВрдЯреНрд░реЛрд▓:
- 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 рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрд╛рдП рдЬрд╛рдПрдВрдЧреЗ:

рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП:
SQL рдФрд░ рдбреЗрдЯрд╛ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕рднреА SQL рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдирдореВрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдорд╛рдиреЗрдВ:
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджреЛ рдЯреЗрдмрд▓ рд╣реИрдВтАФemp рдЬреЛ рдХрд░реНрдордЪрд╛рд░реА рдбреЗрдЯрд╛ рд░рдЦрддрд╛ рд╣реИ рдФрд░ dept рдЬреЛ рд╡рд┐рднрд╛рдЧреЛрдВ рдХреЗ рдЕрднрд┐рд▓реЗрдЦ рд░рдЦрддрд╛ рд╣реИред
emp рдЯреЗрдмрд▓ рдореЗрдВ рдХрд░реНрдордЪрд╛рд░реА рд╕рдВрдЦреНрдпрд╛ (empno), рдХрд░реНрдордЪрд╛рд░реА рдирд╛рдо (ename), рд╡реЗрддрди (sal), рдХрдореАрд╢рди (comm), рдиреМрдХрд░реА рдХрд╛ рдирд╛рдо (job), рдкреНрд░рдмрдВрдзрдХ рдЖрдИрдбреА (mgr), рдирд┐рдпреБрдХреНрддрд┐ рддрд┐рдерд┐ (hiredate) рдФрд░ рд╡рд┐рднрд╛рдЧ рд╕рдВрдЦреНрдпрд╛ (deptno) рд╣реИрдВред рдЪреВрдВрдХрд┐ рдкреНрд░рдмрдВрдзрдХ рднреА рдХрд░реНрдордЪрд╛рд░реА рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреА рднреА рдПрдХ рдХрд░реНрдордЪрд╛рд░реА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП mgr рдЙрди empno рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕рдХреА рдиреМрдХрд░реА "MANAGER" рд╣реИред
dept рдЯреЗрдмрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЧ рд╕рдВрдЦреНрдпрд╛ (deptno), рд╡рд┐рднрд╛рдЧ рдХрд╛ рдирд╛рдо (dname) рдФрд░ рд╡рд┐рднрд╛рдЧ рдХрд╛ рд╕реНрдерд╛рди (loc) рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд┐рдирд╛рдВрдХ рдХрд╛ рдлрд╝реЙрд░реНрдореИрдЯ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдВ 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 рдХреНрд╡реЗрд░реА, рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдкрдХреЛ рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧреА:
| ename | job |
|---|
| A | Salesman |
| B | Manager |
| C | Manager |
рд╕рднреА рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдФрд░ рд╕рднреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП * рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
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
рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рд░реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрдЯрд░реНрд╕, рдХрдВрдбреАрд╢рдирд▓ рд╕рд┐рдВрдмрд▓ рдФрд░ рд╡рд┐рд╢реЗрд╖ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
=, <>, !=, >=, <=, >, < рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХреА рдХреНрд╡реЗрд░реА рдореЗрдВ = рдХрд╛ рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛ рд╣реИред
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 рддреАрдиреЛрдВ рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрдЯрд┐рд▓ рд╢рд░реНрддреЗрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреНрд░рдо рд╣реИ:
- NOT
- AND
- 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 рджреЛ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рдкреНрд░рддрд┐рд╢рдд % рдФрд░ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ _ рдЬреЛ рдкреИрдЯрд░реНрди рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред
- % рдХрд╛ рдЕрд░реНрде рд╣реИ рд╢реВрдиреНрдп, рдПрдХ, рдпрд╛ рдПрдХрд╛рдзрд┐рдХ рд╡рд░реНрдг
- %M%: рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ M рд░рдЦрдиреЗ рд╡рд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдБ
- M%: M рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рди рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдБ
- %M: M рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рди рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдБ
- M%A: M рд╕реЗ рд╢реБрд░реВ рдФрд░ A рдкрд░ рд╕рдорд╛рдкреНрдд
рдкреИрдЯрд░реНрди рдХреЗрд╕-рд╕реЗрдВрд╕рд┐рдЯрд┐рд╡ рд╣реЛрддреЗ рд╣реИрдВред
- _ рдЬреНрдЮрд╛рдд рд╡рд░реНрдг рдХреЗ рдкрд╣рд▓реЗ рдпрд╛ рдмрд╛рдж рдореЗрдВ рдЕрдЬреНрдЮрд╛рдд рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдПрдХ рд╡рд░реНрдг рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
- _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тАФрд╕рдмрд╕реЗ рдЖрдо рдбреЗрдЯрд╛рдмреЗрд╕тАФрдХреЗ рдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдВрдХ рдорд┐рд▓реЗрдВрдЧреЗред рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдпреЗ рдЙрджрд╛рд╣рд░рдг рдЖрдЬрд╝рдорд╛рдПрдБ!
рдЕрдкрдиреЗ 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
рдЖрдкрдХреЛ рдРрд╕реА рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреА рд╣реЛрдВрдЧреА рдЬреЛ рдХрдИ рдЯреЗрдмрд▓реНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдВред рдиреАрдЪреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
рдКрдкрд░ рдЬреИрд╕реА рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ employee рдФрд░ department рдЯреЗрдмрд▓реНрд╕ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рджреЛрдиреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП SQL рдореЗрдВ Joins рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред
Cartesian Product/Cross Join:
Cartesian product рддрдм рдмрдирддрд╛ рд╣реИ рдЬрдм рд░рд┐рд▓реЗрд╢рди R рдХреА рд╣рд░ рдЯрдкрд▓ рд░рд┐рд▓реЗрд╢рди S рдХреА рд╣рд░ рдЯрдкрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдмрдирд╛рддреА рд╣реИред
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 рдЯреЗрдмрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ рдЬрдмрдХрд┐ рд╡реЗрддрди 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 рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ:
- Left Outer Join: рджреЛ рдЯреЗрдмрд▓реНрд╕ рдХреЗ рдмреАрдЪ рдРрд╕рд╛ рдЬреЙрдЗрди рдЬреЛ inner join рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдмрд╛рдПрдБ рдЯреЗрдмрд▓ рдХреА рдЕрдкреНрд░рдореЗрд▓рд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рднреА рд▓реМрдЯрд╛рдП, LEFT OUTER JOIN рдХрд╣рд▓рд╛рддрд╛ рд╣реИ
- Right Outer Join: рджреЛ рдЯреЗрдмрд▓реНрд╕ рдХреЗ рдмреАрдЪ рдРрд╕рд╛ рдЬреЙрдЗрди рдЬреЛ inner join рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рджрд╛рдПрдБ рдЯреЗрдмрд▓ рдХреА рдЕрдкреНрд░рдореЗрд▓рд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рднреА рд▓реМрдЯрд╛рдП, RIGHT OUTER JOIN рдХрд╣рд▓рд╛рддрд╛ рд╣реИред
- 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 рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ:
рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ; рдЖрдкрд╕реЗ рдРрд╕реЗ рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡реЗрддрди рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд░реНрдордЪрд╛рд░реА, рдпрд╣рд╛рдБ 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-рд╡рд┐рд╢рд┐рд╖реНрдЯ) рджреЛрдиреЛрдВ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреА рдЧрдИ рд╡реЗ рд╕рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЪреБрдиреЗрдВ рдЬреЛ рджреВрд╕рд░реА рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдЪреБрдиреА рдЧрдИрдВред рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдЯреЗрдмрд▓ рджреЗрдЦреЗрдВ:
рдорд╛рди рд▓реЗрдВ, рдЖрдкрдХреЛ рдРрд╕рд╛ рдЙрддреНрдкрд╛рдж рдвреВрдБрдврдирд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ 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 рдХреЛрд░реНрд╕ рдХрд░реЗрдВред
рд╕рдВрджрд░реНрдн
- https://docs.oracle.com/cd/B19306_01/server.102/b14200/operators005.htm
- https://en.wikipedia.org/wiki/Set_operations_(SQL)#EXCEPT_operator
- https://www.w3schools.com/sql/sql_datatypes.asp
- https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT012
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЖрдк ANSI (American National Standards Institute) SQL рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ, рдЬреЛ Oracle, MySQL, Microsoft SQL Server рдЖрджрд┐ рдЬреИрд╕реЗ рд╣рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдЪрд▓рд┐рдП SQL рдХрд╛ рдкрд░рд┐рдЪрдп (Structured Query Language) рдФрд░ рдПрдХ рдбреЗрдЯрд╛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рдкрдбрд╝рддреА рд╣реИ, рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
SQL рдФрд░ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕
рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдПрдХ рдбреЗрдЯрд╛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХреЛ SQL рдХреНрдпреЛрдВ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ SQL рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХреЗ рдХрд░рд┐рдпрд░ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░реЗрдЧрд╛:
рдпрд╣рд╛рдВ рдореИрдВ SQL рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдХреБрдЫ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдФрд░ рд╢рдмреНрджрд╛рд╡рд▓рд┐рдпреЛрдВ рд╕реЗ рдЧреБрдЬрд░реВрдВрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рдХреЛрдб рдХрд░рдирд╛ рд╕реАрдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ! рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрдпрд╛ рд╣реИ рдФрд░ SQL рдХреНрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдХреЛрдб рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
SQL рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдкрд░рд┐рдЪрдп
рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реВрдЪрдирд╛ рдХрд╛ рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо (DBMS) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред DBMS рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рдЕрдиреБрд░реЛрдз рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд, рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╕рдордп рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд░рд╣реЗ рд╣реИрдВ: рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд (Hierarchical), рдиреЗрдЯрд╡рд░реНрдХ, рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдЕрдм NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ред рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд░рд┐рд▓реЗрд╢рдиреНрд╕ рдпрд╛ рджреНрд╡рд┐-рдЖрдпрд╛рдореА рддрд╛рд▓рд┐рдХрд╛рдУрдВ (two-dimensional tables) рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИред
RDBMS рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╢рдмреНрджрд╛рд╡рд▓реА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
рдЖрдк рдкреНрд░рд╛рдЗрдорд░реА рдФрд░ рдлреЙрд░реЗрди рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрд╛рдзрд┐рдХ рдЯреЗрдмрд▓реНрд╕ рдХреЛ рдЖрдкрд╕ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдкреНрд░рд╛рдЗрдорд░реА рдХреА (PK) рджреНрд╡рд╛рд░рд╛ рдЕрджреНрд╡рд┐рддреАрдп рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдлреЙрд░реЗрди рдХреА (FK) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреЗрдмрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ Structured Query Language рдпрд╛ SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд░ рдбреЗрдЯрд╛рдмреЗрд╕ ANSI SQL, рдпрд╛рдиреА рдорд╛рдирдХ SQL, рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛, рд╕рд╛рде рд╣реА рдХреБрдЫ рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рднреА рд╣реЛрдЧрд╛ред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЖрдк ANSI SQL рд╕реАрдЦреЗрдВрдЧреЗ рддрд╛рдХрд┐ рдЖрдк рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВред ANSI SQL рдХреЛ рдкрд╛рдБрдЪ рднрд╛рдЧреЛрдВ рдореЗрдВ рдмрд╛рдВрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд╕рднреА рдХреЗ рдирд╛рдо рдмрддрд╛рдКрдВрдЧрд╛, рдкрд░ рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рджреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рднрд╛рдЧ рд╣реИрдВтАФрдбреЗрдЯрд╛ рд░рд┐рдЯреНрд░реАрд╡рд▓ рдФрд░ DML:
RDBMS рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХреНрд░реЗрддрд╛ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд╕рдмрд╕реЗ рдЖрдо рдФрд░ рдкреНрд░рдЪрд▓рд┐рдд рд╣реИрдВ:
рддреЛ рдЖрдк SQL рдХреНрд╡реЗрд░реАрдЬрд╝ рдХрд╣рд╛рдБ рдЪрд▓рд╛рддреЗ рд╣реИрдВ? рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдХреА рд╕рд╛рдЦ рд╣реИ, рддреЛ рдЖрдк рдХреНрд╡реЗрд░реАрдЬрд╝ рдпрд╛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ GUI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдмрд╕ рдЗрддрдирд╛ рд╣реА! рдЕрдм SQL рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ...
SQL рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдХрд╛ рдПрдХ рдирд╛рдо, рдПрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдФрд░ рдХрднреА-рдХрднреА рдЙрд╕рд╕реЗ рдЬреБрдбрд╝рд╛ рдПрдХ рдЖрдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреМрди-рд╕рд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИред
рдПрдХ рдбреЗрдЯрд╛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╕рдЯреАрдХ рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд╛рдо, рд╕рдВрдЧреНрд░рд╣реАрдд рдЯреЗрдХреНрд╕реНрдЯ, рд╕рдВрдЦреНрдпрд╛рдПрдБ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреЛрдИ рдЗрдореЗрдЬ рдЖрджрд┐ред
рдпрд╣рд╛рдВ Oracle Server, SQL Server рдФрд░ MySQL Server рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрд╛рдП рдЬрд╛рдПрдВрдЧреЗ:
рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП:
SQL рдФрд░ рдбреЗрдЯрд╛ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕рднреА SQL рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдирдореВрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдорд╛рдиреЗрдВ:
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджреЛ рдЯреЗрдмрд▓ рд╣реИрдВтАФemp рдЬреЛ рдХрд░реНрдордЪрд╛рд░реА рдбреЗрдЯрд╛ рд░рдЦрддрд╛ рд╣реИ рдФрд░ dept рдЬреЛ рд╡рд┐рднрд╛рдЧреЛрдВ рдХреЗ рдЕрднрд┐рд▓реЗрдЦ рд░рдЦрддрд╛ рд╣реИред
emp рдЯреЗрдмрд▓ рдореЗрдВ рдХрд░реНрдордЪрд╛рд░реА рд╕рдВрдЦреНрдпрд╛ (empno), рдХрд░реНрдордЪрд╛рд░реА рдирд╛рдо (ename), рд╡реЗрддрди (sal), рдХрдореАрд╢рди (comm), рдиреМрдХрд░реА рдХрд╛ рдирд╛рдо (job), рдкреНрд░рдмрдВрдзрдХ рдЖрдИрдбреА (mgr), рдирд┐рдпреБрдХреНрддрд┐ рддрд┐рдерд┐ (hiredate) рдФрд░ рд╡рд┐рднрд╛рдЧ рд╕рдВрдЦреНрдпрд╛ (deptno) рд╣реИрдВред рдЪреВрдВрдХрд┐ рдкреНрд░рдмрдВрдзрдХ рднреА рдХрд░реНрдордЪрд╛рд░реА рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреА рднреА рдПрдХ рдХрд░реНрдордЪрд╛рд░реА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП mgr рдЙрди empno рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕рдХреА рдиреМрдХрд░реА "MANAGER" рд╣реИред
dept рдЯреЗрдмрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЧ рд╕рдВрдЦреНрдпрд╛ (deptno), рд╡рд┐рднрд╛рдЧ рдХрд╛ рдирд╛рдо (dname) рдФрд░ рд╡рд┐рднрд╛рдЧ рдХрд╛ рд╕реНрдерд╛рди (loc) рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд┐рдирд╛рдВрдХ рдХрд╛ рдлрд╝реЙрд░реНрдореИрдЯ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдВ 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 рдХреНрд╡реЗрд░реА, рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдкрдХреЛ рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧреА:
рд╕рднреА рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдФрд░ рд╕рднреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП * рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
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рдЖрдк рдбреЗрдЯ рдФрд░ рдирдВрдмрд░ рдбреЗрдЯрд╛ рдкрд░ +, -, /, * рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдЬреЗрдирд░реЗрдЯ рд╣реЛред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрд╕реЗ рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╡реЗрддрди рдХрд╛ 20% рдирд┐рдХрд╛рд▓рдиреЗ рдХреЛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рдХреНрд╡реЗрд░реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧреА:
SELECT ename, sal*(20/100) FROM employee; Output: ENAME SAL*(20/100) ---------- ------------ SMITH 160 ALLEN 320 WARD 250 JONES 595 BLAKE 570рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ 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: 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 570DISTINCT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛрд╣рд░рд╛рдИ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣рдЯрд╛рдирд╛
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рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рд░реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрдЯрд░реНрд╕, рдХрдВрдбреАрд╢рдирд▓ рд╕рд┐рдВрдмрд▓ рдФрд░ рд╡рд┐рд╢реЗрд╖ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
=, <>, !=, >=, <=, >, < рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХреА рдХреНрд╡реЗрд░реА рдореЗрдВ = рдХрд╛ рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛ рд╣реИред
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 ---------- BLAKESELECT ename FROM employee WHERE job='MANAGER' OR deptno=30; ENAME ---------- ALLEN WARD JONES BLAKENOT рд╕рд┐рдВрдЯреИрдХреНрд╕: 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 рддреАрдиреЛрдВ рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрдЯрд┐рд▓ рд╢рд░реНрддреЗрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреНрд░рдо рд╣реИ:
рд╡реЗ рд╕рднреА рдХрд░реНрдордЪрд╛рд░реА рдЦреЛрдЬреЗрдВ рдЬрд┐рдирдХреА рдиреМрдХрд░реА 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 30LIKE:
LIKE рджреЛ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рдкреНрд░рддрд┐рд╢рдд % рдФрд░ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ _ рдЬреЛ рдкреИрдЯрд░реНрди рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред
рдкреИрдЯрд░реНрди рдХреЗрд╕-рд╕реЗрдВрд╕рд┐рдЯрд┐рд╡ рд╣реЛрддреЗ рд╣реИрдВред
рд╡реЗ рд╕рднреА рдХрд░реНрдордЪрд╛рд░реА рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬрд┐рдирдХреЗ рдирд╛рдо '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 30IN(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-81IN() рдореЗрдВ 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() рдЬрд┐рдиреНрд╣реЗрдВ рдХрдВрдбрд┐рд╢рдВрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг:
рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕рдмрдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЗрдЦреЗрдВред рдЖрдк рдЖрдЧреЗ рд╕рдмрдХреНрд╡реЗрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕реАрдЦреЗрдВрдЧреЗред
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 500SELECT 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 blakeUPPER(): рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрдкрд░рдХреЗрд╕ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред
SELECT upper(ename) as ename FROM employee; ENAME ---------- SMITH ALLEN WARD JONES BLAKESUBSTR()[Oracle, MySQL]: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрд╕рд╛рд░ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ SUBSTR(string, start-position, length)
SUBSTRING()[SQL Server]: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрд╕рд╛рд░ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ SUBSTRING(string, start-position, length).
SQL Server рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо SUBSTRING рд╕реЗ рдмрджрд▓ рджреЗрдВред
LENGTH()[Oracle, MySQL]: рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рджреА рдЧрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
LEN()[SQL Server]: рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рджреА рдЧрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
SQL Server рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо LEN рдХрд░ рджреЗрдВред
LEN_ENAME ---------- 5 5 4 5 5рд▓реЗрдлрд╝реНрдЯ/рд░рд╛рдЗрдЯ рдкреИрдбрд┐рдВрдЧ, рд░рд┐рдкреНрд▓реЗрд╕ рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рддреАрдиреЛрдВ рд╡рд┐рдХреНрд░реЗрддрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдХреИрд░реЗрдХреНрдЯрд░ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рд╕реВрдЪреА:
рдирдВрдмрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕
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 24MySQL:
SQL Server:
рддреАрдиреЛрдВ рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдореЗрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рд╕реВрдЪреА:
рдХрдиреНрд╡рд░реНрдЬрд╝рди рдлрд╝рдВрдХреНрд╢рдВрд╕
рдХрдиреНрд╡рд░реНрдЬрд╝рди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдиреНрд╡рд░реНрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рд░реНрд╡рд░ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдореИрдВ 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тАФрд╕рдмрд╕реЗ рдЖрдо рдбреЗрдЯрд╛рдмреЗрд╕тАФрдХреЗ рдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдВрдХ рдорд┐рд▓реЗрдВрдЧреЗред рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдпреЗ рдЙрджрд╛рд╣рд░рдг рдЖрдЬрд╝рдорд╛рдПрдБ!
рдЕрдкрдиреЗ SQL рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╕рдореВрд╣ рдмрдирд╛рдирд╛
рдЧреНрд░реБрдкрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдпрд╛ рдорд▓реНрдЯрд┐рдкрд▓-рд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕рдореВрд╣реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐ рд╕рдореВрд╣ рдПрдХ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рд╕рдореВрд╣ рдлрд╝рдВрдХреНрд╢рдВрд╕ рддрдм рдЪрд╛рд╣рд┐рдП рдЬрдм рдЖрдк рдРрд╕реА рдмрд╛рддреЗрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдкреНрд░рддрд┐ рддрд┐рдорд╛рд╣реА рдХреБрд▓ рдмрд┐рдХреНрд░реА, рдХрд┐рд╕реА рдЕрд╡рдзрд┐ рдореЗрдВ рдХрд┐рд╕реА рдЙрддреНрдкрд╛рдж рдХрд╛ рдФрд╕рдд рдореВрд▓реНрдп, рдЗрд╕ рдорд╣реАрдиреЗ рдЖрдкрдХреА рдХрдВрдкрдиреА рдХреЛ рдорд┐рд▓реА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдирд┐рд╡реЗрд╢ рд░рд╛рд╢рд┐ рдЗрддреНрдпрд╛рджрд┐ред
рдЧреНрд░реБрдк рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдореЗрдХрд┐рдд рдбреЗрдЯрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ
GROUP BY рдХреНрд▓реЙрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИтАФрдЗрд╕реЗ рдЕрдХреНрд╕рд░ COUNT, MAX, MIN, AVG рдФрд░ SUM рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред GROUP BY рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ:
GROUP 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) рднреА рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:
рдЖрдк рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреЙрд▓рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднреА рд╕рдореВрд╣ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рднрд╛рдЧ рдХреЗ рднреАрддрд░ рдкреНрд░рддреНрдпреЗрдХ рдиреМрдХрд░реА рдХреЗ рд╡реЗрддрди рдХрд╛ рдХреБрд▓ рдпреЛрдЧ рдирд┐рдХрд╛рд▓реЗрдВ:
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 рдХреНрд▓реЙрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдореВрд╣ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХреЗрд╡рд▓ рд╕рдореВрд╣ рд╢рд░реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред
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рдПрдХрд╛рдзрд┐рдХ рдЯреЗрдмрд▓реНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛
рдЗрд╕ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдирд┐рдореНрди рдЬреЙрдЗрдиреНрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреА:
рдЖрдкрдХреЛ рдРрд╕реА рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреА рд╣реЛрдВрдЧреА рдЬреЛ рдХрдИ рдЯреЗрдмрд▓реНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдВред рдиреАрдЪреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
рдКрдкрд░ рдЬреИрд╕реА рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ employee рдФрд░ department рдЯреЗрдмрд▓реНрд╕ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рджреЛрдиреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП SQL рдореЗрдВ Joins рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред
Cartesian Product/Cross Join:
Cartesian product рддрдм рдмрдирддрд╛ рд╣реИ рдЬрдм рд░рд┐рд▓реЗрд╢рди R рдХреА рд╣рд░ рдЯрдкрд▓ рд░рд┐рд▓реЗрд╢рди S рдХреА рд╣рд░ рдЯрдкрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдмрдирд╛рддреА рд╣реИред
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 SALES15 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЪреБрдиреА рдЧрдИрдВред
рдЪреВрдБрдХрд┐ 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 рдЯреЗрдмрд▓ рдореЗрдВ рдлреЙрд░реЗрди рдХреАред рдЖрдк рдКрдкрд░ рджрд┐рдП рддрд╛рд░реНрдХрд┐рдХ рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рд░реНрддреЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЯреЗрдмрд▓ aliases: рдЯреЗрдмрд▓ aliases рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ FROM employee e, department d рдореЗрдВ e рдФрд░ d aliases рд╣реИрдВ, рддрд╛рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд╣рдЪрд╛рдирдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдХрд┐ рдХреЙрд▓рдо рдХрд┐рд╕ рдЯреЗрдмрд▓ рд╕реЗ рд╣реИтАФрдЦрд╛рд╕рдХрд░ рдЬрдм рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЯреЗрдмрд▓реНрд╕ рдореЗрдВ рд╕рдорд╛рди рдХреЙрд▓рдо рд╣реЛрдВтАФрдЕрдиреНрдпрдерд╛ ambiguous column рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред рдФрд░ рдпрд╣ рд▓рдВрдмреЗ рдЯреЗрдмрд▓ рдирд╛рдо рдмрд╛рд░-рдмрд╛рд░ рд▓рд┐рдЦрдиреЗ рд╕реЗ рднреА рдмрдЪрд╛рддрд╛ рд╣реИред
рдЖрдк nonequi-joins рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдорд╛рдирддрд╛ (equality) рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд╢рд░реНрддреЛрдВ рдкрд░ рдЯреЗрдмрд▓реНрд╕ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред salgrade рдирд╛рдордХ рдПрдХ рдФрд░ рдЯреЗрдмрд▓ рдорд╛рдиреЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реЗрддрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рдЧреНрд░реЗрдб рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ:
рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдХрд░реНрдордЪрд╛рд░реА рдХрд╛ рдЧреНрд░реЗрдб рд╡реЗрддрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЧреНрд░реЗрдб 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 рдЯреЗрдмрд▓ рдореЗрдВ рд╣реИтАФрддреЛ рдЖрдкрдХреЛ рддреАрди рдЯреЗрдмрд▓реНрд╕ рдХреЛ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рддреАрди рдЯреЗрдмрд▓реНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рджреЛ рдЬреЙрдЗрди рдХрдВрдбреАрд╢рдВрд╕ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ nonequi-join рд╣реИред
Natural Join:
Natural joins рдЯреЗрдмрд▓реНрд╕ рдХреЛ рд╕реНрд╡рддрдГ рдЙрди рдХреЙрд▓рдореНрд╕ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рдХреЗ рдЬреЛрдбрд╝рдиреЗ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдирд╛рдо рд╕рдорд╛рди рд╣реЛрдВред рдпрджрд┐ рдирд╛рдо рд╕рдорд╛рди рд╣реИрдВ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЕрд▓рдЧ рд╣реИ, рддреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред
рд╕рд┐рдВрдЯреИрдХреНрд╕: SELECT FROM table1 NATURAL JOIN table2; SELECT FROM employee NATURAL JOIN department; рдЪреВрдБрдХрд┐ natural join рд╕реНрд╡рдпрдВ рдореЗрд▓ рдЦрд╛рддреЗ рдХреЙрд▓рдо рдвреВрдБрдврддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реЗ рдХреЙрд▓рдо рдвреВрдБрдв рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП USING рдХреНрд▓реЙрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдмрддрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдХрд┐рди рдХреЙрд▓рдореНрд╕ рдкрд░ equi join рдХрд░рдирд╛ рд╣реИред
USING рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рджрд┐рдП рдЧрдП рдХреЙрд▓рдореНрд╕ рдХреЗ рдЖрдЧреЗ рдХрд╣реАрдВ рднреА SQL рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдЯреЗрдмрд▓ рдирд╛рдо рдпрд╛ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдЧрд▓рдд рд╣реИ:
d.deptno рдЧрд▓рдд рд╣реИред рдХреЗрд╡рд▓ deptno рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред Outer Joins:
Outer joins рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ:
рдЗрдиреНрд╣реЗрдВ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рджреЗрдЦреЗрдВ:
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.dnameFROM 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 ACCOUNTINGdepartment рдЯреЗрдмрд▓ рдореЗрдВ 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 рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ:
рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ; рдЖрдкрд╕реЗ рдРрд╕реЗ рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡реЗрддрди рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд░реНрдордЪрд╛рд░реА, рдпрд╣рд╛рдБ James, рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛред рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрд▓рдЭрд╛рдПрдБрдЧреЗ? рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рддреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдпрд╣ рд╕рдмрдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрдХреНрд╡реЗрд░реА (рднреАрддрд░реА рдХреНрд╡реЗрд░реА) рдореБрдЦреНрдп (рдмрд╛рд╣рд░реА) рдХреНрд╡реЗрд░реА рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧреАред
рд╕рдмрдХреНрд╡реЗрд░реА рдХреЗ рдкреНрд░рдХрд╛рд░:
рд╕рд┐рдВрдЧрд▓-рд░реЛ рд╕рдмрдХреНрд╡реЗрд░реА: рдРрд╕реА рдХреНрд╡реЗрд░реА рдЬреЛ рднреАрддрд░реА SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рд▓реМрдЯрд╛рддреА рд╣реИред
рдорд▓реНрдЯрд┐рдкрд▓-рд░реЛ рд╕рдмрдХреНрд╡реЗрд░реА: рдРрд╕реА рдХреНрд╡реЗрд░реА рдЬреЛ рднреАрддрд░реА SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓реМрдЯрд╛рддреА рд╣реИред
рд╕рд┐рдВрдЧрд▓-рд░реЛ рд╕рдмрдХреНрд╡реЗрд░реА:
рдЖрдкрд╕реЗ рдЙрди рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдЦреЛрдЬрдиреЗ рдХреЛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдиреМрдХрд░реА рд╢реАрд░реНрд╖рдХ 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 2975SET рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ
SQL рдореЗрдВ Set рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХрд╛рдзрд┐рдХ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЧрдгрд┐рдд рдХреА рд╕реЗрдЯ рдереНрдпреЛрд░реА рдФрд░ рдЙрд╕рдХреЗ рдСрдкрд░реЗрд╢рдВрд╕ рдЬреИрд╕реЗ UNION, MINUS, INTERSECT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ SET рдСрдкрд░реЗрдЯрд░реНрд╕ рд╕реЗ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ рдХреИрд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдирд┐рдореНрди SET рдСрдкрд░реЗрдЯрд░реНрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреАред
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 SALESUNION 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 CLERKINTERSECT
рд╕реЗрдЯ рдереНрдпреЛрд░реА рдХреЗ рд╕рдорд╛рди, рдЗрдВрдЯрд░рд╕реЗрдХреНрд╢рди рджреЛрдиреЛрдВ рд╕реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рди рджреЗрддрд╛ рд╣реИред рджреЛ рд░рд┐рд▓реЗрд╢рдиреНрд╕ 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 MANAGEREXCEPT рдФрд░ MINUS:
EXCEPT (SQL Server рдореЗрдВ) рдФрд░ MINUS (Oracle-рд╡рд┐рд╢рд┐рд╖реНрдЯ) рджреЛрдиреЛрдВ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреА рдЧрдИ рд╡реЗ рд╕рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЪреБрдиреЗрдВ рдЬреЛ рджреВрд╕рд░реА рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдЪреБрдиреА рдЧрдИрдВред рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдЯреЗрдмрд▓ рджреЗрдЦреЗрдВ:
рдорд╛рди рд▓реЗрдВ, рдЖрдкрдХреЛ рдРрд╕рд╛ рдЙрддреНрдкрд╛рдж рдвреВрдБрдврдирд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ quantity 1 рд╕реЗ 100 рдХреЗ рдмреАрдЪ рд╣реИ рд▓реЗрдХрд┐рди 50-75 рдХреЗ рдмреАрдЪ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк SQL Server рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣рд╛рдВ EXCEPT рдФрд░ Oracle рд╕рд░реНрд╡рд░ рдкрд░ MINUS рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
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рдмрдзрд╛рдИ рд╣реЛ!
рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдпрд╣реАрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЖрдкрдиреЗ SQL рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╕реАрдЦрд╛ рдЬреЛ рдЖрдкрдХреА рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рдпрд╛рддреНрд░рд╛ рдореЗрдВ SQL рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред рдЖрдкрдиреЗ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ SQL рдХреА рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЗрдВ, рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░, рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝реЙрд░реНрдореИрдЯрд┐рдВрдЧ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдПрдЧреНрд░реАрдЧреЗрд╢рди рдХрд░ рд╕рд╛рд░рд╛рдВрд╢ рдмрдирд╛рдирд╛, рдФрд░ рдпрд╣ рднреА рдХрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреЗрдмрд▓реНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдПрдХрддреНрд░рд┐рдд рдХрд░реЗрдВтАФрд╕реАрдЦрд╛ рд╣реИ! рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рд╢рд┐рдХреНрд╖рд╛рд░реНрдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рди рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рдмрд▓реНрдХрд┐ NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдмрд┐рдЧ рдбреЗрдЯрд╛ рдЕрдзреНрдпрдпрди рдореЗрдВ SQL рдХреМрд╢рд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рднреА рд╕рд╣рдЬ рдмрдирд╛рдПрдЧрд╛ред
рдпрджрд┐ рдЖрдк SQL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ DataCamp рдХрд╛ рдирд┐рдГрд╢реБрд▓реНрдХ Intro to SQL for Data Science рдХреЛрд░реНрд╕ рдХрд░реЗрдВред
рд╕рдВрджрд░реНрдн