Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ sql. ΠŸΡ€ΠΎΡ‡ΠΈΠ΅ ограничСния – UNIQUE, DEFAULT, CHECK. Π—Π°Ρ‡Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ язык

На сСгодняшний дСнь курсы SQL "для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²" становятся всС Π±ΠΎΠ»Π΅Π΅ популярными. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, вСдь Π² соврСмСнном ΠΌΠΈΡ€Π΅ всС Ρ‡Π°Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ "Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹Π΅" Π²Π΅Π±-сСрвисы. Они ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ достаточно Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ ΠΈ ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° ВсС Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΡΠ²ΡΡ‚ΠΈΡ‚ΡŒ сайтов, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° курсы SQL "для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²".

Π—Π°Ρ‡Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ язык?

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго SQL ΡƒΡ‡Π°Ρ‚ с Ρ†Π΅Π»ΡŒΡŽ дальнСйшСго создания самых Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· самых популярных Π½Π° сСгодняшний дСнь Π΄Π²ΠΈΠΆΠΊΠΎΠ² Π±Π»ΠΎΠ³ΠΎΠ² - WordPress. ПослС прохоТдСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… простых ΡƒΡ€ΠΎΠΊΠΎΠ² Π²Ρ‹ ΡƒΠΆΠ΅ смоТСтС ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ запросы любой слоТности, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ простоту этого языка.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ SQL?

Или язык структурированных запросов, Π±Ρ‹Π» создан с ΠΎΠ΄Π½ΠΎΠΉ-СдинствСнной Ρ†Π΅Π»ΡŒΡŽ: ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ доступ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π·Π° достаточно ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ SQL-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎΠ³Π΄Π° Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ понятно, Ρ‡Ρ‚ΠΎ этот сСрвСр относят ΠΊ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ "Π½Π΅ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΌ" языкам. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² Π΅Π³ΠΎ возмоТности Π²Ρ…ΠΎΠ΄ΠΈΡ‚ всСго лишь описаниС ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π½Π° сайтС. Но ΠΏΡ€ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ собираСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ запрос Π² этом языкС являСтся ΠΊΠ°ΠΊ Π±Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ "надстройкой". ИмСнно Π² Ρ‚Π°ΠΊΠΎΠΌ порядкС, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠ½ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, запросы ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ.

КакиС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого языка?

НСсмотря Π½Π° свою простоту, Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… SQL позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ достаточно ΠΌΠ½ΠΎΠ³ΠΎ самых Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… запросов. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π²Ρ‹ смоТСтС Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π²Ρ‹ΡƒΡ‡ΠΈΡ‚Π΅ этот Π²Π°ΠΆΠ½Ρ‹ΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ язык?

  • ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ самыС Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹;
  • ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ, Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅;
  • ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ структуры Ρ‚Π°Π±Π»ΠΈΡ† Π½Π° своС усмотрСниС;
  • ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π΅Π΄ΠΈΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ;
  • Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅;
  • ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

КакиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ самыми популярными Π² Π΄Π°Π½Π½ΠΎΠΌ языкС?

Если Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ курсы SQL "для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²", Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² создании запросов с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ. Π‘Π°ΠΌΡ‹ΠΌΠΈ распространСнными Π½Π° сСгодняшний дСнь ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅:

  1. DDL - являСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, которая опрСдСляСт Π΄Π°Π½Π½Ρ‹Π΅. Она ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ самыС Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π±Π°Π·Π΅.
  2. DCL - являСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, которая управляСт Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π•Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для прСдоставлСния доступа Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π±Π°Π·Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ прСдставлСния.
  3. TCL - ΠΊΠΎΠΌΠ°Π½Π΄Π°, которая управляСт Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° транзакциями. Π•Π΅ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ являСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ…ΠΎΠ΄Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.
  4. DML - ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π’ Π΅Π΅ Π·Π°Π΄Π°Ρ‡Ρƒ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° Π΅Π΅.

Π’ΠΈΠΏΡ‹ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² этом сСрвСрС

Под привилСгиями ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² соотвСтствии со своим статусом. Π‘Π°ΠΌΠΎΠΉ минимальной, бСзусловно, являСтся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ Π² систСму. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. Π‘Ρ‚Π°Ρ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒΡΡ, Π° Π½ΠΎΠ²Ρ‹Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ. На сСгодняшний дСнь, всС Ρ‚Π΅, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ курсы SQL Server "для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²", Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ сущСствуСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… дСйствий:

  1. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ - ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ этом для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ. Они Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Π½ΠΎ ΠΈ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ. Если ΠΊΡ‚ΠΎ-Π»ΠΈΠ±ΠΎ, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ своими возмоТностями, создал Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Ρ‚ΠΎ ΠΎΠ½ считаСтся Π΅Π΅ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π΅Π³ΠΎ ΠΏΡ€Π°Π²Π΅ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, связанныС с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π² Π½Π΅ΠΉ.
  2. БистСмный Ρ‚ΠΈΠΏ - это Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ авторскиС ΠΏΡ€Π°Π²Π° Π½Π° Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π±Π°Π·Π΅.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ создания SQL

Π­Ρ‚ΠΎΡ‚ язык Π±Ρ‹Π» создан ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΈΠ΅ΠΉ IBM Π² 1970 Π³ΠΎΠ΄Ρƒ. Π’ Ρ‚ΠΎ врСмя Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ Π±Ρ‹Π»ΠΎ нСсколько ΠΈΠ½Ρ‹ΠΌ (SEQUEL), Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· нСсколько Π»Π΅Ρ‚ использования Π΅Π³ΠΎ помСняли, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ сократив. НСсмотря Π½Π° это, Π΄Π°ΠΆΠ΅ сСгодня ΠΌΠ½ΠΎΠ³ΠΈΠ΅ извСстныС ΠΌΠΈΡ€ΠΎΠ²Ρ‹Π΅ спСциалисты Π² области программирования всС Π΅Ρ‰Π΅ произносят Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠΎ старинкС. Π‘ΠΎΠ·Π΄Π°Π½Π° Π±Ρ‹Π»Π° SQL с ΠΎΠ΄Π½ΠΎΠΉ-СдинствСнной Ρ†Π΅Π»ΡŒΡŽ - изобрСсти язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π±Ρ‹ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ простым, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π±Π΅Π· особых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°ΠΆΠ΅ простыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ΅Π½ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π½Π° Ρ‚ΠΎ врСмя SQL Π±Ρ‹Π» Π½Π΅ СдинствСнным ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ языком. Π’ ΠšΠ°Π»ΠΈΡ„ΠΎΡ€Π½ΠΈΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° Π³Ρ€ΡƒΠΏΠΏΠ° спСциалистов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Ingres, Π½ΠΎ ΠΎΠ½ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ стал ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнным. Π”ΠΎ 1980 Π³ΠΎΠ΄Π° сущСствовало нСсколько Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΉ SQL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ лишь Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°Π»ΠΈΡΡŒ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π°ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°, Π² 1983-ΠΌ Π±Ρ‹Π» создан стандартный Π΅Π³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ популярСн ΠΈ сСгодня. ΠšΡƒΡ€ΡΡ‹ SQL "для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²" ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС ΠΎ сСрвисС ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π·Π° нСсколько нСдСль.

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΈ доступно рассмотрСны тСорСтичСскиС основы Π‘Π£Π‘Π” SQL Server 2012. Показана установка, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° MS SQL Server 2012. Описан язык манипулирования Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Transact-SQL. РассмотрСны созданиС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΠΈΡ… содСрТимого, запросы, индСксы, прСдставлСния, Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹, Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.
Показана рСализация бСзопасности с использованиСм Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π£Π΄Π΅Π»Π΅Π½ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ администрирования Π‘Π£Π‘Π”. РассмотрСно созданиС Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ восстановлСния систСмы. ΠžΠΏΠΈΡΠ°Π½Ρ‹ слуТбы Microsoft Analysis Services, Microsoft Reporting Services ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты для бизнСс-Π°Π½Π°Π»ΠΈΠ·Π°. РассмотрСны тСхнология Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ XML, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пространствСнными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, полнотСкстовый поиск ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов.

Π’ соврСмСнном ΠΌΠΈΡ€Π΅ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΡƒΡŽ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ информация, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ. Π­Ρ‚Π° ΠΊΠ½ΠΈΠ³Π° посвящСна языку запросов SQL ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» излагаСтся, начиная с описания Π±Π°Π·ΠΎΠ²Ρ‹Ρ… запросов ΠΈ заканчивая слоТными манипуляциями с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ объСдинСний, подзапросов ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Если Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… – эта ΠΊΠ½ΠΈΠ³Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ практичСским пособиСм ΠΈ прСдоставит Π²Π°ΠΌ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ инструмСнты. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ издания являСтся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ способ ΠΏΠΎΠ΄Π°Ρ‡ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΡΠ΅Ρ€ΠΈΡŽ Β«Head FirstΒ» ΠΈΠ·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° O\’Reilly Π² ряду мноТСства скучных ΠΊΠ½ΠΈΠ³, посвящСнных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

Π­Ρ‚Π° ΠΊΠ½ΠΈΠ³Π° расскаТСт Π²Π°ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΈ инструкциями SQL, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ рСляционныС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ запросы, ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π²Ρ‹ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ систСму бСзопасности. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструкции DDL ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ API, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ XML ΠΈ сцСнарии Java, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ SQL, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π΅Π±-сСрвСры, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ доступом ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ распрСдСлСнныС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.
Π’ этой ΠΊΠ½ΠΈΠ³Π΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΈΠ΅ свСдСния, ΠΊΠ°ΠΊ описания Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти, ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈ встраиваСмыми Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ Π½Π°Π»Π°Π΄ΠΎΠ½Π½Ρ‹Ρ… устройств, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

SQL для простых смСртных β€” это ΠΏΠΎΠ»Π½ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² структурированный язык запросов, написанноС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ….

Если Π²Ρ‹ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΎΠΏΡ‹Ρ‚Π° управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, благодаря этой ΠΊΠ½ΠΈΠ³Π΅ Π²Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с SQL Π»Π΅Π³ΠΊΠΎ ΠΈ свободно, примСняя простыС запросы ΠΈ слоТныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Для овладСния SQL:

β€” УсвойтС смысл понятий, связанных с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ ΠΈ простого ввСдСния Π² рСляционныС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
β€” Π‘Π»Π΅Π΄ΡƒΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹ΠΌ инструкциям ΠΏΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ основных ΠΊΠΎΠΌΠ°Π½Π΄ SQL для поиска Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π΅ΠΉ. ΠΠ°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΌΠ΅Π»ΠΎ ΠΈΠΌΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ.
β€” Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ с составными Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, примСняя Ρ€Π°Π·Π²ΠΈΡ‚ΡƒΡŽ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ запроса ΠΊ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, конструируя слоТныС запросы ΠΈ подзапросы.
β€” Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² сфСрС Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎΠ³ΠΎ бизнСса. Π˜Π·ΡƒΡ‡Π°ΠΉΡ‚Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ эффСктивного проСктирования Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ обСспСчСния цСлостности ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
β€” Π£Ρ‡ΠΈΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ SQL с языками программирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π³Π»Π°Π²Ρƒ для программистов.

SQL is older than most of us, so I can’t claim to be conveying some extraordinary stuff through this book. What makes this title unique is its slender size. If you are looking for a real compact practical guide on SQL, then this book is for you. For beginners, I have tried to confine an ocean to a bucket in order to equip them with SQL knowledge in the shortest time possible. SQL language is too voluminous and exposure of every aspect of this huge language is a very tedious task. Keeping aside the least utilized features, this book is rolled out to focus on the more operational areas of the language. It is meant to help you learn SQL quickly by yourself. It follows a tutorial approach wherein hundreds of hands-on exercises are provided, augmented with illustrations, to teach you SQL in a short period of time. Without any exaggeration, the book will expose SQL in record time. The book explicitly covers a free platform of the world’s number 1 DBMS to expose SQL: Oracle Database Express Edition. I have chosen Oracle XE because it is free to develop, deploy, and distribute; fast to download; and simple to administer.

Beginning Oracle PL/SQL gets you started in using the built-in language that every Oracle developer and database administrator must know. Oracle Database is chock-full of built-in application features that are free for the using, and PL/SQL is your ticket to learning about and using those features from your own code. With it, you can centralize business logic in the database, you can offload application logic, and you can automate database- and application-administration tasks.

Author Don Bales provides in Beginning Oracle PL/SQL a fast-paced and example-filled tutorial. Learn from Don\’s extensive experience to discover the most commonly used aspects of PL/SQL, without wasting time on obscure and obsolete features.

