Мова сіквел. Ілюстрований самовчитель SQL для початківців. Інтерактивний та вкладений SQL

Програми клієнти

Протокол TFTP

TFTP -теж протокол FTP, але поверх протоколу UDP (тобто протокол без гарантованої доставки). Може використовуватися в локальній мережі, де швидкість передачі важливіша. Насправді використовується рідко.

FTP -програма запускається з командного рядка.

Windows Comander- може працювати як FTP-клієнт. Дозволяє працювати з віддаленими каталогами як і з локальними.

NetVampire -Спеціалізований FTP-клієнт, який дозволяє качати великі файли та качати поганими каналами.

SQL (Structured Query Language) – це структурована мова запитів до реляційних баз даних. Цією мовою можна формулювати вирази (запити), які витягують необхідні дані, модифікують їх, створюють таблиці та змінюють їх структури, визначають права доступу до даних та багато іншого.

Запити виконуються системою управління базою даних (СУБД). Якщо ви не є фахівцем з розробки та адміністрування баз даних, то цілком можете бути їх користувачем, який переглядає або змінює дані в наявних таблицях. У багатьох випадках ці та інші операції з базою даних виконуються за допомогою спеціальних програм, що надають користувачеві зручний інтерфейс. Зазвичай додатки пишуться спеціальними мовами програмування (С, Pascal, Visual Basic тощо) і найчастіше створюються за допомогою інтегрованих середовищ розробки, наприклад, Delphi, C++ Builder та ін. Однак доступ до бази даних можна отримати і без них - за допомогою лише SQL. Слід зазначити також, як і спеціалізовані додатки зазвичай використовують SQL-фрагменты коду при зверненнях до бази даних.

Таким чином, SQL - поширена стандартна мова роботи з реляційними базами даних. Синтаксис цієї мови досить простий, щоб його могли використовувати рядові користувачі, а не лише програмісти. В даний час звичайний користувач комп'ютера повинен володіти принаймні текстовим редактором (наприклад, Microsoft Word) та електронними таблицями (наприклад, Microsoft Excel). Непогано, якщо він також вміє скористатися базами даних. Різних СУБД існує багато, а універсальний засіб роботи з базами даних один - SQL. Знання SQL, хоча його основ, і вміння його застосовувати для пошуку та аналізу даних є фундаментальної частиною комп'ютерної грамотності навіть пересічних користувачів.

Перші розробки систем управління реляційними базами даних (реляційних СУБД) були виконані в IBM на початку 1970-х років. Тоді ж була створена мова даних, призначена для роботи в цих системах. Експериментальна версія цієї мови називалася SEQUEL – від англ. Structured English QUEry Language (структурована англійська запитів). Однак офіційна версія була названа коротшою - SQL (Structured Query Language). Точніше, SQL - це підмова даних, оскільки СУБД містить інші мовні засоби.

1981 року IBM випускає реляційну СУБД SQL/DS. На той час компанія Relation Software Inc. (Сьогодні це Oracle Corporation) вже випустила свою реляційну СУБД. Ці продукти відразу стали стандартом систем, призначених для управління базами даних. До складу цих продуктів увійшов і SQL, який фактично став стандартом для підмов даних. Виробники інших СУБД випустили свої версії SQL. Вони були як основні можливості продуктів IBM. Щоб отримати деяку перевагу для "своєї" СУБД, виробники вводили деякі розширення SQL. Разом з тим почалися роботи зі створення загальновизнаного стандарту SQL.

У 1986 році Американський національний інститут стандартів (American National Standards Institute, ANSI) випустив офіційний стандарт SQL-86, який у 1989 році був оновлений і отримав нову назву SQL-89. 1992 року цей стандарт був названий SQL-92 (ISO/IEC 9075:1992). Останньою версією стандарту SQL є SQL:2003 (ISO/IEC 9075X:2003).

Будь-яка реалізація SQL у конкретній СУБД дещо відрізняється від стандарту, відповідність якому оголошено виробником. Так, багато СУБД (наприклад, Microsoft Access 2003, PostgreSQL 7.3) підтримують SQL-92 не повною мірою, а лише з деяким рівнем відповідності. Крім того, вони підтримують елементи, які не входять до стандарту. Однак розробники СУБД прагнуть того, щоб нові версії їх продуктів якомога більшою мірою відповідали стандарту SQL.

Увага.У цьому посібнику описані елементи SQL2003, не всі з яких підтримуються існуючими СУБД. Перш ніж застосовувати їх на практиці, слід переконатися, що вони працюватимуть у вашій СУБД. Про це можна дізнатися з технічної документації. Більшість описаних елементів відповідають більш раннім версіям SQL, зокрема, широко поширеному SQL-92.

