Введення запитів в mysql

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

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

Є проста команда, щоб сервер повідомив свою версію і поточну дату. Надрукуйте це, як показано нижче після підказки mysql> і натисніть на клавішу Enter:

Цей запит ілюструє кілька питань щодо mysql:

  • команда зазвичай складається з інструкції SQL, супроводжуваної крапкою з комою. Є деякі виняткові ситуації, де крапка з комою не потрібно, наприклад, згадана вище команда QUIT. Ми доберемося до інших пізніше;
  • коли ви видаєте команду, mysql посилає її сервера для виконання і відображає результати, потім друкує іншу підказку mysql>, щоб вказати, що готовий для прийому наступної команди;
  • mysql відображає запитував як таблицю (рядки і стовпці). Перший рядок містить мітки для стовпців. Наступні рядки задають результати запиту. Зазвичай, мітки стовпця є імена стовпців, які ви вибираєте з таблиць бази даних. Якщо ви отримуєте значення виразу, а не стовпець таблиці, mysql маркує стовпець, використовуючи вираз безпосередньо;
  • mysql показує, скільки рядків було повернуто і як довго оброблявся запит, що дає вам загальні дані щодо ефективності сервера. Ці значення неточні, тому що вони представляють не машинний час або витрати часу процесора, а рамки виконання запиту. На ці дані діють, наприклад затримки в мережевому каналі. Для стислості рядок rows in set не з'являється в останніх прикладах з цієї глави, оскільки не має зараз ніякого значення;
  • ключове слово SELECT є однією з найважливіших конструкцій мови SQL. Вона наказує знайти те, що визначено виразом після цього слова.

Ключові слова мови SQL можуть бути введені в будь-якому регістрі. Наступні запити еквівалентні:

mysql> SELECT VERSION (), CURRENT_DATE;
mysql> select version (), current_date;
mysql> SeLeCt vErSiOn (), current_DATE;

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

Є інший запит. Він показує, що ви можете використовувати mysql як досить просунутий калькулятор:

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

Однак команди бувають і довгими. Мова SQL відомий як раз своїми довгими інструкціями. Але довгі команди, які вимагають декількох рядків, - не проблема. Клієнт mysql визначає кінець оператора, шукаючи точку з коми, а не кінець рядка. Іншими словами, mysql приймає введення вільного формату: він збирає вводяться рядки в одну, але не виконує їх до тих пір, поки не побачить крапку з комою.

Є проста інструкція з довгою рядком:

У цьому прикладі зверніть увагу, як підказка змінюється з mysql> на ->, після того як ви вводите перший рядок запиту. Цим mysql вказує, що поки не бачив повної інструкції (а головне, крапки з комою в кінці) і чекає її. Підказка - ваш друг, тому що забезпечує цінну зворотний зв'язок. Якщо ви використовуєте цей зворотний зв'язок, ви будете завжди знати, чого саме чекає від вас mysql в цей момент.

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

Тут також зверніть увагу на підказку. Вона переключилася назад в mysql> після введення, забезпечуючи зворотний зв'язок, щоб вказати, що mysql готовий для нової команди.

Наступна таблиця 2.1 показує всі підказки і узагальнює їх зміст:

Таблиця 2.1. Сенс підказок клієнтської програми:

Очікування наступного рядка при зборі рядки, яка починається з подвійної лапки ( «)

Іноді багаторядкові інструкції видаються випадково, коли ви припускаєте видати команду в одному рядку, але забуваєте крапку з комою для завершення. В цьому випадку mysql чекає продовження введення:

mysql> SELECT USER ()
>

Якщо це трапляється (ви думаєте, що ввели оператор, але єдина відповідь являє собою підказку ->), найбільш ймовірно, що mysql чекає крапки з комою. Введіть крапку з комою, щоб завершити інструкцію, і mysql її виконає:

Підказки "> і«> з'являються при роботі з рядком в лапках. В MySQL ви можете писати рядки в символах "або" (наприклад, "hello" або "goodbye»), і mysql дозволить вам вводити довгі рядки у вигляді декількох коротких рядків. Коли ви бачите підказку "> або«>, це означає, що ви ввели рядок, яка починається з символу лапки "або", але ще не ввели другу лапку, яка завершує цей рядок. Вона також може повідомляти і про помилку:

mysql> SELECT * FROM my_table WHERE name = "Smith AND age <30;
">

Якщо ви вводите цю інструкцію SELECT. то натискання Enter нічого не поверне. Замість того, щоб думати, чому цей запит так довго виконується, зверніть увагу на підказку «>. Вона повідомляє вам, що mysql очікує побачити решту незавершеною рядки. Ви бачите помилку в інструкції? Рядок «Smith пропускає другу лапку.

Що робити? Найпростіше рішення - скасувати команду. Однак ви не можете в цьому випадку просто надрукувати скасування, так як mysql буде інтерпретувати її як частину введеної рядки! Замість цього, введіть заключний символ лапки (щоб mysql зрозумів, що ви закінчили рядок), а вже потім:

mysql> SELECT * FROM my_table WHERE name = "Smith AND age <30;
">"
mysql>

Підказка змінюється назад на mysql>, вказуючи, що mysql готовий для нової команди.

Важливо знати, що повідомляють підказки "> і«>, так як, якщо ви помилково вводите незавершену рядок, будь-які рядки, які ви введете в подальшому, будуть ігноруватися mysql, включаючи рядок QUIT! Це може заплутати програму, особливо якщо ви не знаєте , що повинні ввести лапки завершення перш, ніж зможете скасувати поточну команду.

Ось тут потрібно бути гранично уважним. Справа в тому, що рядок може бути обмежена лапками двох типів: "і". Вони взаємозамінні, але треба дотримуватися парність. Тобто, якщо ви почали рядок з якоїсь лапки, закінчити рядок повинні точно такий же лапками.