Книга Β«SQL. Библия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΒ» ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Π»Π°Π²Π΅ проводится сравнСниС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ стандарта языка запросов SQL Π² Ρ‚Ρ€Π΅Ρ… Π²Π΅Π΄ΡƒΡ‰ΠΈΡ… Π‘Π£Π‘Π”. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получился ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ справочник для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π΄ΠΎ профСссионалов. Данная ΠΊΠ½ΠΈΠ³Π° ΠΏΠΎ SQL ΡƒΠ΄ΠΎΠ±Π½ΠΎ сочСтаСт Ρ‚Π΅ΠΎΡ€ΠΈΡŽ с ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ, содСрТит описаниС Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с многочислСнными нюансами стандарта языка запросов SQL ΠΈ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. Π•Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС справочника - своСго Ρ€ΠΎΠ΄Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ пособия.
β€” Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ основы языка запросов SQL ΠΈ рСляционных Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…
β€” ΠžΡΠ²ΠΎΠΉΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, прСдставлСниями, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…
β€” ΠΠ°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ срСдС
β€” ΠŸΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с функциями, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ стандартом SQL ΠΈ трСмя Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌΠΈ производитСлями Π‘Π£Π‘Π”
β€” Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ срСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
β€” Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹: интСграция SQL Π² XML, бизнСс-Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ° OLAP ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅

Если Ρƒ вас Π΅ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с HTML, Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΈΠ³ΠΈ Π ΠΎΠ±ΠΈΠ½Π° Никсона, ΠΎΠΏΡ‹Ρ‚Π½Π΅ΠΉΡˆΠ΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ Π°Π²Ρ‚ΠΎΡ€Π° многочислСнных бСстсСллСров ΠΏΠΎ Π²Π΅Π±-мастСрингу, Π²Ρ‹ Π±Π΅Π· особого Ρ‚Ρ€ΡƒΠ΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ динамичСскиС сайты, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ высоким ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ.
ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ для сСбя сочСтаниС PHP ΠΈ MySQL, ΡƒΠ·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ созданиС соврСмСнных Π²Π΅Π±-сайтов, Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊ этим тСхнологиям возмоТности javascript, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ высокотСхнологичныС прилоТСния.
Π’ Π΄Π°Π½Π½ΠΎΠΌ руководствС каТдая тСхнология рассматриваСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, показываСтся, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ PHP, MySQL ΠΈ javascript Π² Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅, даСтся прСдставлСниС ΠΎ самых соврСмСнных концСпциях Π²Π΅Π±-программирования. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… вопросов, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Π»Π°Π²Π΅, Π²Ρ‹ смоТСтС Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

Π”Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ:
β€” ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ основы PHP ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования;
β€” ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ MySQL, начиная со структуры Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ заканчивая составлСниСм слоТных запросов;
β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π±-страницы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ PHP ΠΈ MySQL для объСдинСния Ρ„ΠΎΡ€ΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… составных элСмСнтов HTML;
β€” ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ javascript, начиная с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий ΠΈ заканчивая доступом ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (DOM);
β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ систСму Smarty, Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ PEAR ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Yahoo! User Interface;
β€” ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Ajax-Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ свой Π²Π΅Π±-сайт Π² Π²Ρ‹ΡΠΎΠΊΠΎΠ΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ срСду;
β€” Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π½Π° Π²Π΅Π±-сайт Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ изобраТСния ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ;
β€” ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ своих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Queries not running fast enough? Wondering about the in-memory database features in 2014? Tired of phone calls from frustrated users? Grant Fritchey’s book SQL Server Query Performance Tuning is the answer to your SQL Server query performance problems. The book is revised to cover the very latest in performance optimization features and techniques, especially including the newly-added, in-memory database features formerly known under the code name Project Hekaton. This book provides the tools you need to approach your queries with performance in mind.

SQL Server Query Performance Tuning leads you through understanding the causes of poor performance, how to identify them, and how to fix them. You’ll learn to be proactive in establishing performance baselines using tools like Performance Monitor and Extended Events. You’ll learn to recognize bottlenecks and defuse them before the phone rings. You’ll learn some quick solutions too, but emphasis is on designing for performance and getting it right, and upon heading off trouble before it occurs. Delight your users. Silence that ringing phone. Put the principles and lessons from SQL Server Query Performance Tuning into practice today.

Covers the in-memory features from Project Hekaton
Helps establish performance baselines and monitor against them
Guides in troubleshooting and eliminating of bottlenecks that frustrate users
What you’ll learn
β€” Establish performance baselines and monitor against them
β€” Recognize and eliminate bottlenecks leading to slow performance
β€” Deploy quick fixes when needed, following up with long term solutions
β€” Implement best-practices in T-SQL so as to minimize performance risk
β€” Design in the performance that you need through careful query and index design
β€” Take advantage of the very latest performance optimization features in SQL Server 2014
β€” Understand the new, in-memory database features formerly code-named as Project Hekaton

Π’ ΠΊΠ½ΠΈΠ³Π΅ SQL Π·Π° 10 ΠΌΠΈΠ½ΡƒΡ‚ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ΡΡ простыС ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ быстро ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. ΠŸΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π² всС 22 ΡƒΡ€ΠΎΠΊΠ°, Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… придСтся Π·Π°Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 10 ΠΌΠΈΠ½ΡƒΡ‚, Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ±ΠΎ всСм, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для практичСского примСнСния SQL. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ подходят для IBM DB2, Microsoft Access, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, SQLite, MariaDB ΠΈ Apache OpenOffice Base. НаглядныС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ инструкции SQL. Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ подскаТут ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌ. ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ распространСнных ошибок. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ прСдоставят Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΡ.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языка ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ SQL. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ для нас, этот язык ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим простыС SQL запросы ΠΈ научимся ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для взаимодСйствия с MySQL Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

Π§Ρ‚ΠΎ Π’Π°ΠΌ потрСбуСтся?

SQL (Structured Query Language) язык ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ для взаимодСйствия с систСмами управлСния Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ MySQL, Oracle, Sqlite ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅... Для выполнСния SQL запросов Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ Π’Π°ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ MySQL Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. Π’Π°ΠΊΠΆΠ΅ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ phpMyAdmin Π² качСствС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ интСрфСйса.

ВсС это имССтся Π²ΠΎ всСми любимом Π”Π΅Π½Π²Π΅Ρ€Π΅. Π”ΡƒΠΌΠ°ΡŽ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΈ Π³Π΄Π΅ это Π²Π·ΡΡ‚ΡŒ:). МоТно Π΅Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ WAMP ΠΈΠ»ΠΈ MAMP.

Π’ Π΄Π΅Π½Π²Π΅Ρ€Π΅ Π΅ΡΡ‚ΡŒ встроСнная MySQL консоль. Π•ΠΉ ΠΌΡ‹ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

CREATE DATABASE: созданиС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π’ΠΎΡ‚ ΠΈ наш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос. ΠœΡ‹ создадим Π½Π°ΡˆΡƒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π‘Π” для дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Для Π½Π°Ρ‡Π°Π»Π°, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ MySQL консоль ΠΈ Π·Π°Π»ΠΎΠ³ΠΈΠ½ΡŒΡ‚Π΅ΡΡŒ. Для WAMP ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ пустой. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ:). Для MAMP - "root". Для Π”Π΅Π½Π²Π΅Ρ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ.

ПослС Π»ΠΎΠ³ΠΈΠ½Π° Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Enter:

CREATE DATABASE my_first_db;

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° с запятой (;) добавляСтся Π² ΠΊΠΎΠ½Ρ†Π΅ запроса, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках.

Π’Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² SQL Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΊ рСгистру. ПишСм ΠΈΡ… большими Π±ΡƒΠΊΠ²Π°ΠΌΠΈ.

ΠžΠΏΡ†ΠΈ онально: Character Set ΠΈ Collation

Если Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ character set (Π½Π°Π±ΠΎΡ€ символов ) ΠΈ collation (сравнСниС ) ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

CREATE DATABASE my_first_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Находится список Π½Π°Π±ΠΎΡ€ΠΎΠ² символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² MySQL.

SHOW DATABASES: Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список всСх Π‘Π”

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π²ΠΎΠ΄Π° всСх ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π‘Π”.

DROP DATABASE: ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π‘Π”

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π‘Π” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого запроса.

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны с этой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° выполняСтся Π±Π΅Π· прСдупрСТдСния. Если Π² Π’Π°ΡˆΠ΅ΠΉ Π‘Π” Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ всС ΡƒΠ΄Π°Π»Π΅Π½Ρ‹.

USE: Π’Ρ‹Π±ΠΎΡ€ Π‘Π”

ВСхничСски это Π½Π΅ запрос, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ ΠΎΠ½ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой Π² ΠΊΠΎΠ½Ρ†Π΅.

Он сообщаСт MySQL Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π‘Π” для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ сСссии. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ с Π‘Π”.

Π§Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π² Π‘Π”?

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² Π‘Π” Π² Π²ΠΈΠ΄Π΅ Excel Ρ„Π°ΠΉΠ»Π°.

Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅, Ρƒ Ρ‚Π°Π±Π»ΠΈΡ† Π΅ΡΡ‚ΡŒ названия ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, ряды ΠΈ информация. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SQL запросов ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Π²Π½ΠΎΡΠΈΡ‚ΡŒ обновлСния ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

CREATE TABLE: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

C ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого запроса ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Π‘Π”. К соТалСнию, докумСнтация MySQL Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ понятна для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² ΠΏΠΎ этому вопросу. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° этого Ρ‚ΠΈΠΏΠ° запросов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ слоТной, Π½ΠΎ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ с Π»Π΅Π³ΠΊΠΎΠΉ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос создаст Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с 2-мя ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ.

CREATE TABLE users (username VARCHAR(20), create_date DATE);

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ наши запросы Π² нСсколько строк ΠΈ с табуляциями для отступов.

ΠŸΠ΅Ρ€Π²Π°Ρ строка простая. ΠœΡ‹ просто создаСм Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ "users ". Π”Π°Π»Π΅Π΅ Π² скобках, Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ, ΠΈΠ΄Π΅Ρ‚ список всСх ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ. ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ названия ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Ρƒ нас ΠΈΠ΄ΡƒΡ‚ Ρ‚ΠΈΠΏΡ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ VARCHAR ΠΈΠ»ΠΈ DATE.

VARCHAR(20) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ строки ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ максимум 20 символов Π² Π΄Π»ΠΈΠ½Ρƒ. DATE Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΈΠΏ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния Π΄Π°Ρ‚ Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅: "Π“Π“Π“Π“ - ММ-Π”Π” ".

PRIMARY KEY ( ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ клю Ρ‡)

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ для "user_id ", которая Π±ΡƒΠ΄Π΅Ρ‚ нашим ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ PRIMARY KEY ΠΊΠ°ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для идСнтифицирования ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ряда Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(20), create_date DATE);

INT Π΄Π΅Π»Π°Π΅Ρ‚ 32 Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ†Π΅Π»Ρ‹ΠΉ Ρ‚ΠΈΠΏ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, числа). AUTO_INCREMENT автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ID ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ добавляСм Π½ΠΎΠ²Ρ‹Π΅ ряды ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ вСсь процСсс ΠΏΡ€ΠΎΡ‰Π΅.

Π­Ρ‚Π° ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ ΠΎΠ½ΠΎ Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. НаличиС ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠšΠ»ΡŽΡ‡Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ рСкомСндуСтся для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π‘Π”.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ запрос:

SHOW TABLES: ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

Π­Ρ‚ΠΎΡ‚ запрос позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Ρ‚Π°Π±Π»ΠΈΡ†, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² Π‘Π”.

EXPLAIN: ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ структуру Ρ‚Π°Π±Π»ΠΈΡ†

Для ΠΏΠΎΠΊΠ°Π·Π° структуры ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этим запросом.

Колонки ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ со всСми свойствами.

DROP TABLE: ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ DROP DATABASES, этот запрос удаляСт Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ Π΅Π΅ содСрТаниС Π±Π΅Π· прСдупрСТдСния.

ALTER TABLE: ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

Π­Ρ‚ΠΎΡ‚ запрос Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ структуру ΠΈΠ·-Π·Π° большСго количСствС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

(Ссли Π’Ρ‹ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ шагС, создайтС Π΅Π΅ снова для тСстов)

Π”ΠžΠ‘ΠΠ’Π›Π•ΠΠ˜Π• ΠšΠžΠ›ΠžΠΠšΠ˜

ALTER TABLE users ADD email VARCHAR(100) AFTER username;

Благодаря Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ SQL, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ смысла Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ. ΠœΡ‹ добавляСм Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ "email " послС "username ".

Π£Π”ΠΠ›Π•ΠΠ˜Π• ΠšΠžΠ›ΠžΠΠšΠ˜

Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот запрос с ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π±Π΅Π· прСдупрСТдСния.

ВосстановитС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ для Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… экспСримСнтов.

Π’ΠΠ•Π‘Π•ΠΠ˜Π• Π˜Π—ΠœΠ•ΠΠ•ΠΠ˜Π― Π’ ΠšΠžΠ›ΠžΠΠšΠ£

Иногда Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ внСсти измСнСния Π² свойства ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, ΠΈ Π’Π°ΠΌ Π½Π΅ Π½Π°Π΄ΠΎ Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ для этого.