SQL замислювався як простий мову запитів до реляційної бази даних, близький до природного (точніше, до англійської) мови. Передбачалося, що близькість формою до природної мови зробить SQL засобом, доступним широкого застосування звичайними користувачами баз даних, а чи не лише програмістами. Спочатку SQL не містив жодних керуючих структур, властивих звичайним мовам програмування. Запити, синтаксис яких досить простий, вводилися прямо з консолі послідовно один за одним і в цій же послідовності виконувались. Однак SQL так і не став інструментом банківських службовців, продавців авіа- та залізничних квитків, економістів та інших службовців різних фірм, які використовують інформацію, що зберігається в базах даних. Для них простий SQL виявився надто складним та незручним, незважаючи на свою близькість до природної мови питань.

На практиці з базою даних зазвичай працюють за допомогою додатків, написаних програмістами на процедурних мовах, наприклад, С, Visual Basic, Pascal, Java і ін. Часто програми створюються в спеціальних середовищах візуальної розробки, таких як Delphi, Microsoft Access, Visual dBase і т.д. п. При цьому розробнику програми практично не доводиться писати коди програм, оскільки за нього це робить система розробки. У всякому разі, робота з програмним кодом виявляється мінімальною. Ці програми мають зручний графічний інтерфейс, який не змушує користувача безпосередньо вводити запити на мові SQL. Замість нього це робить програму. Втім, додаток може використовувати, так і не використовувати SQL для звернення до бази даних. SQL не єдиний, хоч і дуже ефективний засіб отримання, додавання та зміни даних, і якщо є можливість використовувати його в додатку, то це слід робити.

Реляційні бази даних можуть існувати і дійсно існують незалежно від додатків, що забезпечують інтерфейс користувача. Якщо з якихось причин такого інтерфейсу немає, то доступ до бази даних можна здійснити за допомогою SQL, використовуючи консоль або якусь програму, за допомогою якої можна з'єднатися з базою даних, ввести та відправити SQL-запит (наприклад, Borland SQL Explorer ).

Мова SQL вважають декларативною (описовою) мовою, на відміну від мов, якими пишуться програми. Це означає, що вирази на мові SQL описують, що потрібно зробити, а чи не якимось чином.

Наприклад, для того щоб вибрати з таблиці співробітники відомості про прізвища та посади співробітників 102 відділу, достатньо виконати наступний запит:

SELECT Прізвище, Посада FROM Співробітники WHERE Відділ = 102;

По-російськи цей вираз звучить так:

ВИБРАТИ Прізвище, Посада З Співробітники ЗА УМОВИ, ЩО Відділ = 102;

Щоб змінити значення " Іванов "на" Петров стовпця Прізвище , достатньо виконати наступний запит:

UPDATE Співробітники SET Прізвище = "Петрів" WHERE Прізвище = "Іванів";

По-російськи цей вираз виглядає так:

ОБНОВИТИ Співробітники УСТАНОВИВ Прізвище РІВНИМ " Петров "ДЕ Прізвище = "Іванов" ;

Вам не потрібно докладно описувати дії, які має виконати СУБД, щоб вибрати з таблиці зазначені у запиті дані. Ви просто описуєте, що хочете отримати. В результаті виконання запиту СУБД повертає таблицю, що містить дані, що ви запросили. Якщо базі даних немає даних, відповідних запиту, буде повернуто порожня таблиця.

Однак останні версії SQL підтримують оператори керування обчисленнями, властиві процедурним мовам керування (оператори умовного переходу та циклу). Тому SQL зараз це не суто декларативна мова.

Крім вибірки, додавання, зміни та видалення даних з таблиць, SQL дозволяє виконувати всі необхідні дії щодо створення, модифікації та забезпечення безпеки баз даних. Всі ці можливості розподілені між трьома компонентами SQL:

· DML (Data Manipulation Language - мова маніпулювання даними ) призначений для підтримки бази даних: вибору ( SELECT ), додавання ( INSERT ), зміни ( UPDATE ) та видалення ( DELETE ) даних із таблиць. Ці оператори (команди) можуть містити вирази, у тому числі обчислювані, а також підзапити - запити, що містяться всередині іншого запиту. Загалом вираз запиту може бути настільки складним, що й не скажеш, що він робить. Однак складний запит можна розбити подумки на частини, які легше аналізувати. Аналогічно, складні запити створюються відносно простих для розуміння виразів (підзапитів).

· DDL (Data Definition Language - мова визначення даних ) призначений для створення, модифікації та видалення таблиць і всієї бази даних. Прикладами операторів, що входять до DDL, є CREATE TABLE (Створити Таблицю)," CREATE VIEW (Створити уявлення), CREATE SHEMA (Створити схему), ALTER TABLE (Змінити таблицю), DROP (Видалити) та ін.

· DCL (Data Control Language - мова управління даними ) призначений для забезпечення захисту бази даних від різноманітних пошкоджень. СУБД передбачає деякий захист даних автоматично. Однак у ряді випадків слід передбачити додаткові заходи, що надаються DCL.

Сьогодні ми звернемося до комп'ютерної теми, тому ця стаття представлятиме особливий інтерес насамперед для програмістів. Ми з вами, дорогий читачу, поговоримо про мову структурованих запитів, яку в англійському варіанті шифрують як SQL (Structured Query Language). Отже, ближчий до справи. Зараз поговоримо про те, що таке SQL і для чого він потрібен.

Мова структурованих запитів – це універсальна мова для створення, модифікації та управління інформацією, що входить до складу реляційних баз даних. Спочатку SQL був основним способом роботи з даними. За допомогою нього користувач міг виконувати такі дії:

  • створення нової таблиці у базі даних (БД);
  • додавання нових записів до існуючих таблиць;
  • редагування записів;
  • повне видалення записів;
  • вибір запису з різних таблиць відповідно до заданих умов;
  • зміна виду та структур однієї чи кількох таблиць.

У міру свого розвитку SQL сильно перетворився і збагатився новими корисними функціями, в результаті чого, все більше став схожим на справжню мову програмування. На сьогоднішній день SQL - це єдиний механізм, який здатний зв'язати прикладне програмне забезпечення та базу даних. Ось що таке SQL.

SQL має кілька видів запитів. Варто зазначити, що будь-який запит SQL має на увазі або запит даних з потрібної бази, або звернення до бази з обов'язковою зміною в ній даних. У зв'язку з цим прийнято виділяти такі види запитів:

  • створення чи зміна у базі даних нових чи вже існуючих у ній об'єктів;
  • отримання даних;
  • додавання нових даних до таблиці;
  • видалення даних;
  • звернення до системи управління базами даних (СУБД).

Трохи про переваги та недоліки даної системи роботи з даними.

Переваги SQL

  • Незалежність від існуючої у цій системі СУБД. Тексти SQL є універсальними багатьом СУБД. Однак це правило поширюється на прості завдання, пов'язані з обробкою даних таблицях.
  • Наявність стандартів SQL сприяє "стабілізації" мови.
  • Декларативність. Ця перевага полягає в тому, що при роботі з даними програміст вибирає тільки ту інформацію, яка повинна бути змінена або модифікована. Те, як це буде зроблено, в автоматичному режимі вирішується на програмному рівні самої СУБД.

Недоліки SQL

  • SQL відповідає реляційної моделі побудови даних. У цьому плані SQL замінює мову Tutorial D, яка є істинно реляційною.
  • Складність SQL визначає його призначення. Мова настільки складна, що ним може користуватися лише програміст. Хоча спочатку він замислювався як засіб управління, з яким працюватиме звичайний користувач.
  • Деяка невідповідність стандартів. Багато компаній, що розробляють СУБД, додають свої особливості у діалект мови SQL, що суттєво впливає на універсальність мови.

І останнє: що таке SQL Server? Це система управління базами даних, яка була розроблена у стінах відомої компанії Microsoft. Ця система успішно працює з БД, як домашніх персональних комп'ютерів, і з великими базами даних великих підприємств. У цьому сегменті ринку система SQL Server є більш ніж конкурентоспроможною.

Ну і буквально двома словами згадаємо про MySQL. Ця програма, як правило, використовується як сервер, до якого надходять звернення від локальних або віддалених клієнтів. MySQL також можна включати в автономні програми. Слід зазначити, що цей додаток є одним з найбільш гнучких систем управління даними, так як включає безліч різних типів таблиць.

Переклад: Alexandr Pyramidin

Ця стаття знайомить вас із структурою мови SQL, а також з деякими загальними поняттями, такими як типи даних, які поля можуть містити, та деякими неоднозначностями, які існують у SQL. Ви не повинні запам'ятовувати будь-які подробиці, згадані в цій статті. Тут дано лише короткий огляд; багато подробиць дано, щоб згодом звертатися до них у міру оволодіння мовою.

Як працює SQL?

SQL це мова, орієнтована спеціально на реляційні бази даних (РБД). Він виконує велику роботу, яку ви повинні були б робити, якби використовували універсальну мову програмування, наприклад, C. Щоб сформувати РБД на C, вам необхідно було б почати з нуля. Ви повинні були б визначити об'єкт, званий таблицею, яка могла б збільшуватися, щоб мати будь-яке число рядків, а потім поступово створювати процедури для вставки і вилучення значень.

Якби ви захотіли знайти деякі конкретні рядки, вам необхідно було б виконати по кроках процедуру, подібну до наступної:

  • Розглянути рядок таблиці.
  • Виконати перевірку: чи є цей рядок одним із рядків, який вам потрібний.
  • Якщо це так, зберегти її десь, поки вся таблиця не буде перевірена.
  • Перевірити, чи є інші рядки у таблиці.
  • Якщо є, повернутись на крок 1.
  • Якщо рядків немає, вивести всі значення, збережені в кроці 3.