Π­Ρ‚ΠΎΡ‚ запрос ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π» ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² "user_name " ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Π΅Π΅ Ρ‚ΠΈΠΏ с VARCHAR(20) Π½Π° VARCHAR(30). Π’Π°ΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

INSERT: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос.

Как Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, VALUES () содСрТит список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми. ВсС значСния Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. И значСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² порядкС ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL для поля PRIMARY KEY ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ "user_id ". ΠœΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ это для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ID Π±Ρ‹Π»ΠΎ сгСнСрировано автоматичСски, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ свойство AUTO_INCREMENT. Когда информация добавляСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· ID Π±ΡƒΠ΄Π΅Ρ‚ 1. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ряд - 2, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅...

ΠΠ›Π¬Π’Π•Π ΠΠΠ’Π˜Π’ΠΠ«Π™ Π’ΠΠ Π˜ΠΠΠ’

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ запроса для добавлСния рядов.

Π’ этот Ρ€Π°Π· ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово SET вмСсто VALUES, ΠΈ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ скобок. Π•ΡΡ‚ΡŒ нСсколько нюансов:

ΠšΠΎΠ»ΠΎΠ½ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΌΡ‹ Π½Π΅ присвоили Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для "user_id ", ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ своС AUTO_INCREMENT Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Если Π’Ρ‹ пропуститС ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ с Ρ‚ΠΈΠΏΠΎΠΌ VARCHAR, Ρ‚ΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ пустая строка.

К ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Из Π·Π° этого ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ Π² любом порядкС, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

ΠΠ›Π¬Π’Π•Π ΠΠΠ’Π˜Π’ΠΠ«Π™ Π’ΠΠ Π˜ΠΠΠ’ 2

Π’ΠΎΡ‚ Π΅Ρ‰Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅ΡΡ‚ΡŒ упоминания названия ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ значСния Π² любом порядкС.

LAST_INSERT_ID()

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот запрос для получСния ID, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ AUTO_INCREMENT для послСднСго ряда Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ сСссии.

NOW()

Π’Π΅ΠΏΠ΅Ρ€ΡŒ настало врСмя ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ MySQL Π² запросах.

Ѐункция NOW() Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄Π°Ρ‚Ρƒ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ для автоматичСского установлСния Π΄Π°Ρ‚Ρ‹ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΡ€ΠΈ вставкС Π½ΠΎΠ²ΠΎΠ³ΠΎ ряда.

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ 1 ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π½Π° Π½Π΅Π³ΠΎ внимания. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° этому Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ NOW() Ρ‚Π°ΠΊΠΆΠ΅ слуТит для Π²Ρ‹Π²ΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

SELECT: Π§Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

Если ΠΌΡ‹ добавляСм ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡ΠΈΡ‚ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π΅Π΅ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ. ИмСнно Π² этом Π½Π°ΠΌ ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ запрос SELECT.

НиТС прСдставлСн самый простой Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ запрос SELECT для чтСния Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π’ этом случаС Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° (*) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ запросили всС поля ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Если Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, запрос Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ.

УсловиС WHERE

Π§Π°Ρ‰Π΅ всСго ΠΌΡ‹ заинтСрСсованы Π½Π΅ Π²ΠΎ всСх ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ…, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСктронный адрСс для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ "nettuts ".

WHERE позволяСт ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ условия Π² запросС ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ.

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ для равСнства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½ Π·Π½Π°ΠΊ Ρ€Π°Π²Π½ΠΎ (=), Π° Π½Π΅ Π΄Π²Π°, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сравнСния.

AND ΠΈΠ»ΠΈ OR ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для объСдинСния условий:

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ числовыС значСния Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ….

IN()

Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΏΠΎ нСскольким значСниям

LIKE

ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ "wildcard" запросы

Π—Π½Π°Ρ‡ΠΎΠΊ % ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС "wildcard". Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° Π΅Π³ΠΎ мСстС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-ΡƒΠ³ΠΎΠ΄Π½ΠΎ.

УсловиС ORDER BY

Если Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² упорядочСнном Π²ΠΈΠ΄Π΅ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ Π»ΠΈΠ±ΠΎ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ASC (ΠΎΡ‚ мСньшСгок Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ). Для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ DESC.

LIMIT ... OFFSET ...

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ количСство ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

LIMIT 2 Π±Π΅Ρ€Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 2 ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. LIMIT 1 OFFSET 2 ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ 1 Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ послС ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 2-Ρ…. LIMIT 2, 1 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠΆΠ΅ самоС (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ сначала ΠΈΠ΄Π΅Ρ‚ offset Π° ΠΏΠΎΡ‚ΠΎΠΌ limit ).

UPDATE: ВнСсти измСнСния Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅

Π­Ρ‚ΠΎΡ‚ запрос ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для измСнСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вмСстС с условиСм WHERE, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π’Ρ‹ скорСС всСго Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ внСсти измСнСния Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. Если Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ условия WHERE измСнСния Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ всС ряды.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ LIMIT для ограничСния количСства рядов, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ внСсти измСнСния.

DELETE: Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ UPDATE, этот запрос ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с WHERE:

Для удалСния содСрТания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ просто Ρ‚Π°ΠΊ:

DELETE FROM users;

Но Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TRUNCATE

ΠšΡ€ΠΎΠΌΠ΅ удалСния этот запрос Ρ‚Π°ΠΊΠΆΠ΅ сбрасываСт значСния AUTO_INCREMENT ΠΈ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ рядов снова, отсчСт начнСтся с нуля. DELETE Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ отсчСт продолТаСтся.

ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π‘Ρ‚Ρ€ΠΎΡ‡Π½Ρ‹Ρ… Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π‘Π»ΠΎΠ²

Π‘Ρ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ значСния