(Звичайно, це не фактичний набір C-команд, а лише логіка кроків, які мали б бути включені до реальної програми.) SQL зробить все це за вас. Команди SQL можуть працювати з усіма групами таблиць як з єдиним об'єктом і можуть обробляти будь-яку кількість інформації, витягнутої чи отриманої їх у вигляді єдиного модуля.

Що робить ANSI?

Як ми вже сказали у вступі, стандарт SQL визначається за допомогою коду ANSI (Американський Національний Інститут Стандартів). SQL не винаходив ANSI. Це, по суті, винахід IBM. Але інші компанії підхопили SQL відразу. Принаймні одна компанія (Oracle) відвоювала IBM право на ринковий продаж SQL-продуктів.

Після того, як з'явився ряд конкуруючих програм SQL на ринку, ANSI визначив стандарт, до якого вони мають бути наведені. (Визначення таких стандартів є функцією ANSI). Однак після цього виникли деякі проблеми. Виникли вони внаслідок стандартизації ANSI у вигляді деяких обмежень. Так як не завжди ANSI визначає те, що є найкориснішим, то програми намагаються відповідати стандарту ANSI, не дозволяючи йому обмежувати їх надто сильно. Це, своєю чергою, веде до випадкових неузгодженостей. Програми Баз даних зазвичай надають ANSI SQL додаткові особливості і часто послаблюють багато обмежень. Тому розповсюджені різновиди ANSI будуть також розглянуті. Хоча ми, очевидно, не зможемо розглянути будь-який виняток чи різновид, вдалі ідеї мають тенденцію до впровадження та використання у різних програмах, навіть коли вони не визначені стандартом ANSI. ANSI це вид мінімального стандарту, і ви можете робити більше, ніж він дозволяє, хоч і повинні виконувати його вказівки при виконанні завдань, які він визначає.

Інтерактивний та вкладений SQL

Є два SQL: Інтерактивний та Вкладений. Здебільшого обидві форми працюють однаково, але використовуються по-різному. Інтерактивний SQL використовується для функціонування безпосередньо в базі даних, щоб робити висновок для використання замовником. У цьому SQL - коли ви введете команду, вона зараз виконається, і ви зможете відразу побачити висновок (якщо він взагалі вийде).

Вкладений SQL складається з команд SQL, розміщених усередині програм, які зазвичай написані іншою мовою (типу КОБОЛу або ПАСКАЛю). Це робить такі програми більш потужними та ефективними.

Однак, допускаючи ці мови, доводиться мати справу зі структурою SQL та стилем управління даних, який потребує деяких розширень інтерактивного SQL. Передача SQL-команд у вкладений SQL є пропускається ("passed off") для змінних або параметрів, що використовуються програмою, в яку вони були вкладені.

У цій книзі ми представлятимемо SQL в інтерактивній формі. Це дасть нам можливість обговорювати команди та їхні дії, не переймаючись тим, як вони пов'язані за допомогою інтерфейсу з іншими мовами. Інтерактивний SQL - це форма, найбільш корисна для непрограмістів. Все, що ви дізнаєтесь щодо інтерактивного SQL, в основному застосовується і до вкладеної форми. Зміни, необхідні використання вкладеної форми, будуть розглянуті в останньому розділі цієї книги.

Підрозділи SQL

І в інтерактивній, і у вкладених формах SQL є численні частини чи підрозділи. Так як ви, ймовірно, зіткнетеся з цією термінологією під час читання SQL, ми дамо деякі пояснення. На жаль, ці терміни не використовуються у всіх реалізаціях. Вони вказані ANSI і корисні на концептуальному рівні, але більшість SQL-програм практично не обробляють їх окремо, тому вони, по суті, стають функціональними категоріями команд SQL.

  • DDL (Мова визначення даних) - так звана Мова Опису Схеми в ANSI - складається з команд, які створюють об'єкти (таблиці, індекси, перегляди і так далі) в базі даних.
  • DML (Мова маніпулювання даними) - це набір команд, які визначають, які значення представлені в таблицях у будь-який момент часу.
  • DCD (Мова Управління Даними) складається із засобів, які визначають, чи дозволити користувачеві виконувати певні дії, чи ні. Вони є складовими частинами DDL у ANSI.

Не забувайте ці назви. Це не різні мови, а розділи команд SQL, згруповані за їх функціями.

Різні типи даних

Не всі типи значень, які можуть бути в полях таблиці, логічно однакові. Найбільш очевидна відмінність - між числами та текстом. Ви не можете поміщати числа в алфавітному порядку або віднімати одне ім'я з іншого.

Так як системи з РБД базуються на зв'язках між фрагментами інформації, різні типи даних повинні відрізнятися один від одного так, щоб відповідні процеси та порівняння могли бути в них виконані. SQL це робиться за допомогою призначення кожному полю типу даних, що вказує тип значення, яке це поле може містити. Усі значення у цьому полі повинні мати однаковий тип. У таблиці Замовників, наприклад cname і city містять рядки тексту для оцінки, а snum і cnum це числа. З цієї причини ви не можете ввести значення Highest (Найвищий) або None (Ніякий) у полі rating, яке має числовий тип даних. Це обмеження успішне, оскільки воно накладає деяку структурність на ваші дані. Ви часто порівнюєте деякі або всі значення в даному полі, тому ви можете виконувати дію тільки на певних рядках, а не на всіх. Ви не можете зробити це, якби значення полів мали змішаний тип даних.

На жаль, визначення цих типів даних є основною областю, де більшість комерційних програм БД і офіційний стандарт SQL який завжди збігаються. ANSI SQL-стандарт розпізнає лише text і number, тоді як більшість комерційних програм використовують інші спеціальні типи. Такі як DATA (ДАТА) та TIME (ЧАС) - фактично, майже стандартні типи (хоча точний формат їх змінюється). Деякі пакети також підтримують такі типи, як, наприклад, MONEY (ГРОШІ) та BINARY (ДВОЇЧНИЙ). (MONEY це спеціальна "валютна" система обчислення, що використовується комп'ютерами.)

Вся інформація в комп'ютері передається двійковими числами, а потім перетворюється на інші системи, щоб ми могли легко використовувати їх і розуміти.

ANSI визначає кілька числових типів, різницю між якими досить тонкі, і іноді їх плутають. Дозволені ANSI-типи даних перелічені в Додатку B. Складність числових типів ANSI можна, принаймні частково, пояснити зусиллям зробити вкладений SQL сумісним з іншими мовами. Два типи чисел ANSI - INTEGER (ЦЕЛЕ ЧИСЛО) і DECIMAL (ДЕСЯТЕРИЧНЕ ЧИСЛО) (які можна скорочувати як INT і DEC, відповідно), будуть адекватні для наших цілей, так само як і для більшості практичних ділових прикладних програм. Природно, що тип ЦІЛОЕ можна уявити як ДЕСЯТЕРИЧНЕ ЧИСЛО, яке містить ніяких цифр праворуч від десяткової точки.

Тип для тексту – CHAR (або СИМВОЛ), що відноситься до рядка тексту. Поле типу CHAR має довжину, яка визначається максимальним числом символів, які можуть бути введені в це поле. Більшість реалізацій також мають нестандартний тип, званий VARCHAR (ЗМІННЕ ЧИСЛО СИМВОЛІВ), який є текстовим рядком і може мати будь-яку довжину до певного реалізацією максимуму (зазвичай 254 символи). Значення CHARACTER і VARCHAR включаються в одиночні лапки як "текст". Відмінність між CHAR та VARCHAR у тому, що CHAR повинен резервувати достатню кількість пам'яті для максимальної довжини рядка, а VARCHAR розподіляє пам'ять у міру потреби.

Символьні типи складаються із усіх друкованих символів, включаючи числа. Однак число 1 не те саме, що символ "1". Символ "1" - тільки друкований фрагмент тексту, який не визначається системою як числове значення 1. Наприклад 1 + 1 = 2, але "1" + "1" не дорівнює "2". Символьні значення зберігаються в комп'ютері як двійкові значення, але вони відображаються як друкований текст.

Перетворення виконується за форматом, який визначається системою, яку ви використовуєте. Цей формат перетворення буде одним з двох стандартних типів (можливо, з розширеннями), що використовуються в комп'ютерних системах: ASCII-код (використовується у всіх персональних та малих комп'ютерах) та EBCDIC-код (Розширеному Двійково-Десятирічному Код Обміну Інформації) (використовується у великих комп'ютерах). Певні операції, такі як впорядкування в алфавітному порядку значень поля, змінюватимуться разом із форматом.

Ми повинні стежити за ринком, а не за ANSI у використанні типу DATE (ДАТА). (У системі, яка не розпізнає тип ДАТА, ви, звичайно, можете оголосити дату як символьне чи числове поле, але це зробить більшість операцій більш трудомісткими.)

Ви повинні переглянути свою документацію пакет програм, який ви будете використовувати, щоб з'ясувати точно, які типи даних він підтримує.

SQL. Неузгодженості.

Ви можете зрозуміти з попереднього обговорення, що є окремі окремі невідповідності між продуктами світу SQL. SQL з'явився з комерційного світу БД як інструмент і був пізніше перетворений на стандарт ANSI. На жаль, ANSI не завжди визначає найкорисніше, тому програми намагаються відповідати стандарту ANSI, не дозволяючи йому обмежувати їх надто сильно. ANSI - вид мінімального стандарту - ви можете робити більше, ніж він це дозволяє, але ви повинні бути здатні отримати ті ж самі результати при виконанні того ж завдання.

ЩО ТАКЕ "КОРИСТУВАЧ"?

SQL зазвичай знаходиться в комп'ютерних системах, які мають більше ніж одного користувача і, отже, повинен розрізняти їх (ваше сімейство PC може мати будь-яке число користувачів, але воно зазвичай не має способів відрізняти одного користувача від іншого).

Зазвичай у системі кожен користувач має певний вид коду перевірки прав, який ідентифікує його (термінологія змінюється). На початку сеансу з комп'ютером користувач входить до системи (реєструється), повідомляючи комп'ютера, хто цей користувач ідентифікується за допомогою певного ID (Ідентифікатора). Будь-яка кількість людей, які використовують ID доступу, є окремими користувачами; і, аналогічно, одна людина може представляти велику кількість користувачів (у різний час), використовуючи різні ідентифікатори доступу до SQL. Дії в більшості середовищ SQL приведені до спеціального Ідентифікатора доступу, який точно відповідає певному користувачеві. Таблиця або інший об'єкт належить користувачеві, який має повну владу. Користувач може або може не мати привілеїв на виконання дії над об'єктом. Для наших цілей ми домовимося, що будь-який користувач має необхідні привілеї для виконання будь-якої дії, доки ми не повернемось спеціально до обговорення привілеїв у Розділі 22. Спеціальне значення USER (КОРИСТУВАЧ) може використовуватись як аргумент у команді. Воно вказує на доступний Ідентифікатор користувача, який видав команду.

Умовні позначення та термінологія

Ключові слова це слова, які мають особливе значення в SQL. Вони може бути командами, але з текстом і іменами об'єктів. Ми виділятимемо ключові слова, друкуючи їх ВЕЛИКИМИ ЛІТЕРАМИ. Ви повинні бути уважними, щоб не плутати ключові слова з термінами.

SQL має певні спеціальні терміни, які використовуються для його опису. Серед них такі слова як "запит", "пропозиція" та "предикат", які є найважливішими в описі та розумінні мови, але не означають щось самостійне для SQL.

Команди або пропозиції є інструкціями, за допомогою яких ви звертаєтеся до SQL SQL.

Команди складаються з однієї чи більше окремих логічних частин, які називаються пропозиціями.

Пропозиції починаються ключовим словом і складаються з ключових слів та аргументів. Наприклад, пропозиції, з якими ви можете стикатися, це "FROM Salespeope" та "WHERE city = "London"". Аргументи завершують чи змінюють значення пропозиції. У прикладах вище, Salespeople – аргумент, а FROM – ключове слово пропозиції FROM. Аналогічно " city = " London " " - аргумент пропозиції WHERE.

Об'єкти це структури БД, яким дано імена і які зберігаються у пам'яті. Сюди відносяться базові таблиці, уявлення та індекси.

Щоб показати вам, як формуються команди, ми робитимемо це на прикладах. Є, проте, більш формальний метод опису команд, який використовує стандартизовані умовні позначення. Ми будемо використовувати його в наступних розділах для зручності, щоб розуміти ці умовні позначення, якщо ви зіткнетеся з ними в інших SQL-документах.

Квадратні дужки () будуть вказувати частини, які можуть не використовуватися, а крапки (...) вказують, що все, що передує їм, може повторюватися будь-яке число разів. Слова в кутових дужках () - спеціальні терміни, які пояснюють, що вони являють собою. Ми спростили стандартну термінологію SQL, але без погіршення його розуміння.

Резюме

Ми коротко розглянули у цьому розділі основи. Але нашим наміром і було - швидко розглянути основи SQL так, щоб ви змогли охопити весь обсяг інформації.

Тепер ви знаєте дещо щодо SQL: якою є його структура, як він використовується, як він представляє дані і як вони визначаються (і деякі неузгодженості, що з'являються при цьому), деякі умовні позначення та терміни, які використовуються для їх опису. Все це - дуже великий обсяг інформації для одного розділу; ми не очікуємо, що ви запам'ятали всі ці подробиці, але ви зможете повернутися до них пізніше, якщо знадобиться.

МОВА SQL: МАНІПУЛЮВАННЯ ДАНИМИ

В ЦІЄЇ ЛЕКЦІЇ...

· Призначення мови Structure Query Language (SQL) та її особлива роль під час роботи з базами даних.

· Історія виникнення та розвитку мови SQL.

· Запис операторів мови SQL.

· Вибір інформації з баз даних за допомогою оператора SELECT.

· Побудова операторів SQL, що характеризуються наступними особливостями:

· Застосування конструкції WHERE для вибірки рядків, що задовольняють різним умовам;

· Сортування результатів виконання запиту за допомогою конструкції ORDER BY;

· Використання агрегують функцій мови SQL;

· Групування обраних даних за допомогою конструкції GROUP BY;

· Застосування підзапитів;

· Застосування сполук таблиць;

· Застосування операцій з множинами (UNION, INTERSECT, EXCEPT).

· Внесення змін до бази даних за допомогою операторів INSERT, UPDATE та DELETE.

Однією з мов, що з'явилися в результаті розробки реляційної моделі даних, є SQL, який в даний час набув дуже широкого поширення і фактично перетворився на стандартну мову реляційних баз даних. Стандарт на мову SQL був випущений Національним інститутом стандартизації США (ANSI) у 1986 році, а в 1987 році Міжнародна організація зі стандартизації (ISO) прийняла цей стандарт як міжнародний. В даний час мова SQL підтримується сотнями СУБД різних типів, розроблених для різноманітних обчислювальних платформ, починаючи від персональних комп'ютерів і закінчуючи мейнфреймами.

У цій лекції використовується визначення мови SQL, дане у стандарті ISO.

Введення в мову SQL

У цій частині розглянемо призначення мови SQL, познайомимося з його історією і проаналізуємо причини, з яких він придбав в даний час настільки велике значення для баз даних.

Призначення мови SQL

Будь-яка мова, призначена для роботи з базами даних, повинна надавати користувачеві такі можливості:

· Створювати бази даних та таблиці з повним описом їх структури;



· Виконувати основні операції маніпулювання даними, такі як вставка, модифікація та видалення даних з таблиць;

· Виконувати прості та складні запити.

Крім того, мова роботи з базами даних повинна вирішувати всі вищезазначені завдання при мінімальних зусиллях з боку користувача, а структура та синтаксис його команд повинні бути досить прості та доступні для вивчення.

І, нарешті, мова може бути універсальним, тобто. відповідати деякому визнаному стандарту, що дозволить використовувати той самий синтаксис і структуру команд при переході від однієї СУБД, до іншої. Сучасний стандарт мови SQL задовольняє майже всім цим вимогам.

SQL є прикладом мови перетворення даних, або мови, призначеного для роботи з таблицями з метою перетворення вхідних даних до необхідного вихідного вигляду. Мова SQL, визначена стандартом ISO, має два основні компоненти:

· Мова Data Definition Language (DDL), призначений для визначення структур бази даних та управління доступом до даних;

· Мова Data Manipulation Language (DML), призначена для вибірки та оновлення даних.

До появи стандарту SQL3 мова SQL включала лише команди визначення та маніпулювання даними; у ньому були відсутні команди управління ходом обчислень. Іншими словами, в цій мові не було команд IF...THEN...ELSE, GO TO, DO...WHILE та будь-яких інших, призначених для управління ходом обчислювального процесу. Подібні завдання мали вирішуватися програмним шляхом, з допомогою мов програмування чи управління завданнями, чи інтерактивно, внаслідок дій, виконуваних самим користувачем. Через таку незавершеність, з погляду організації обчислювального процесу, мова SQL міг використовуватися двома способами. Перший передбачав інтерактивну роботу, що полягає у введенні користувачем терміналу окремих операторів SQL. Другий полягав у впровадженні операторів SQL у програми процедурними мовами.

Переваги мови SQL3, формальне визначення якої прийнято 1999 року:

· Мова SQL відносно проста у вивченні.

· Це непроцедурна мова, тому в ній необхідно вказувати, яка інформація має бути отримана, а не як її можна отримати. Інакше кажучи, мова SQL не вимагає вказівки методів доступу до даних.

· Як і більшість сучасних мов, SQL підтримує вільний формат запису операторів. Це означає, що під час введення окремі елементи операторів не пов'язані з фіксованими позиціями на екрані.

· Структура команд задається набором ключових слів, що є звичайними словами англійської мови, такі як CREATE TABLE -Створити таблицю, INSERT - Вставити, SELECT -Вибрати.

Наприклад:

CREATE TABLE [Продажі] ((S), [Найменування об'єкта] VARCHAR(15), [Вартість] DECIMAL(7,2));

INSERT INTO [Об'єкт] VALUES ("SG16", "Brown", 8300);

SELECT , [Найменування об'єкта], [Вартість];

FROM [Продаж]

WHERE [Вартість] > 10000;

· Мова SQL може використовуватися широким колом користувачів, включаючи адміністраторів баз даних (АБД), керівний персонал компанії, прикладних програмістів та безліч інших кінцевих користувачів різних категорій.

В даний час для мови SQL існують міжнародні стандарти, що формально визначають її як стандартну мову створення та маніпулювання реляційними базами даних, якою вона фактично і є.

Історія мови SQL

Історія реляційної моделі даних, і опосередковано мови SQL, почалася в 1970 році з публікації основної статті Е. Ф. Кодда, який на той час працював у дослідницькій лабораторії корпорації IBM у Сан-Хосе. У 1974 році Д. Чемберлен, який працював у тій же лабораторії, публікує визначення мови, що отримала назву "Structured English Query Language", або SEQUEL. У 1976 році було випущено перероблену версію цієї мови, SEQUEL/2; згодом його назву довелося змінити на SQL з юридичних міркувань – абревіатура SEQUEL вже використовувалась філологами. Але до цього часу багато хто, як і раніше, вимовляє абревіатуру SQL як "сіквел", хоча офіційно її рекомендується читати як "ес-кю-ел".

У 1976 році на базі мови SEQUEL/2 корпорація IBM випустила прототип СУБД, що мав назву System R. Призначення цієї пробної версії полягало у перевірці здійсненності реалізації реляційної моделі. Крім інших позитивних аспектів, найважливішим з результатів виконання цього проекту можна вважати розробку власне мови SQL, Однак коріння цієї мови сягає мови SQUARE (Specifying Queries as Rational Expressions), яка була попередником проекту System R. Мова SQUARE була розроблена як дослідницький інструмент для реалізації реляційної алгебри за допомогою фраз, складених англійською.

Наприкінці 1970-х років, компанією, яка нині перетворилася на корпорацію Oracle, було випущено СУБД Oracle. Мабуть, це перша з комерційних реалізацій реляційної СУБД, побудованої використання мови SQL.

Трохи згодом з'явилася СУБД INGRES, яка використовувала мову запитів QUEL.

Ця мова була більш структурованою, ніж SQL, але семантика її менш близька до звичайної англійської мови. Пізніше, коли SQL було прийнято як стандартну мову реляційних баз даних, СУБД INGRES було повністю перекладено його використання. 1981 року корпорація IBM випустила свою першу комерційну реляційну СУБД під назвою SQL/DS (для середовища DOS/VSE). У 1982 році побачила світ версія цієї системи для середовища VM/CMS, а в 1983 році - для середовища MVS, але вже під назвою DB2.

У 1982 році Національний інститут стандартизації США (ANSI) розпочав роботу над мовою Relation Database Language (RDL), керуючись концептуальними документами, отриманими від корпорації IBM. 1983 року до цієї роботи підключилася Міжнародна організація зі стандартизації (ISO). Спільні зусилля обох організацій завершилися випуском стандарту мови SQL. Від назви RDL у 1984 році відмовилися, а чорновий проект мови було перероблено з метою наближення до вже існуючих реалізацій мови SQL.

Вихідний варіант стандарту, випущений ISO в 1987 році, викликав хвилю критичних зауважень. Зокрема, Дейт, відомий дослідник у цій галузі, вказував, що в стандарті опущені найважливіші функції, включаючи засоби забезпечення цілісності посилання, та деякі реляційні оператори.

Крім того, він відзначив надмірну надмірність мови - той самий запит можна було записати в декількох різних варіантах. Більшість критичних зауважень була визнана справедливою, і необхідні корективи були внесені до стандарту ще до його публікації. Однак було вирішено, що важливіше випустити стандарт якнайшвидше, щоб він зміг виконувати роль загальної основи, на якій і сама мова, і її реалізації могли б розвиватися далі, ніж чекати, доки будуть визначені та узгоджені всі функції, які різні фахівці вважають обов'язковими. для подібної мови.

В 1989 ISO опублікувала додаток до стандарту, в якому визначалися функції підтримки цілісності даних. У 1992 році було випущено першу, суттєво переглянуту версію стандарту ISO, яку іноді називають SQL2 або SQL-92. Хоча деякі з функцій були визначені в цьому стандарті вперше, багато з них вже були повністю або частково реалізовані в одній або кількох комерційних реалізаціях SQL.

А наступну версію стандарту, яку прийнято називати SQL3, випустили лише 1999 року. Ця версія містить додаткові засоби підтримки об'єктно-орієнтованих функцій керування даними.

Функції, які додаються до стандарту мови розробниками комерційних реалізацій, називають розширеннями. Наприклад, у стандарті мови SQL визначено шість різних типів даних, які можуть зберігатись у базах даних. Багато реалізаціях цей список доповнюється різноманітними розширеннями. Кожна з реалізацій мови називається діалектом. Немає двох абсолютно ідентичних діалектів, як у час немає і жодного діалекту, повністю відповідного стандарту ISO.

Понад те, оскільки розробники баз даних вводять у системи дедалі нові функціональні засоби, вони постійно розширюють свої діалекти мови SQL, у результаті окремі діалекти дедалі більше відрізняються друг від друга. Однак основне ядро ​​мови SQL залишається більш менш стандартизованим у всіх реалізаціях.

Хоча вихідні концепції мови SQL розробили корпорацією IBM, його важливість дуже швидко підштовхнула й інших розробників до створення власних реалізацій. В даний час на ринку доступні буквально сотні продуктів, побудованих на використанні мови SQL, причому постійно доводиться чути про випуск нових і нових версій,

На сьогоднішній день курси 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 для чайників дозволяють дізнатися набагато більше про сервіс і повністю вивчити його за кілька тижнів.