НСкоторыС символы Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ (escape), ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π°Π΄Π½ΠΈΠΉ слСш (\).

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ слова

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² MySQL Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… слов (SELECT ΠΈΠ»ΠΈ UPDATE), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок ΠΏΡ€ΠΈ ΠΈΡ… использовании Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Но Π½Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π° Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ (`).

Π’ΠΎ Π΅ΡΡ‚ΡŒ Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ " delete", это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Бпасибо, Ρ‡Ρ‚ΠΎ Π΄ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°. НадСюсь, Π’Π°ΠΌ эта ΡΡ‚Π°Ρ‚ΡŒΡ Π±Ρ‹Π»Π° ΠΏΠΎΠ»Π΅Π·Π½Π°. Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ Π½Π΅ ΠΊΠΎΠ½Π΅Ρ†! Π‘ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅:).

  • Tutorial

О Ρ‡Π΅ΠΌ Π΄Π°Π½Π½Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ

Π”Π°Π½Π½Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ прСдставляСт собой Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΈΠΏΠ° Β«ΡˆΡ‚Π°ΠΌΠΏΠ° ΠΌΠΎΠ΅ΠΉ памяти» ΠΏΠΎ языку SQL (DDL, DML), Ρ‚.Π΅. это информация, которая накопилась ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ постоянно хранится Π² ΠΌΠΎΠ΅ΠΉ Π³ΠΎΠ»ΠΎΠ²Π΅. Π­Ρ‚ΠΎ для мСня достаточный ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ примСняСтся ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто. Если встаСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½Ρ‹Π΅ конструкции SQL, Ρ‚ΠΎ я ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡΡŒ Π·Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ MSDN Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. На ΠΌΠΎΠΉ взгляд, ΡƒΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΎΡ‡Π΅Π½ΡŒ слоТно, Π΄Π° ΠΈ Π½Π΅Ρ‚ особой нСобходимости Π² этом. Но Π·Π½Π°Ρ‚ΡŒ основныС конструкции ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ρ‚.ΠΊ. ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ практичСски Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΆΠ΅ Π²ΠΈΠ΄Π΅ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… рСляционных Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Oracle, MySQL, Firebird. ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ Π² основном состоят Π² Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² дСталях. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Ρ… конструкций языка SQL Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ ΠΏΡ€ΠΈ постоянной ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΎΠ½ΠΈ быстро Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ. НапримСр, для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Ρ‚Π°Π±Π»ΠΈΡ†, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, индСксов ΠΈ Ρ‚.ΠΏ.) достаточно ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ срСды (IDE) для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ Π½Π΅Ρ‚ надобности ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнтарий Π·Π°Ρ‚ΠΎΡ‡Π΅Π½Π½Ρ‹ΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… (MS SQL, Oracle, MySQL, Firebird, …). Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ вСсь тСкст находится ΠΏΠ΅Ρ€Π΅Π΄ Π³Π»Π°Π·Π°ΠΌΠΈ, ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅Π³Π°Ρ‚ΡŒ ΠΏΠΎ многочислСнным Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌ для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, индСкс ΠΈΠ»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈ постоянной Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π° особСнно ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ скриптов получаСтся Π² Ρ€Π°Π·Ρ‹ быстрСС, Ρ‡Π΅ΠΌ Ссли это Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’Π°ΠΊ ΠΆΠ΅ Π² скриптовом Ρ€Π΅ΠΆΠΈΠΌΠ΅ (соотвСтствСнно, ΠΏΡ€ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΉ аккуратности), ΠΏΡ€ΠΎΡ‰Π΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° наимСнования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (ΠΌΠΎΠ΅ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅). К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ скрипты ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² случаС, ΠΊΠΎΠ³Π΄Π° измСнСния, Π΄Π΅Π»Π°Π΅ΠΌΡ‹Π΅ Π² ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, тСстовой), Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ пСрСнСсти Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΆΠ΅ Π²ΠΈΠ΄Π΅ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π±Π°Π·Ρƒ (ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ).

Π―Π·Ρ‹ΠΊ SQL подраздСляСтся Π½Π° нСсколько частСй, здСсь я Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ 2 Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Π΅Π³ΠΎ части:
  • DML – Data Manipulation Language (язык манипулирования Π΄Π°Π½Π½Ρ‹ΠΌΠΈ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ конструкции:
    • SELECT – Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…
    • INSERT – вставка Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
    • UPDATE – ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…
    • DELETE – ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…
    • MERGE – слияниС Π΄Π°Π½Π½Ρ‹Ρ…
Π’.ΠΊ. я являюсь ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΌ, ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°Π»ΠΎ, ΠΈ всС конструкции Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒΡΡ Π½Π° практичСских ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ язык программирования, Π° особСнно SQL, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΡ‰ΡƒΠΏΠ°Π² Π΅Π³ΠΎ ΠΈ поняв, Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ выполняСтС Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ.

Π”Π°Π½Π½Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ создан ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Step by Step, Ρ‚.Π΅. Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сразу ΠΆΠ΅ выполняя ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹. Но Ссли ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ поиск Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ MSDN.

ΠŸΡ€ΠΈ написании Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° использовалась Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… MS SQL Server вСрсии 2014, для выполнСния скриптов я использовал MS SQL Server Management Studio (SSMS).

ΠšΡ€Π°Ρ‚ΠΊΠΎ ΠΎ MS SQL Server Management Studio (SSMS)

SQL Server Management Studio (SSMS) - ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для Microsoft SQL Server для конфигурирования, управлСния ΠΈ администрирования ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Данная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° содСрТит Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ скриптов (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² основном ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ) ΠΈ Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ настройками сСрвСра. Π“Π»Π°Π²Π½Ρ‹ΠΌ инструмСнтом SQL Server Management Studio являСтся Object Explorer, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ сСрвСра, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌΠΈ. Π”Π°Π½Π½Ρ‹ΠΉ тСкст частично позаимствован с Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ.

Для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° скрипта ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«New Query/Новый запрос»:

Для смСны Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список:

Для выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΊΠΎΠΌΠ°Π½Π΄) Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ Π΅Π΅ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Execute/Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΒ» ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Β«F5Β». Если Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ находится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΈΠ»ΠΈ ΠΆΠ΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

ПослС выполнСния скриптов, Π² особСнности ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, столбцы, индСксы), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ измСнСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· контСкстного мСню, Π²Ρ‹Π΄Π΅Π»ΠΈΠ² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π’Π°Π±Π»ΠΈΡ†Ρ‹), саму Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΡƒ Π‘Ρ‚ΠΎΠ»Π±Ρ†Ρ‹ Π² Π½Π΅ΠΉ.

БобствСнно, это всС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ для выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… здСсь ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ SSMS нСслоТно ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

НСмного Ρ‚Π΅ΠΎΡ€ΠΈΠΈ

РСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… (Π Π‘Π”, ΠΈΠ»ΠΈ Π΄Π°Π»Π΅Π΅ Π² контСкстС просто Π‘Π”) прСдставляСт ΠΈΠ· сСбя ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†, связанных ΠΌΠ΅ΠΆΠ΄Ρƒ собой. Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠ±ΠΎ, Ρ‚ΠΎ Π‘Π” – Ρ„Π°ΠΉΠ» Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² структурированном Π²ΠΈΠ΄Π΅.

Π‘Π£Π‘Π” – БистСма УправлСния этими Π‘Π°Π·Π°ΠΌΠΈ Π”Π°Π½Π½Ρ‹Ρ…, Ρ‚.Π΅. это комплСкс инструмСнтов для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π‘Π” (MS SQL, Oracle, MySQL, Firebird, …).

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
Π’.ΠΊ. Π² ΠΆΠΈΠ·Π½ΠΈ, Π² Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π½ΠΎΠΉ Ρ€Π΅Ρ‡ΠΈ, ΠΌΡ‹ ΠΏΠΎ большСй части Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ: Β«Π‘Π” OracleΒ», ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ просто Β«OracleΒ», Π½Π° самом Π΄Π΅Π»Π΅ подразумСвая Β«Π‘Π£Π‘Π” OracleΒ», Ρ‚ΠΎ Π² контСкстС Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° ΠΈΠ½ΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π‘Π”. Из контСкста, я Π΄ΡƒΠΌΠ°ΡŽ, Π±ΡƒΠ΄Π΅Ρ‚ понятно, ΠΎ Ρ‡Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ.

Π’Π°Π±Π»ΠΈΡ†Π° прСдставляСт ΠΈΠ· сСбя ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ столбцов. Π‘Ρ‚ΠΎΠ»Π±Ρ†Ρ‹, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ полями ΠΈΠ»ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ, всС эти слова Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ синонимы, Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠ΅ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎΠΆΠ΅.

Π’Π°Π±Π»ΠΈΡ†Π° – это Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π Π‘Π”, всС Π΄Π°Π½Π½Ρ‹Π΅ Π Π‘Π” хранятся построчно Π² столбцах Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ, записи – Ρ‚ΠΎΠΆΠ΅ синонимы.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠ°ΠΊ ΠΈ Π΅Π΅ столбцов Π·Π°Π΄Π°ΡŽΡ‚ΡΡ наимСнования, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ впослСдствии ΠΊ Π½ΠΈΠΌ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅.
НаимСнованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, имя столбца, имя индСкса ΠΈ Ρ‚.ΠΏ.) Π² MS SQL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ 128 символов.

Для справки – Π² Π‘Π” ORACLE наимСнования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ 30 символов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π‘Π” Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ свои ΠΏΡ€Π°Π²ΠΈΠ»Π° для наимСнования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ Π² Π»ΠΈΠΌΠΈΡ‚ ΠΏΠΎ количСству символов.

SQL - язык ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ запросы Π² Π‘Π” посрСдством Π‘Π£Π‘Π”. Π’ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π‘Π£Π‘Π”, язык SQL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ (свой Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚).

DDL ΠΈ DML - подмноТСство языка SQL:

  • Π―Π·Ρ‹ΠΊ DDL слуТит для создания ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ структуры Π‘Π”, Ρ‚.Π΅. для создания/измСнСния/удалСния Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ связСй.
  • Π―Π·Ρ‹ΠΊ DML позволяСт ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ манипуляции с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†, Ρ‚.Π΅. с Π΅Π΅ строками. Он позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π’ языкС SQL ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 2 Π²ΠΈΠ΄Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² (однострочный ΠΈ многострочный):

ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ
ΠΈ

/* многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ */

БобствСнно, всС для Ρ‚Π΅ΠΎΡ€ΠΈΠΈ этого Π±ΡƒΠ΄Π΅Ρ‚ достаточно.

DDL – Data Definition Language (язык описания Π΄Π°Π½Π½Ρ‹Ρ…)

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ сотрудниках, Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΌΡΡ программистом Π²ΠΈΠ΄Π΅:

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС столбцы Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ наимСнования: Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€, ЀИО, Π”Π°Ρ‚Π° роТдСния, E-mail, Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠžΡ‚Π΄Π΅Π».

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих столбцов ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ содСрТащСмся Π² Π½Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…:

  • Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ – Ρ†Π΅Π»ΠΎΠ΅ число
  • ЀИО – строка
  • Π”Π°Ρ‚Π° роТдСния – Π΄Π°Ρ‚Π°
  • E-mail – строка
  • Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ – строка
  • ΠžΡ‚Π΄Π΅Π» – строка
Π’ΠΈΠΏ столбца – характСристика, которая Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ столбСц.

Для Π½Π°Ρ‡Π°Π»Π° Π±ΡƒΠ΄Π΅Ρ‚ достаточно Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ основныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² MS SQL:

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² MS SQL ОписаниС
Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ varchar(N)
ΠΈ
nvarchar(N)
ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ числа N, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ строки для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ столбца. НапримСр, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ столбца «ЀИО» ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ максимум 30 символов, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π΅ΠΉ Ρ‚ΠΈΠΏ nvarchar(30).
ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ varchar ΠΎΡ‚ nvarchar Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ varchar позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ строки Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ASCII, Π³Π΄Π΅ ΠΎΠ΄ΠΈΠ½ символ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 1 Π±Π°ΠΉΡ‚, Π° nvarchar Ρ…Ρ€Π°Π½ΠΈΡ‚ строки Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Unicode, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π±Π°ΠΉΡ‚Π°.
Π’ΠΈΠΏ varchar стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π²Ρ‹ Π½Π° 100% ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ»Π΅ Π½Π΅ потрСбуСтся Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Unicode символы. НапримСр, varchar ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для хранСния адрСсов элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, Ρ‚.ΠΊ. ΠΎΠ½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТат Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ASCII символы.
Π‘Ρ‚Ρ€ΠΎΠΊΠ° фиксированной Π΄Π»ΠΈΠ½Ρ‹ char(N)
ΠΈ
nchar(N)
ΠžΡ‚ строки ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ отличаСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ссли Π΄Π»ΠΈΠ½Π° строка мСньшС N символов, Ρ‚ΠΎ ΠΎΠ½Π° всСгда дополняСтся справа Π΄ΠΎ Π΄Π»ΠΈΠ½Ρ‹ N ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΈ сохраняСтся Π² Π‘Π” Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅, Ρ‚.Π΅. Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ½Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€ΠΎΠ²Π½ΠΎ N символов (Π³Π΄Π΅ ΠΎΠ΄ΠΈΠ½ символ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 1 Π±Π°ΠΉΡ‚ для char ΠΈ 2 Π±Π°ΠΉΡ‚Π° для Ρ‚ΠΈΠΏΠ° nchar). На ΠΌΠΎΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π° Ссли ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‚ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² основном Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ char(1), Ρ‚.Π΅. ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π΅ опрСдСляСтся ΠΎΠ΄Π½ΠΈΠΌ символом.
Π¦Π΅Π»ΠΎΠ΅ число int Π”Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ позволяСт Π½Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² столбцС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Ρ‹Π΅ числа, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅. Для справки (сСйчас это Π½Π΅ Ρ‚Π°ΠΊ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для нас) – Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ чисСл ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ‚ΠΈΠΏ int ΠΎΡ‚ -2 147 483 648 Π΄ΠΎ 2 147 483 647. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это основной Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для задания ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².
ВСщСствСнноС ΠΈΠ»ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число float Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ простым языком, Ρ‚ΠΎ это числа, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ дСсятичная Ρ‚ΠΎΡ‡ΠΊΠ° (запятая).
Π”Π°Ρ‚Π° date Если Π² столбцС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π”Π°Ρ‚Ρƒ, которая состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…: Числа, ΠœΠ΅ΡΡΡ†Π° ΠΈ Π“ΠΎΠ΄Π°. НапримСр, 15.02.2014 (15 фСвраля 2014 Π³ΠΎΠ΄Π°). Π”Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для столбца Β«Π”Π°Ρ‚Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Β», Β«Π”Π°Ρ‚Π° роТдСния» ΠΈ Ρ‚.ΠΏ., Ρ‚.Π΅. Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π²Π°ΠΆΠ½ΠΎ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Ρ‚Ρƒ, ΠΈΠ»ΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π°ΠΌ Π½Π΅ Π²Π°ΠΆΠ½Π° ΠΈ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Ссли ΠΎΠ½Π° Π½Π΅ извСстна.
ВрСмя time Π”Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Π² столбцС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚.Π΅. Часы, ΠœΠΈΠ½ΡƒΡ‚Ρ‹, Π‘Π΅ΠΊΡƒΠ½Π΄Ρ‹ ΠΈ ΠœΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Ρ‹. НапримСр, 17:38:31.3231603
НапримСр, Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠ΅ «ВрСмя отправлСния рСйса».
Π”Π°Ρ‚Π° ΠΈ врСмя datetime Π”Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ позволяСт ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ Π”Π°Ρ‚Ρƒ, ΠΈ ВрСмя. НапримСр, 15.02.2014 17:38:31.323
Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π°Ρ‚Π° ΠΈ врСмя ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ события.
Π€Π»Π°Π³ bit Π”Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для хранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²ΠΈΠ΄Π° Β«Π”Π°Β»/«НСт», Π³Π΄Π΅ Β«Π”Π°Β» Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ 1, Π° «НСт» Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ 0.

Π’Π°ΠΊ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля, Π² Ρ‚ΠΎΠΌ случаС Ссли это Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, для этой Ρ†Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово NULL.

Для выполнСния ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² создадим Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Test.

ΠŸΡ€ΠΎΡΡ‚ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… (Π±Π΅Π· указания Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²) ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

CREATE DATABASE Test
Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ (стоит Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ остороТным с Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ):

DROP DATABASE Test
Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π½Π°ΡˆΡƒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

USE Test
Или ΠΆΠ΅ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Test Π² Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌ спискС Π² области мСню SSMS. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ мною Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ этот способ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°Π·Π°ΠΌΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² нашСй Π‘Π” ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ описания Π² Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ символы ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹:

CREATE TABLE [Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ]([Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€] int, [ЀИО] nvarchar(30), [Π”Π°Ρ‚Π° роТдСния] date, nvarchar(30), [Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ] nvarchar(30), [ΠžΡ‚Π΄Π΅Π»] nvarchar(30))
Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π°ΠΌ придСтся Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки […].

Но Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для большСго удобства всС наимСнования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π»ΡƒΡ‡ΡˆΠ΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π° Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Π΅ ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΈΠΌΠ΅Π½Π°Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. Π’ MS SQL ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ слово начинаСтся с прописной Π±ΡƒΠΊΠ²Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для поля Β«Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€Β», ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ имя PersonnelNumber. Π’Π°ΠΊ ΠΆΠ΅ Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΡ„Ρ€Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PhoneNumber1.

На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ
Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π‘Π£Π‘Π” Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ Β«PHONE_NUMBERΒ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π‘Π” ORACLE. ЕстСствСнно ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ имя поля ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ Π½Π΅ совпадало с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π‘Π£Π‘Π”.

По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΎ синтаксисС с ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ скобками ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ [Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ]:

DROP TABLE [Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ]
НапримСр, Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с сотрудниками ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ Β«EmployeesΒ», Π° Π΅Π΅ полям ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ наимСнования:

  • ID – Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ (Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сотрудника)
  • Name – ЀИО
  • Birthday – Π”Π°Ρ‚Π° роТдСния
  • Email – E-mail
  • Position – Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ
  • Department – ΠžΡ‚Π΄Π΅Π»
ΠžΡ‡Π΅Π½ΡŒ часто для наимСнования поля ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ слово ID.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Π½Π°ΡˆΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ:

CREATE TABLE Employees(ID int, Name nvarchar(30), Birthday date, Email nvarchar(30), Position nvarchar(30), Department nvarchar(30))
Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ для заполнСния столбцы, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ NOT NULL.

Для ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ поля ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄:

ОбновлСниС поля ID ALTER TABLE Employees ALTER COLUMN ID int NOT NULL -- обновлСниС поля Name ALTER TABLE Employees ALTER COLUMN Name nvarchar(30) NOT NULL

На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ
ΠžΠ±Ρ‰Π°Ρ концСпция языка SQL для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π‘Π£Π‘Π” остаСтся ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΎΠ± этом я ΠΌΠΎΠ³Ρƒ ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ Ρ‚Π΅ΠΌ Π‘Π£Π‘Π”, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠ½Π΅ довСлось ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ). ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ DDL Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π‘Π£Π‘Π” Π² основном Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (здСсь ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ… наимСнования, Π½ΠΎ ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ), Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΈ сама спСцифика Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языка SQL (Ρ‚.Π΅. ΡΡƒΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСбольшиС различия Π² Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π΅, ΡƒΠ²Ρ‹, Π½ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ стандарта Π½Π΅Ρ‚). ВладСя основами SQL Π²Ρ‹ Π»Π΅Π³ΠΊΠΎ смоТСтС ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ с ΠΎΠ΄Π½ΠΎΠΉ Π‘Π£Π‘Π” Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ, Ρ‚.ΠΊ. Π²Π°ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² дСталях Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π² Π½ΠΎΠ²ΠΎΠΉ Π‘Π£Π‘Π”, Ρ‚.Π΅. Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв достаточно Π±ΡƒΠ΄Π΅Ρ‚ просто провСсти аналогию.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ CREATE TABLE Employees(ID int, -- Π² ORACLE Ρ‚ΠΈΠΏ int - это эквивалСнт(ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ°) для number(38) Name nvarchar2(30), -- nvarchar2 Π² ORACLE эквивалСнтСн nvarchar Π² MS SQL Birthday date, Email nvarchar2(30), Position nvarchar2(30), Department nvarchar2(30)); -- ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ ID ΠΈ Name (здСсь вмСсто ALTER COLUMN ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ MODIFY(…)) ALTER TABLE Employees MODIFY(ID int NOT NULL,Name nvarchar2(30) NOT NULL); -- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ PK (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС конструкция выглядит ΠΊΠ°ΠΊ ΠΈ Π² MS SQL, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½ΠΈΠΆΠ΅) ALTER TABLE Employees ADD CONSTRAINT PK_Employees PRIMARY KEY(ID);
Для ORACLE Π΅ΡΡ‚ΡŒ отличия Π² ΠΏΠ»Π°Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° varchar2, Π΅Π³ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° зависит настроСк Π‘Π” ΠΈ тСкст ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8. Помимо этого Π΄Π»ΠΈΠ½Ρƒ поля Π² ORACLE ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² Π±Π°ΠΉΡ‚Π°Ρ…, Ρ‚Π°ΠΊ ΠΈ Π² символах, для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ BYTE ΠΈ CHAR, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ послС Π΄Π»ΠΈΠ½Ρ‹ поля, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

NAME varchar2(30 BYTE) -- Π²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ поля Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° 30 Π±Π°ΠΉΡ‚Π°ΠΌ NAME varchar2(30 CHAR) -- Π²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ поля Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° 30 символов
Какая опция Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ BYTE ΠΈΠ»ΠΈ CHAR, Π² случаС простого указания Π² ORACLE Ρ‚ΠΈΠΏΠ° varchar2(30), зависит ΠΎΡ‚ настроСк Π‘Π”, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎΠ½Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² настройках IDE. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ ΠΏΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ, поэтому Π² случаС ORACLE, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΈΠΏ varchar2 (Π° это здСсь ΠΏΠΎΡ€ΠΎΠΉ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ использовании ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ UTF-8) я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ явно ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ CHAR (Ρ‚.ΠΊ. ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄Π»ΠΈΠ½Ρƒ строки ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² символах).

Но Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Ссли Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚ΠΎ для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎ всСх строках Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ поля ID ΠΈ Name Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹. ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, вставим Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π΄Π°Π½Π½Ρ‹Π΅ Π² поля ID, Position ΠΈ Department, это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ скриптом:

INSERT Employees(ID,Position,Department) VALUES (1000,N"Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€",N"Администрация"), (1001,N"ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚",N"ИВ"), (1002,N"Π‘ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€",N"БухгалтСрия"), (1003,N"Π‘Ρ‚Π°Ρ€ΡˆΠΈΠΉ программист",N"ИВ")
Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, ΠΊΠΎΠΌΠ°Π½Π΄Π° INSERT Ρ‚Π°ΠΊΠΆΠ΅ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‚.ΠΊ. ΠΏΡ€ΠΈ вставкС ΠΌΡ‹ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ значСния ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ поля Name.
Π’ случаС, Ссли Π±Ρ‹ Ρƒ нас Π² ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΡƒΠΆΠ΅ имСлись эти Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«ALTER TABLE Employees ALTER COLUMN ID int NOT NULLΒ» Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ Π±Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«ALTER TABLE Employees ALTER COLUMN Name int NOT NULLΒ» Π²Ρ‹Π΄Π°Π»Π° сообщСниС ΠΎΠ± ошибкС, Ρ‡Ρ‚ΠΎ Π² ΠΏΠΎΠ»Π΅ Name ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ NULL (Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅) значСния.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ значСния для полю Name ΠΈ снова зальСм Π΄Π°Π½Π½Ρ‹Π΅:


Π’Π°ΠΊ ΠΆΠ΅ ΠΎΠΏΡ†ΠΈΡŽ NOT NULL ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСпосрСдствСнно ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‚.Π΅. Π² контСкстС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ CREATE TABLE.

Π‘Π½Π°Ρ‡Π°Π»Π° ΡƒΠ΄Π°Π»ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

DROP TABLE Employees
Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ для заполнСния столбцами ID ΠΈ Name:

CREATE TABLE Employees(ID int NOT NULL, Name nvarchar(30) NOT NULL, Birthday date, Email nvarchar(30), Position nvarchar(30), Department nvarchar(30))
МоТно Ρ‚Π°ΠΊΠΆΠ΅ послС ΠΈΠΌΠ΅Π½ΠΈ столбца Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ NULL, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ допустимы NULL-значСния (Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅), Π½ΠΎ этого Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ данная характСристика подразумСваСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Если трСбуСтся Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ столбСц Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для заполнСния, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

ALTER TABLE Employees ALTER COLUMN Name nvarchar(30) NULL
Или просто:

ALTER TABLE Employees ALTER COLUMN Name nvarchar(30)
Π’Π°ΠΊ ΠΆΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ поля Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ совмСстимый Ρ‚ΠΈΠΏ, ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρƒ. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠΌ ΠΏΠΎΠ»Π΅ Name Π΄ΠΎ 50 символов:

ALTER TABLE Employees ALTER COLUMN Name nvarchar(50)

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡

ΠŸΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΈΠΌΠ΅Π»Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ столбСц ΠΈΠ»ΠΈ ΠΆΠ΅ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ столбцов, которая ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΅Π΅ строки – ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запись. Π’Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ называСтся ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Для нашСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Employees Ρ‚Π°ΠΊΠΈΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ столбСц ID (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Β«Π’Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ сотрудника» - пускай Π² нашСм случаС Π΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сотрудника ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ).

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΊ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

ALTER TABLE Employees ADD CONSTRAINT PK_Employees PRIMARY KEY(ID)
Π“Π΄Π΅ Β«PK_EmployeesΒ» это имя ограничСния, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π·Π° ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для наимСнования ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ прСфикс Β«PK_Β» послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Ρ‚ имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Если ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ, Ρ‚ΠΎ эти поля Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π² скобках Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ:

ALTER TABLE имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ADD CONSTRAINT имя_ограничСния PRIMARY KEY(ΠΏΠΎΠ»Π΅1,ΠΏΠΎΠ»Π΅2,…)
Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² MS SQL всС поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ входят Π² ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ характСристику NOT NULL.

Π’Π°ΠΊ ΠΆΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ нСпосрСдствСнно ΠΏΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‚.Π΅. Π² контСкстС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ CREATE TABLE. Π£Π΄Π°Π»ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ:

DROP TABLE Employees
А Π·Π°Ρ‚Π΅ΠΌ создадим Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

CREATE TABLE Employees(ID int NOT NULL, Name nvarchar(30) NOT NULL, Birthday date, Email nvarchar(30), Position nvarchar(30), Department nvarchar(30), CONSTRAINT PK_Employees PRIMARY KEY(ID) -- описываСм PK послС всСх ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠ°ΠΊ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅)
ПослС создания зальСм Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π΄Π°Π½Π½Ρ‹Π΅:

INSERT Employees(ID,Position,Department,Name) VALUES (1000,N"Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€",N"Администрация",N"Иванов И.И."), (1001,N"ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚",N"ИВ",N"ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П."), (1002,N"Π‘ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€",N"БухгалтСрия",N"Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘."), (1003,N"Π‘Ρ‚Π°Ρ€ΡˆΠΈΠΉ программист",N"ИВ",N"АндрССв А.А.")
Если ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ состоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ столбца, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

CREATE TABLE Employees(ID int NOT NULL CONSTRAINT PK_Employees PRIMARY KEY, -- ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠ°ΠΊ характСристику поля Name nvarchar(30) NOT NULL, Birthday date, Email nvarchar(30), Position nvarchar(30), Department nvarchar(30))
На самом Π΄Π΅Π»Π΅ имя ограничСния ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ, Π² этом случаС Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ присвоСно систСмноС имя (Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Β«PK__Employee__3214EC278DA42077Β»):

CREATE TABLE Employees(ID int NOT NULL, Name nvarchar(30) NOT NULL, Birthday date, Email nvarchar(30), Position nvarchar(30), Department nvarchar(30), PRIMARY KEY(ID))
Или:

CREATE TABLE Employees(ID int NOT NULL PRIMARY KEY, Name nvarchar(30) NOT NULL, Birthday date, Email nvarchar(30), Position nvarchar(30), Department nvarchar(30))
Но я Π±Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» для постоянных Ρ‚Π°Π±Π»ΠΈΡ† всСгда явно Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ имя ограничСния, Ρ‚.ΠΊ. ΠΏΠΎ явно Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΈ понятному ΠΈΠΌΠ΅Π½ΠΈ с Π½ΠΈΠΌ впослСдствии Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³Ρ‡Π΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ манипуляции, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ произвСсти Π΅Π³ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅:

ALTER TABLE Employees DROP CONSTRAINT PK_Employees
Но Ρ‚Π°ΠΊΠΎΠΉ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ синтаксис, Π±Π΅Π· указания ΠΈΠΌΠ΅Π½ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈ создании Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Π‘Π” (имя Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ начинаСтся с # ΠΈΠ»ΠΈ ##), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ послС использования Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹.

ΠŸΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠΌ

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ рассмотрСли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:
  • CREATE TABLE имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (пСрСчислСниС ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ) – слуТит для создания Π½ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π‘Π”;
  • DROP TABLE имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ – слуТит для удалСния Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π‘Π”;
  • ALTER TABLE имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ALTER COLUMN имя_столбца … – слуТит для обновлСния Ρ‚ΠΈΠΏΠ° столбца ΠΈΠ»ΠΈ для измСнСния Π΅Π³ΠΎ настроСк (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для задания характСристики NULL ΠΈΠ»ΠΈ NOT NULL);
  • ALTER TABLE имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ADD CONSTRAINT имя_ограничСния PRIMARY KEY (ΠΏΠΎΠ»Π΅1, ΠΏΠΎΠ»Π΅2,…) – Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΊ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅;
  • ALTER TABLE имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ DROP CONSTRAINT имя_ограничСния – ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ограничСния ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

НСмного ΠΏΡ€ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

Π’Ρ‹Ρ€Π΅Π·ΠΊΠ° ΠΈΠ· MSDN. Π’ MS SQL Server сущСствуСт Π΄Π²Π° Π²ΠΈΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†: Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ (#) ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ (##). Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²ΠΈΠ΄Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ… создатСлям Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ сСанса соСдинСния с экзСмпляром SQL Server, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΈ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ созданы. Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ автоматичСски ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ послС ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΡ‚ экзСмпляра SQL Server. Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²ΠΈΠ΄Π½Ρ‹ всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π»ΡŽΠ±Ρ‹Ρ… сСансов соСдинСния послС создания этих Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° всС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° эти Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ экзСмпляра SQL Server.

Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² систСмной Π±Π°Π·Π΅ tempdb, Ρ‚.Π΅. создавая ΠΈΡ… ΠΌΡ‹ Π½Π΅ засоряСм ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π±Π°Π·Ρƒ, Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΠΆΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ, ΠΈΡ… Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ DROP TABLE. Π§Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ (#) Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Для создания Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ CREATE TABLE:

CREATE TABLE #Temp(ID int, Name nvarchar(30))
Π’Π°ΠΊ ΠΊΠ°ΠΊ врСмСнная Ρ‚Π°Π±Π»ΠΈΡ†Π° Π² MS SQL Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π΅Π΅ соотвСтствСнно Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ самому ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ DROP TABLE:

DROP TABLE #Temp

Π’Π°ΠΊ ΠΆΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ (ΠΊΠ°ΠΊ собствСнно ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ) ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ сразу Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ запросом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ синтаксис SELECT … INTO:

SELECT ID,Name INTO #Temp FROM Employees

На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ
Π’ Ρ€Π°Π·Π½Ρ‹Ρ… Π‘Π£Π‘Π” рСализация Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. НапримСр, Π² Π‘Π£Π‘Π” ORACLE ΠΈ Firebird структура Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ CREATE GLOBAL TEMPORARY TABLE с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ спСцифики хранСния Π² Π½Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, дальшС ΡƒΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄ΠΈΡ‚ Π΅Π΅ срСди основных Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π½Π΅ΠΉ ΠΊΠ°ΠΊ с ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ.

Нормализация Π‘Π” – Π΄Ρ€ΠΎΠ±Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (справочники) ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ связСй

Наша тСкущая Ρ‚Π°Π±Π»ΠΈΡ†Π° Employees ΠΈΠΌΠ΅Π΅Ρ‚ нСдостаток Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² полях Position ΠΈ Department ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти любой тСкст, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ ошибками, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ сотрудника ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² качСствС ΠΎΡ‚Π΄Π΅Π»Π° просто «ИВ», Π° Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ сотрудника, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ввСсти «ИВ-ΠΎΡ‚Π΄Π΅Π»Β», Ρƒ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Β«ITΒ». Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚ нСпонятно, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π» Π²Π²ΠΈΠ΄Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Ρ‚.Π΅. ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ сотрудники Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»Π°, ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ описался ΠΈ это 3 Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΡ‚Π΄Π΅Π»Π°? А Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, Π² этом случаС, ΠΌΡ‹ Π½Π΅ смоТСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°, Π³Π΄Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ количСство сотрудников Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»Π°.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ нСдостаток Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² объСмС хранСния Π΄Π°Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Π΅Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Ρ‚.Π΅. для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сотрудника указываСтся ΠΏΠΎΠ»Π½ΠΎΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»Π°, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π² Π‘Π” мСста для хранСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа ΠΈΠ· названия ΠΎΡ‚Π΄Π΅Π»Π°.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ нСдостаток – ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ обновлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ, Π² случаС Ссли измСнится Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ долТности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли потрСбуСтся ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Β», Π½Π° «Младший программист». Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π°ΠΌ придСтся Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строчку Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ равняСтся Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Β».

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… нСдостатков ΠΈ примСняСтся, Ρ‚Π°ΠΊ называСмая, нормализация Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… – Π΄Ρ€ΠΎΠ±Π»Π΅Π½ΠΈΠ΅ Π΅Π΅ Π½Π° ΠΏΠΎΠ΄Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ справочники. НС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π·Ρ‚ΡŒ Π² Π΄Π΅Π±Ρ€ΠΈ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΈ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΈΠ· сСбя ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹, достаточно ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡΡƒΡ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим 2 Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ справочники «ДолТности» ΠΈ Β«ΠžΡ‚Π΄Π΅Π»Ρ‹Β», ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π½Π°Π·ΠΎΠ²Π΅ΠΌ Positions, Π° Π²Ρ‚ΠΎΡ€ΡƒΡŽ соотвСтствСнно Departments:

CREATE TABLE Positions(ID int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Positions PRIMARY KEY, Name nvarchar(30) NOT NULL) CREATE TABLE Departments(ID int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Departments PRIMARY KEY, Name nvarchar(30) NOT NULL)
Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ здСсь ΠΌΡ‹ использовали Π½ΠΎΠ²ΡƒΡŽ ΠΎΠΏΡ†ΠΈΡŽ IDENTITY, которая Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π² столбцС ID Π±ΡƒΠ΄ΡƒΡ‚ Π½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ автоматичСски, начиная с 1, с шагом 1, Ρ‚.Π΅. ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… записСй ΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ значСния 1, 2, 3, ΠΈ Ρ‚.Π΄. Π’Π°ΠΊΠΈΠ΅ поля ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅ со свойством IDENTITY ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π½ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅ являСтся ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ для Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ
Π’ Ρ€Π°Π·Π½Ρ‹Ρ… Π‘Π£Π‘Π” рСализация ΠΏΠΎΠ»Π΅ΠΉ со счСтчиком ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒΡΡ ΠΏΠΎ своСму. Π’ MySQL, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅ опрСдСляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΡ†ΠΈΠΈ AUTO_INCREMENT. Π’ ORACLE ΠΈ Firebird Ρ€Π°Π½ΡŒΡˆΠ΅ Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΡŠΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ использования ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ (SEQUENCE). Но насколько я знаю Π² ORACLE сСйчас Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΠΏΡ†ΠΈΡŽ GENERATED AS IDENTITY.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ эти Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ автоматичСски, Π½Π° основании Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… записанных Π² полях Position ΠΈ Department Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Employees:

ЗаполняСм ΠΏΠΎΠ»Π΅ Name Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Positions, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ значСниями ΠΈΠ· поля Position Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Employees INSERT Positions(Name) SELECT DISTINCT Position FROM Employees WHERE Position IS NOT NULL -- отбрасываСм записи Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… позиция Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π°
Π’ΠΎ ΠΆΠ΅ самоС ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π΅ΠΌ для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Departments:

INSERT Departments(Name) SELECT DISTINCT Department FROM Employees WHERE Department IS NOT NULL
Если Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Positions ΠΈ Departments, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ полю ID:

SELECT * FROM Positions

SELECT * FROM Departments

Π”Π°Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΡŒ справочников для задания долТностСй ΠΈ ΠΎΡ‚Π΄Π΅Π»ΠΎΠ². Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ долТностСй ΠΈ ΠΎΡ‚Π΄Π΅Π»ΠΎΠ². Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ создадим Π½ΠΎΠ²Ρ‹Π΅ поля Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Employees для хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²:

ДобавляСм ΠΏΠΎΠ»Π΅ для ID долТности ALTER TABLE Employees ADD PositionID int -- добавляСм ΠΏΠΎΠ»Π΅ для ID ΠΎΡ‚Π΄Π΅Π»Π° ALTER TABLE Employees ADD DepartmentID int
Π’ΠΈΠΏ ссылочных ΠΏΠΎΠ»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² справочниках, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это int.

Π’Π°ΠΊ ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ сразу нСсколько ΠΏΠΎΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, пСрСчислив поля Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ:

ALTER TABLE Employees ADD PositionID int, DepartmentID int
Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠΏΠΈΡˆΠ΅ΠΌ ссылки (ссылочныС ограничСния - FOREIGN KEY) для этих ΠΏΠΎΠ»Π΅ΠΉ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΈΠΌΠ΅Π» возмоТности Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π΄Π°Π½Π½Ρ‹Π΅ поля, значСния, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ срСди Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ID находящихся Π² справочниках.

ALTER TABLE Employees ADD CONSTRAINT FK_Employees_PositionID FOREIGN KEY(PositionID) REFERENCES Positions(ID)
И Ρ‚ΠΎ ΠΆΠ΅ самоС сдСлаСм для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ поля:

ALTER TABLE Employees ADD CONSTRAINT FK_Employees_DepartmentID FOREIGN KEY(DepartmentID) REFERENCES Departments(ID)
Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² Π΄Π°Π½Π½Ρ‹Π΅ поля смоТСт занСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния ID ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ справочника. БоотвСтствСнно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π» ΠΈΠ»ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΎΠ½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ запись Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ справочник. Π’.ΠΊ. долТности ΠΈ ΠΎΡ‚Π΄Π΅Π»Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ хранятся Π² справочниках Π² ΠΎΠ΄Π½ΠΎΠΌ СдинствСнном экзСмплярС, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, достаточно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² справочникС.

Имя ссылочного ограничСния, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся составным, ΠΎΠ½ΠΎ состоит ΠΈΠ· прСфикса Β«FK_Β», Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ΄Π΅Ρ‚ имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ послС Π·Π½Π°ΠΊΠ° подчСркивания ΠΈΠ΄Π΅Ρ‚ имя поля, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ссылаСтся Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹-справочника.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (ID) ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для связСй ΠΈ ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΌ хранится, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π±Π΅Π·Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ, поэтому Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π΄Ρ‹Ρ€ΠΎΠΊ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, послС удалСния записСй ΠΈΠ· справочника.

ALTER TABLE Ρ‚Π°Π±Π»ΠΈΡ†Π° ADD CONSTRAINT имя_ограничСния FOREIGN KEY(ΠΏΠΎΠ»Π΅1,ΠΏΠΎΠ»Π΅2,…) REFERENCES Ρ‚Π°Π±Π»ΠΈΡ†Π°_справочник(ΠΏΠΎΠ»Π΅1,ΠΏΠΎΠ»Π΅2,…)
Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Β«Ρ‚Π°Π±Π»ΠΈΡ†Π°_справочник» ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ прСдставлСн ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ (ΠΏΠΎΠ»Π΅1, ΠΏΠΎΠ»Π΅2,…).

БобствСнно, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ поля PositionID ΠΈ DepartmentID значСниями ID ΠΈΠ· справочников. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ для этой Ρ†Π΅Π»ΠΈ DML ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ UPDATE:

UPDATE e SET PositionID=(SELECT ID FROM Positions WHERE Name=e.Position), DepartmentID=(SELECT ID FROM Departments WHERE Name=e.Department) FROM Employees e
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² запрос:

SELECT * FROM Employees

Всё, поля PositionID ΠΈ DepartmentID Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ долТностям ΠΈ ΠΎΡ‚Π΄Π΅Π»Π°ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ надобности Π² полях Position ΠΈ Department Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Employees Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ эти поля:

ALTER TABLE Employees DROP COLUMN Position,Department
Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρƒ нас ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

SELECT * FROM Employees

ID Name Birthday Email PositionID DepartmentID
1000 Иванов И.И. NULL NULL 2 1
1001 ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П. NULL NULL 3 3
1002 Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘. NULL NULL 1 2
1003 АндрССв А.А. NULL NULL 4 3

Π’.Π΅. ΠΌΡ‹ Π² ΠΈΡ‚ΠΎΠ³Π΅ избавились ΠΎΡ‚ хранСния ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ долТности ΠΈ ΠΎΡ‚Π΄Π΅Π»Π° ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡ… названия, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ значСния Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…-справочниках:

SELECT e.ID,e.Name,p.Name PositionName,d.Name DepartmentName FROM Employees e LEFT JOIN Departments d ON d.ID=e.DepartmentID LEFT JOIN Positions p ON p.ID=e.PositionID

Π’ инспСкторС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, созданныС для Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠžΡ‚ΡΡŽΠ΄Π° ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ манипуляции с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Π’Π°ΠΊ ΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ сама Π½Π° сСбя, Ρ‚.Π΅. ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ ссылку. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π°ΡˆΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с сотрудниками Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅ ManagerID, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° сотрудника, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ подчиняСтся Π΄Π°Π½Π½Ρ‹ΠΉ сотрудник. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠΎΠ»Π΅:

ALTER TABLE Employees ADD ManagerID int
Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ»Π΅ допустимо Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL, ΠΏΠΎΠ»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ пустым, Ссли, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°Π΄ сотрудником Π½Π΅Ρ‚ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰ΠΈΡ….

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим FOREIGN KEY Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Employees:

ALTER TABLE Employees ADD CONSTRAINT FK_Employees_ManagerID FOREIGN KEY (ManagerID) REFERENCES Employees(ID)
Π”Π°Π²Π°ΠΉΡ‚Π΅, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ создадим Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ ΠΈ посмотрим, ΠΊΠ°ΠΊ выглядят Π½Π° Π½Π΅ΠΉ связи ΠΌΠ΅ΠΆΠ΄Ρƒ нашими Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ:

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ (Ρ‚Π°Π±Π»ΠΈΡ†Π° Employees связана с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Positions ΠΈ Depertments, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ссылаСтся сама Π½Π° сСбя):

НапослСдок стоит ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ссылочныС ΠΊΠ»ΡŽΡ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ ON DELETE CASCADE ΠΈ ON UPDATE CASCADE, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ говорят ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ вСсти сСбя ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ записи, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΅ΡΡ‚ΡŒ ссылки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅-справочникС. Если эти ΠΎΠΏΡ†ΠΈΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹, Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ID Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ справочникС Ρƒ Ρ‚ΠΎΠΉ записи, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΅ΡΡ‚ΡŒ ссылки ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΡ‹ Π½Π΅ смоТСм ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ запись ΠΈΠ· справочника, ΠΏΠΎΠΊΠ° Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΠΌ всС строки, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° эту запись ΠΈΠ»ΠΈ, ΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ Π² этих строках ссылки Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° пСрСсоздадим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡ†ΠΈΠΈ ON DELETE CASCADE для FK_Employees_DepartmentID:

DROP TABLE Employees CREATE TABLE Employees(ID int NOT NULL, Name nvarchar(30), Birthday date, Email nvarchar(30), PositionID int, DepartmentID int, ManagerID int, CONSTRAINT PK_Employees PRIMARY KEY (ID), CONSTRAINT FK_Employees_DepartmentID FOREIGN KEY(DepartmentID) REFERENCES Departments(ID) ON DELETE CASCADE, CONSTRAINT FK_Employees_PositionID FOREIGN KEY(PositionID) REFERENCES Positions(ID), CONSTRAINT FK_Employees_ManagerID FOREIGN KEY (ManagerID) REFERENCES Employees(ID)) INSERT Employees (ID,Name,Birthday,PositionID,DepartmentID,ManagerID)VALUES (1000,N"Иванов И.И.","19550219",2,1,NULL), (1001,N"ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.","19831203",3,3,1003), (1002,N"Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.","19760607",1,2,1000), (1003,N"АндрССв А.А.","19820417",4,3,1000)
Π£Π΄Π°Π»ΠΈΠΌ ΠΎΡ‚Π΄Π΅Π» с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ 3 ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Departments:

DELETE Departments WHERE ID=3
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Employees:

SELECT * FROM Employees

ID Name Birthday Email PositionID DepartmentID ManagerID
1000 Иванов И.И. 1955-02-19 NULL 2 1 NULL
1002 Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘. 1976-06-07 NULL 1 2 1000

Как Π²ΠΈΠ΄ΠΈΠΌ, Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»Ρƒ 3 ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Employees Ρ‚Π°ΠΊ ΠΆΠ΅ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈΡΡŒ.

ΠžΠΏΡ†ΠΈΡ ON UPDATE CASCADE Π²Π΅Π΄Π΅Ρ‚ сСбя Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π½ΠΎ дСйствуСт ΠΎΠ½Π° ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ значСния ID Π² справочникС. НапримСр, Ссли ΠΌΡ‹ помСняСм ID долТности Π² справочникС долТностСй, Ρ‚ΠΎ Π² этом случаС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ DepartmentID Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Employees Π½Π° Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ID ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ Π·Π°Π΄Π°Π»ΠΈ Π² справочникС. Но Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ просто Π½Π΅ получится, Ρ‚.ΠΊ. Ρƒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ID Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Departments стоит опция IDENTITY, которая Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос (ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΡ‚Π΄Π΅Π»Π° 3 Π½Π° 30):

UPDATE Departments SET ID=30 WHERE ID=3
Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΡΡƒΡ‚ΡŒ этих 2-Ρ… ΠΎΠΏΡ†ΠΈΠΉ ON DELETE CASCADE ΠΈ ON UPDATE CASCADE. Π― ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽ эти ΠΎΠΏΡ†ΠΈΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π² Ρ€Π΅Π΄ΠΊΠΈΡ… случаях ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π² ссылочном ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΈ, Ρ‚.ΠΊ. ΠΏΡ€ΠΈ нСчаянном ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ записи ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ справочника это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ большим ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ†Π΅ΠΏΠ½ΡƒΡŽ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ.

Восстановим ΠΎΡ‚Π΄Π΅Π» 3:

Π”Π°Π΅ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ IDENTITY значСния SET IDENTITY_INSERT Departments ON INSERT Departments(ID,Name) VALUES(3,N"ИВ") -- Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ IDENTITY значСния SET IDENTITY_INSERT Departments OFF
ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ очистим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Employees ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ TRUNCATE TABLE:

TRUNCATE TABLE Employees
И снова ΠΏΠ΅Ρ€Π΅Π·Π°Π»ΡŒΠ΅ΠΌ Π² Π½Π΅Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ INSERT:

INSERT Employees (ID,Name,Birthday,PositionID,DepartmentID,ManagerID)VALUES (1000,N"Иванов И.И.","19550219",2,1,NULL), (1001,N"ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.","19831203",3,3,1003), (1002,N"Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.","19760607",1,2,1000), (1003,N"АндрССв А.А.","19820417",4,3,1000)

ΠŸΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠΌ

На Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊ нашим знаниям добавилось Π΅Ρ‰Π΅ нСсколько ΠΊΠΎΠΌΠ°Π½Π΄ DDL:
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ свойства IDENTITY ΠΊ полю – позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΠΎΠ»Π΅ автоматичСски заполняСмым (ΠΏΠΎΠ»Π΅ΠΌ-счСтчиком) для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹;
  • ALTER TABLE имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ADD ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ_ΠΏΠΎΠ»Π΅ΠΉ_с_характСристиками – позволяСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ поля Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ;
  • ALTER TABLE имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ DROP COLUMN ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ_ΠΏΠΎΠ»Π΅ΠΉ – позволяСт ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ поля ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹;
  • ALTER TABLE имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ADD CONSTRAINT имя_ограничСния FOREIGN KEY (поля) REFERENCES Ρ‚Π°Π±Π»ΠΈΡ†Π°_справочник(поля) – позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ связь ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ справочником.

ΠŸΡ€ΠΎΡ‡ΠΈΠ΅ ограничСния – UNIQUE, DEFAULT, CHECK

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ограничСния UNIQUE ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ значСния для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ Π² Π½Π°Π±ΠΎΡ€Π΅ ΠΏΠΎΠ»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ. Π’ случаС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Employees, Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° ΠΏΠΎΠ»Π΅ Email. Волько ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ Email значСниями, Ссли ΠΎΠ½ΠΈ Π΅Ρ‰Π΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹:

UPDATE Employees SET Email="[email protected]" WHERE ID=1000 UPDATE Employees SET Email="[email protected]" WHERE ID=1001 UPDATE Employees SET Email="[email protected]" WHERE ID=1002 UPDATE Employees SET Email="[email protected]" WHERE ID=1003
А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° это ΠΏΠΎΠ»Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅-ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

ALTER TABLE Employees ADD CONSTRAINT UQ_Employees_Email UNIQUE(Email)
Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ смоТСт внСсти ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ E-Mail Ρƒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сотрудников.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ имСнуСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ – сначала ΠΈΠ΄Π΅Ρ‚ прСфикс Β«UQ_Β», Π΄Π°Π»Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ послС Π·Π½Π°ΠΊΠ° подчСркивания ΠΈΠ΄Π΅Ρ‚ имя поля, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ накладываСтся Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅.

БоотвСтствСнно Ссли ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅ строк Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ комбинация ΠΏΠΎΠ»Π΅ΠΉ, Ρ‚ΠΎ пСрСчисляСм ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ:

ALTER TABLE имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ADD CONSTRAINT имя_ограничСния UNIQUE(ΠΏΠΎΠ»Π΅1,ΠΏΠΎΠ»Π΅2,…)
ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ добавлСния ΠΊ полю ограничСния DEFAULT ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² случаС, Ссли ΠΏΡ€ΠΈ вставкС Π½ΠΎΠ²ΠΎΠΉ записи Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ пСрСчислСно Π² спискС ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ INSERT. Π”Π°Π½Π½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ нСпосрСдствСнно ΠΏΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Employees Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Β«Π”Π°Ρ‚Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Β» ΠΈ Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ HireDate ΠΈ скаТСм Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρƒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ поля Π±ΡƒΠ΄Π΅Ρ‚ тСкущая Π΄Π°Ρ‚Π°:

ALTER TABLE Employees ADD HireDate date NOT NULL DEFAULT SYSDATETIME()
Или Ссли столбСц HireDate ΡƒΠΆΠ΅ сущСствуСт, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

ALTER TABLE Employees ADD DEFAULT SYSDATETIME() FOR HireDate
Π—Π΄Π΅ΡΡŒ я Π½Π΅ ΡƒΠΊΠ°Π·Π°Π» имя ограничСния, Ρ‚.ΠΊ. Π² случаС DEFAULT Ρƒ мСня слоТилось ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ. Но Ссли Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎ-Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΌΡƒ, Ρ‚ΠΎ, Π΄ΡƒΠΌΠ°ΡŽ, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π»Π΅Π½ΠΈΡ‚ΡŒΡΡ ΠΈ стоит Π·Π°Π΄Π°Ρ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ имя. ДСлаСтся это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ALTER TABLE Employees ADD CONSTRAINT DF_Employees_HireDate DEFAULT SYSDATETIME() FOR HireDate
Π’Π° ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΠΎΠ³ΠΎ столбца Ρ€Π°Π½ΡŒΡˆΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ, Ρ‚ΠΎ ΠΏΡ€ΠΈ Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ запись Π² ΠΏΠΎΠ»Π΅ HireDate Π±ΡƒΠ΄Π΅Ρ‚ вставлСно Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‹.

ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ записи, тСкущая Π΄Π°Ρ‚Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ вставлСна Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠΌ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Ссли ΠΌΡ‹ Π΅Π΅ явно Π½Π΅ Π·Π°Π΄Π°Π΄ΠΈΠΌ, Ρ‚.Π΅. Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Π² спискС столбцов. ПокаТСм это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π½Π΅ ΡƒΠΊΠ°Π·Π°Π² ΠΏΠΎΠ»Π΅ HireDate Π² ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ добавляСмых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

INSERT Employees(ID,Name,Email)VALUES(1004,N"Π‘Π΅Ρ€Π³Π΅Π΅Π² Π‘.Π‘.","[email protected]")
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ:

SELECT * FROM Employees

ID Name Birthday Email PositionID DepartmentID ManagerID HireDate
1000 Иванов И.И. 1955-02-19 [email protected] 2 1 NULL 2015-04-08
1001 ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П. 1983-12-03 [email protected] 3 4 1003 2015-04-08
1002 Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘. 1976-06-07 [email protected] 1 2 1000 2015-04-08
1003 АндрССв А.А. 1982-04-17 [email protected] 4 3 1000 2015-04-08
1004 Π‘Π΅Ρ€Π³Π΅Π΅Π² Π‘.Π‘. NULL [email protected] NULL NULL NULL 2015-04-08

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ CHECK ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ вставляСмых Π² ΠΏΠΎΠ»Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. НапримСр, Π½Π°Π»ΠΎΠΆΠΈΠΌ Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ»Π΅ Ρ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρƒ нас являСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ сотрудника (ID). ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ограничСния скаТСм, Ρ‡Ρ‚ΠΎ Ρ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ 1000 Π΄ΠΎ 1999:

ALTER TABLE Employees ADD CONSTRAINT CK_Employees_ID CHECK(ID BETWEEN 1000 AND 1999)
ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ имСнуСтся Ρ‚Π°ΠΊ ΠΆΠ΅, сначала ΠΈΠ΄Π΅Ρ‚ прСфикс Β«CK_Β», Π·Π°Ρ‚Π΅ΠΌ имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ имя поля, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΎ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π΅Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΡƒΡŽ запись для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ (ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ):

INSERT Employees(ID,Email) VALUES(2000,"[email protected]")
А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ вставляСмоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° 1500 ΠΈ убСдимся, Ρ‡Ρ‚ΠΎ запись вставится:

INSERT Employees(ID,Email) VALUES(1500,"[email protected]")
МоТно Ρ‚Π°ΠΊ ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ограничСния UNIQUE ΠΈ CHECK Π±Π΅Π· указания ΠΈΠΌΠ΅Π½ΠΈ:

ALTER TABLE Employees ADD UNIQUE(Email) ALTER TABLE Employees ADD CHECK(ID BETWEEN 1000 AND 1999)
Но это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ имя ограничСния Π² явном Π²ΠΈΠ΄Π΅, Ρ‚.ΠΊ. Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ слоТнСС, Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π·Π° Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚.

ΠŸΡ€ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΌ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ нСпосрСдствСнно ΠΏΠΎ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ.

И, соотвСтствСнно, всС эти ограничСния ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сразу ΠΆΠ΅ ΠΏΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ссли Π΅Π΅ Π΅Ρ‰Π΅ Π½Π΅Ρ‚. Π£Π΄Π°Π»ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ:

DROP TABLE Employees
И пСрСсоздадим Π΅Π΅ со всСми созданными ограничСниями ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ CREATE TABLE:

CREATE TABLE Employees(ID int NOT NULL, Name nvarchar(30), Birthday date, Email nvarchar(30), PositionID int, DepartmentID int, HireDate date NOT NULL DEFAULT SYSDATETIME(), -- для DEFAULT я сдСлаю ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ CONSTRAINT PK_Employees PRIMARY KEY (ID), CONSTRAINT FK_Employees_DepartmentID FOREIGN KEY(DepartmentID) REFERENCES Departments(ID), CONSTRAINT FK_Employees_PositionID FOREIGN KEY(PositionID) REFERENCES Positions(ID), CONSTRAINT UQ_Employees_Email UNIQUE (Email), CONSTRAINT CK_Employees_ID CHECK (ID BETWEEN 1000 AND 1999))

INSERT Employees (ID,Name,Birthday,Email,PositionID,DepartmentID)VALUES (1000,N"Иванов И.И.","19550219","[email protected]",2,1), (1001,N"ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.","19831203","[email protected]",3,3), (1002,N"Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.","19760607","[email protected]",1,2), (1003,N"АндрССв А.А.","19820417","[email protected]",4,3)

НСмного ΠΏΡ€ΠΎ индСксы, создаваСмыС ΠΏΡ€ΠΈ создании ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ PRIMARY KEY ΠΈ UNIQUE

Как ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ Π²Ρ‹ΡˆΠ΅, ΠΏΡ€ΠΈ создании ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ PRIMARY KEY ΠΈ UNIQUE автоматичСски создались индСксы с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ названиями (PK_Employees ΠΈ UQ_Employees_Email). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ индСкс для ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° создаСтся ΠΊΠ°ΠΊ CLUSTERED, Π° для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… индСксов ΠΊΠ°ΠΊ NONCLUSTERED. Π‘Ρ‚ΠΎΠΈΡ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ понятиС кластСрного индСкса Π΅ΡΡ‚ΡŒ Π½Π΅ Π²ΠΎ всСх Π‘Π£Π‘Π”. Π’Π°Π±Π»ΠΈΡ†Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ кластСрный (CLUSTERED) индСкс. CLUSTERED – ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ записи Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ этому индСксу, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот индСкс ΠΈΠΌΠ΅Π΅Ρ‚ нСпосрСдствСнный доступ ΠΊΠΎ всСм Π΄Π°Π½Π½Ρ‹ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π³Π»Π°Π²Π½Ρ‹ΠΉ индСкс Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Если ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ Π³Ρ€ΡƒΠ±Π΅Π΅, Ρ‚ΠΎ это индСкс, ΠΏΡ€ΠΈΠΊΡ€ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. ΠšΠ»Π°ΡΡ‚Π΅Ρ€Π½Ρ‹ΠΉ индСкс – это ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½ΠΎΠ΅ срСдство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ запросов, ΠΏΠΎΠΊΠ° просто Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ это. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ кластСрный индСкс использовался Π½Π΅ Π² ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅, Π° для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ индСкса, Ρ‚ΠΎ ΠΏΡ€ΠΈ создании ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ NONCLUSTERED:

ALTER TABLE имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ADD CONSTRAINT имя_ограничСния PRIMARY KEY NONCLUSTERED(ΠΏΠΎΠ»Π΅1,ΠΏΠΎΠ»Π΅2,…)
Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° сдСлаСм индСкс ограничСния PK_Employees нСкластСрным, Π° индСкс ограничСния UQ_Employees_Email кластСрным. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΡƒΠ΄Π°Π»ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ограничСния:

ALTER TABLE Employees DROP CONSTRAINT PK_Employees ALTER TABLE Employees DROP CONSTRAINT UQ_Employees_Email
А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ создадим ΠΈΡ… с опциями CLUSTERED ΠΈ NONCLUSTERED:

ALTER TABLE Employees ADD CONSTRAINT PK_Employees PRIMARY KEY NONCLUSTERED (ID) ALTER TABLE Employees ADD CONSTRAINT UQ_Employees_Email UNIQUE CLUSTERED (Email)
Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Employees, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ записи ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΏΠΎ кластСрному индСксу UQ_Employees_Email:

SELECT * FROM Employees

ID Name Birthday Email PositionID DepartmentID HireDate
1003 АндрССв А.А. 1982-04-17 [email protected] 4 3 2015-04-08
1000 Иванов И.И. 1955-02-19 [email protected] 2 1 2015-04-08
1001 ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П. 1983-12-03 [email protected] 3 3 2015-04-08
1002 Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘. 1976-06-07 [email protected] 1 2 2015-04-08

Π”ΠΎ этого, ΠΊΠΎΠ³Π΄Π° кластСрным индСксом Π±Ρ‹Π» индСкс PK_Employees, записи ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΏΠΎ полю ID.

Но Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это всСго лишь ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΡƒΡ‚ΡŒ кластСрного индСкса, Ρ‚.ΠΊ. скорСС всСго ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Employees Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒΡΡ запросы ΠΏΠΎ полю ID ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ случаях, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½Π° сама Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² Ρ€ΠΎΠ»ΠΈ справочника.

Для справочников ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ цСлСсообразно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ кластСрный индСкс Π±Ρ‹Π» построСн ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ, Ρ‚.ΠΊ. Π² запросах ΠΌΡ‹ часто ссылаСмся Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ справочника для получСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, наимСнования (ДолТности, ΠžΡ‚Π΄Π΅Π»Π°). Π—Π΄Π΅ΡΡŒ вспомним, ΠΎ Ρ‡Π΅ΠΌ я писал Π²Ρ‹ΡˆΠ΅, Ρ‡Ρ‚ΠΎ кластСрный индСкс ΠΈΠΌΠ΅Π΅Ρ‚ прямой доступ ΠΊ строкам Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° ΠΎΡ‚ΡΡŽΠ΄Π° слСдуСт, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ любого столбца Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов.

ΠšΠ»Π°ΡΡ‚Π΅Ρ€Π½Ρ‹ΠΉ индСкс Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ полям, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° ΠΈΠ΄Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто.

Иногда Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΊΠ»ΡŽΡ‡ ΠΏΠΎ суррогатному полю, Π²ΠΎΡ‚ Π² этом случаС Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ CLUSTERED индСкс для Π±ΠΎΠ»Π΅Π΅ подходящСго индСкса ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ NONCLUSTERED ΠΏΡ€ΠΈ создании суррогатного ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°.

ΠŸΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠΌ

На Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΌΡ‹ познакомились со всСми Π²ΠΈΠ΄Π°ΠΌΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, Π² ΠΈΡ… самом простом Π²ΠΈΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π²ΠΈΠ΄Π° Β«ALTER TABLE имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ADD CONSTRAINT имя_ограничСния …»:
  • PRIMARY KEY – ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡;
  • FOREIGN KEY – настройка связСй ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ссылочной цСлостности Π΄Π°Π½Π½Ρ‹Ρ…;
  • UNIQUE – позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ;
  • CHECK – позволяСт ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…;
  • DEFAULT – позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ;
  • Π’Π°ΠΊ ΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ограничСния ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«ALTER TABLE имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ DROP CONSTRAINT имя_ограничСния».
Π’Π°ΠΊ ΠΆΠ΅ ΠΌΡ‹ частично Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ»ΠΈ Ρ‚Π΅ΠΌΡƒ индСксов ΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ понятиС кластСрный (CLUSTERED ) ΠΈ нСкластСрный (NONCLUSTERED ) индСкс.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… индСксов

Под ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ здСсь ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Ρƒ индСксы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½Π΅ для ограничСния PRIMARY KEY ΠΈΠ»ΠΈ UNIQUE.

Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΏΠΎ полю ΠΈΠ»ΠΈ полям ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

CREATE INDEX IDX_Employees_Name ON Employees(Name)
Π’Π°ΠΊ ΠΆΠ΅ здСсь ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΠΈ CLUSTERED, NONCLUSTERED, UNIQUE, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сортировки ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ поля ASC (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) ΠΈΠ»ΠΈ DESC:

CREATE UNIQUE NONCLUSTERED INDEX UQ_Employees_EmailDesc ON Employees(Email DESC)
ΠŸΡ€ΠΈ создании нСкластСрного индСкса ΠΎΠΏΡ†ΠΈΡŽ NONCLUSTERED ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Ρ‚.ΠΊ. ΠΎΠ½Π° подразумСваСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, здСсь ΠΎΠ½Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Π° просто, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΎΠΏΡ†ΠΈΠΈ CLUSTERED ΠΈΠ»ΠΈ NONCLUSTERED Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅.

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ индСкс ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

DROP INDEX IDX_Employees_Name ON Employees
ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ индСксы Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ограничСния, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² контСкстС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ CREATE TABLE.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° снова ΡƒΠ΄Π°Π»ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ:

DROP TABLE Employees
И пСрСсоздадим Π΅Π΅ со всСми созданными ограничСниями ΠΈ индСксами ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ CREATE TABLE:

CREATE TABLE Employees(ID int NOT NULL, Name nvarchar(30), Birthday date, Email nvarchar(30), PositionID int, DepartmentID int, HireDate date NOT NULL CONSTRAINT DF_Employees_HireDate DEFAULT SYSDATETIME(), ManagerID int, CONSTRAINT PK_Employees PRIMARY KEY (ID), CONSTRAINT FK_Employees_DepartmentID FOREIGN KEY(DepartmentID) REFERENCES Departments(ID), CONSTRAINT FK_Employees_PositionID FOREIGN KEY(PositionID) REFERENCES Positions(ID), CONSTRAINT FK_Employees_ManagerID FOREIGN KEY (ManagerID) REFERENCES Employees(ID), CONSTRAINT UQ_Employees_Email UNIQUE(Email), CONSTRAINT CK_Employees_ID CHECK(ID BETWEEN 1000 AND 1999), INDEX IDX_Employees_Name(Name))
НапослСдок вставим Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π°ΡˆΠΈΡ… сотрудников:

INSERT Employees (ID,Name,Birthday,Email,PositionID,DepartmentID,ManagerID)VALUES (1000,N"Иванов И.И.","19550219","[email protected]",2,1,NULL), (1001,N"ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² П.П.","19831203","[email protected]",3,3,1003), (1002,N"Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π‘.Π‘.","19760607","[email protected]",1,2,1000), (1003,N"АндрССв А.А.","19820417","[email protected]",4,3,1000)
Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² нСкластСрный индСкс ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ значСния ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ указания ΠΈΡ… Π² INCLUDE. Π’.Π΅. Π² Π΄Π°Π½Π½ΠΎΠΌ случаС INCLUDE-индСкс Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ кластСрный индСкс, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ индСкс ΠΏΡ€ΠΈΠΊΡ€ΡƒΡ‡Π΅Π½ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ значСния ΠΏΡ€ΠΈΠΊΡ€ΡƒΡ‡Π΅Π½Ρ‹ ΠΊ индСксу. БоотвСтствСнно, Ρ‚Π°ΠΊΠΈΠ΅ индСксы ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ запросов Π½Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ (SELECT), Ссли всС пСрСчислСнныС поля ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² индСксС, Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ понадобится. Но это СстСствСнно ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ индСкса, Ρ‚.ΠΊ. значСния пСрСчислСнных ΠΏΠΎΠ»Π΅ΠΉ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² индСксС.

Π’Ρ‹Ρ€Π΅Π·ΠΊΠ° ΠΈΠ· MSDN. ΠžΠ±Ρ‰ΠΈΠΉ синтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для создания индСксов

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON (column [ ASC | DESC ] [ ,...n ]) [ INCLUDE (column_name [ ,...n ]) ]

ΠŸΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠΌ

Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (SELECT), Π½ΠΎ индСксы ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‚.ΠΊ. послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ систСмС Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ всС индСксы для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ случаС Π½Π°ΠΉΡ‚ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π·ΠΎΠ»ΠΎΡ‚ΡƒΡŽ сСрСдину, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π»Π° Π½Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. БтратСгия ΠΏΠΎ созданию индСксов ΠΈ ΠΈΡ… количСства ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, насколько часто ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ DDL

Как ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, язык DDL Π½Π΅ Ρ‚Π°ΠΊ слоТСн, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд. Π—Π΄Π΅ΡΡŒ я смог ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ практичСски всС Π΅Π³ΠΎ основныС конструкции, опСрируя всСго трСмя Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ.

Π“Π»Π°Π²Π½ΠΎΠ΅ - ΠΏΠΎΠ½ΡΡ‚ΡŒ ΡΡƒΡ‚ΡŒ, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π΄Π΅Π»ΠΎ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ.

Π£Π΄Π°Ρ‡ΠΈ Π²Π°ΠΌ Π² освоСнии этого Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ языка ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ SQL.

Книга Алана Π‘ΡŒΡŽΠ»ΠΈ, экспСрта ΠΏΠΎ языку SQL, – прСкрасный ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π΅Ρ‰Π΅ Π½Π΅ Π·Π½Π°Π΅Ρ‚, Π½ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ этот язык. Книга Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ приобрСсти Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ знания, Π½ΠΎ ΠΈ расскаТСт ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто употрСбляСмых ΠΌΠΎΡ‰Π½Ρ‹Ρ… срСдствах языка SQL, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌΠΈ программистами. МногиС ΠΊΠ½ΠΈΠ³ΠΈ, посвящСнныС SQL, Π³Ρ€Π΅ΡˆΠ°Ρ‚ скучным ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ основ. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ Π°Π²Ρ‚ΠΎΡ€ Π² стилС ΠΆΠΈΠ²ΠΎΠ³ΠΎ рассказа обсуТдаСт SQL-выраТСния ΠΈ Π±Π»ΠΎΠΊΠΈ, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ условий, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ посрСдством соСдинСния Ρ‚Π°Π±Π»ΠΈΡ† ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ запросы ΠΊ нСскольким Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ, рассматриваСт Π½Π°Π±ΠΎΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² запросах, дСмонстрируСт встроСнныС ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΈ Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ подзапросы. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаны Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ соСдинСний Ρ‚Π°Π±Π»ΠΈΡ†, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ условной Π»ΠΎΠ³ΠΈΠΊΠΈ, Ρ€Π°Π±ΠΎΡ‚Π° с транзакциями, индСксы ΠΈ ограничСния. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ изучСния SQL – это ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, Π°Π²Ρ‚ΠΎΡ€ создаСт ΡƒΡ‡Π΅Π±Π½ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… MySQL ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ мноТСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… запросов, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… вСсь тСорСтичСский ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π». ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π½Π΅ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ просто Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Книга ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π‘Π”, администраторам Π‘Π” ΠΈ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ создаСт ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹.

ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ относится ΠΊ ΠΆΠ°Π½Ρ€Ρƒ ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹: ΠΏΡ€ΠΎΡ‡Π΅Π΅. На нашСм сайтС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ "Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ SQL" Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ fb2, rtf, epub, pdf, txt ΠΈΠ»ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½. Π—Π΄Π΅ΡΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΡ‚Π·Ρ‹Π²Π°ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ, ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… с ΠΊΠ½ΠΈΠ³ΠΎΠΉ, ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΡ… ΠΌΠ½Π΅Π½ΠΈΠ΅. Π’ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ нашСго ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΡƒΠΏΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ Π² Π±ΡƒΠΌΠ°ΠΆΠ½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅.