Home

Таблиця 8.3. Найбільш затребовані команди MySQl

Команда Дія
ALTER Внесення змін в базу даних або таблицю
BACKUP Створення резервної копії таблиці
\c Відміна ввода
CREATE Створення бази даних
DELETE Видалення рядка з таблиці
DESCRIBE Опис колонок таблиць
DROP Видалення бази даних або таблиці
EXIT(Ctrl+C) Вихід
GRANT Змінення привілей користувача
HELP(\h, \?) Відображення підказки
INSERT Вставка даних
LOCK Блокування таблиць(таблиці)
QUIT(\q) Те ж що і EXIT
RENAME Перейменування таблиці
SHOW Перелік відомостей про об'єкти
SOURCE Виконання команд з файла
STATUS(\s) Відображення поточного стану
TRUNCATE Спустошення таблиці
UNLOCK Зняття блокування таблиці (таблиць)
UPDATE Оновлення існуючого запису
USE Використання бази даних
SELECT Вилучення рядків
  • CREATE DATADASE publications; // Створення бази даних
  • GRANT ALL ON publications.* TO 'peturik@localhost' IDENTIFIED BY 'password'; //Створення користувача та надання йому привілей для бази даних publications
  • mysql -u peturik -p //Вхід в систему
  • USE publications //Вибір бази даних для роботи
  • Створення таблиці під назвою classics:
              CREATE TABLE classics (
                author VARCHAR(128),
                title VARCHAR(128),
                type VARCHAR(16),
                year CHAR(4)
              ) ENGINE MyISAM;
            
    Команда ENGINE MyISAM; вказує MySQL тип механізма керування базою даних, який приміняється до цієї таблиці
  • ALTER TABLE classics ADD id INT UNSUGNED NOT NULL AUTO_INCREMENT KEY;

    • (INT UNSIGNED - робить поле здатним прийняти ціле число, досить велике для того, щоб в таблиці могло зберігатися більше 4 млрд записів.)
    • (NOT NULL - забезпечує наявність значення в кожному запису поля<)/li>
    • (AUTO_INCREMENT - встановлює для поля унікальне значення в кожному рядку<)/li>
    • (KEY поле з автоприрощуванням корисно використовувати в якості ключа)
  • ALTER TABLE classics DROP id; //Видалення поля id
  • INSERT INTO classics(author, title, type,year)
       VALUES('Mark Twain','The Adventures of Tom Sawyer','Fiction','1876');
    //Заповнення таблиці
  • SELECT * FROM classics;відображення вмісту таблиці
  • ALTER TABLE classics RANAME pre1900; - Перейменування таблиці
  • ALTER TABLE classics MODIFY year SMALLINT; - Зміна типу даних поля (поле year з CHAR(4) на SMALLINT(для якого потрібно тільки 2 байта пам'яті))
  • ALTER TABLE classics ADD pages SMALLINT UNSIGNED; - Добавлення нового поля (тип даних SMALLINT UNSIGNED підходить для зберігання значень аж до 65 535.)
  • ALTER TABLE classics CHANGE type category VARCHAR(16); - Перейменування поля (type -> category)
  • ALTER TABLE classics DROP pages; - Видалення поля
  • ALTER TABLE classics ADD INDEX(title(20)); - Створення індекса
  • ALTER TABLE classics ADD INDEX(author(20));
    CREATE INDEX author ON classics (author(20));
    - Дві ідентичні команди
  • ALTER TABLE classics ADD isbn CHAR(13) PRIMARY KEY; - Первинний ключ для isbn (International Standard Book Number)

Приклад 8.14. Створення таблиці classics з індексами і первинним ключем

      CREATE TABLE classics (
        autor VARCHAR(128),
        title VARCHAR(128),
        category VARCHAR(16),
        year SMALLINT,
        INDEX(author(20)),
        INDEX(title(20)),
        INDEX(category(4)),
        INDEX(year)
        PRIMARY KEY(isbn)) ENGINE MyISAM;
    

Пример 8.13. Заполнение столбца isbn данными и использование первичного ключа

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

      ALTER TABLE classics ADD isbn CHAR(13);
      UPDATE classics SET isbn='9781598184891' WHERE
       year='1876';
      UPDATE classics SET isbn='9780582506206' WHERE
       year='1811';
      UPDATE classics SET isbn='9780517123201' WHERE
       year='1856';
      UPDATE classics SET isbn='9780099533474' WHERE
       year='1841';
      UPDATE classics SET isbn='9780192814968' WHERE
       year='1594';
      ALTER TABLE classics ADD PRIMARY KEY(isbn);
      DESCRIBE classics;

    

Пример 8.15. Добавление индекса FULLTEXT к таблице classics

(этот индекс является дополнением к тем, что уже были созданы, и не влияет на их работу).

ALTER TABLE classics ADD FULLTEXT(author,title);
    

Створення запитів до бази даних MySQL

SELECT

Команда SELECT використовується для вилучення даних з таблиці

Основний синтаксис має наступний вигляд:

SELECT що-небудь FROM ім'я_таблиці
    

Приклад 8.16. Дві різні інструкції SELECT

      SELECT author,title FROM classics;
      SELECT title,isbn FROM classics;

    

SELECT COUNT

Приклад 8.17. Підрахунок кількості рядків

SELECT COUNT(*) FROM classics;

SELECT DISTINCT (і його синонім DISTINCTROW)

Дозволяє виключати дані що повторюються

Приклад 8.19. Команда SELECT зі специфікатором DISTINCT та без нього

      SELECT author FROM classics;
      SELECT DISTINCT author FROM classics;
    

DELETE

Пример 8.20. Удаление новой записи

      DELETE FROM classics WHERE title='Little Dorrit';
    

WHERE

Ключове слово WHERE дозволяє звузити діапазон дії запиту, повертаючи тільки ті дані, щодо яких конкретне вираження повертає істинне значення.

      SELECT author,title FROM classics WHERE author="Mark Twain";
      SELECT author,title FROM classics WHERE isbn="9781598184891 ";
    

При проведенні пошукових операцій можна також здійснювати перевірку на відповідність шаблону, для чого застосовується специфікатор LIKE, що дозволяє вести пошук в різних частинах рядків. Цей специфікатор повинен використовуватися з символом % до або після деякого тексту. Якщо його помістити до тексту, це буде означати «що-небудь до», а якщо після тексту - «що-небудь після».

Приклад 8.22. Використання сецифікатора LIKE

      SELECT author,title FROM classics WHERE author LIKE "Charles%";
      SELECT author,title FROM classics WHERE title LIKE "%Species";
      SELECT author,title FROM classics WHERE title LIKE "%and%";
    

LIMIT

Приклад 8.23. Обмеження кількості повертаємих результатів

      SELECT author,title FROM classics LIMIT 3;
      SELECT author,title FROM classics LIMIT 1,2;
      SELECT author,title FROM classics LIMIT 3.1;
    

Один параметр вказує скільки рядків повернути починаючи зверху.
Якщо два параметра - то перший вказує зміщення відносно початку результатів, а другий вказує кількість рядків.

MATCH...AGAINST

Конструкція MATCH...AGAINST може бути застовсована до поля, для якого був створений індекс FULLTEXT

конструкція MATCH...AGAINST дозволяє вводити в пошуковий запит декілька слів і перевіряти на їх вміст всі слова в полях, що мають індeкс FULLTEXT

      SESECT author,title FROM classics
        WHERE MATCH(author,title) AGAINST('curiosity shop');
    

MATCH...AGAINST...IN BOOLEAN MODE

      SELECT author,title FROM classics
        WHERE MATCH(author,title)
          AGAINST('+charles -species' IN BOOLEAN MODE);
      (вимагає повернути всі рядки, в яких є слово charles і немає слова species)

      SELECT author,title FROM classics
        WHERE MATCH(author,title)
          AGAINST('"origin of"' IN BOOLEAN MODE);
      (використавуються подвійні лапки щоб потребувати повернути всі рядки, вміст яких має фразу origin if)
    

UPDATE...SET

в прикладі 8.26 два різних метода використання UPDATE...SET

      UPDATE classics SET author='Mark Twain (Samuel Langhorne Clemens)'
        WHERE author='Mark Twain';
      зачіпає тільки один рядок, до літературного псевдоніму Mark Twain
       додається справжнє ім'я письменника - Samuel Langhorne Clemens, вкладенe в дужки.

      UPDATE classics SET category='Classic Fiction'
        WHERE category='Fiction';
      запит діє на кілька полів і замінює всі появи слова Fiction
      в полі category терміном Classic Fiction
    

При виконанні оновлення можна користуватися такими специфікаторами, як LIMIT, а також ключовими словами ORDER BY та GROUP BY

ORDER BY

Специфікатор ORDER BY дозволяє впорядкувати результати що повертаються по одному або кількох полях в зростаючому або в порядку спадання. У прикладі 8.27 показані два таких запиту

      SELECT author,title FROM claassics ORDER BY author;
      SELECT author,title FROM classics ORDER BY title DESC;
    

GROUP BY

Згруповує результати. Більш за все підходить для вилучення інформації про групу даних

      SELECT category,COUNT(author) FROM classics GROUP BY category;
    

Об'єднання таблиць

Приклад 8.28. Створення та заповнення таблиці customers

      CREATE TABLE customers (
      name VARCHAR(128),
      isbn VARCHAR(13),
      PRIMARY KEY (isbn)) ENGINE MyISAM;
      INSERT INTO customers(name,isbn) VALUES
      ('Joe Bloggs','9780099533474'),
      ('Mary Smith','9780582506206'),
      ('Jack Wilson','9780517123201');
    

Приклад 8.29. Об'єднання двух таблиць в одному запиті SELECT

      SELECT name,author,title FROM customers,classics
        WHERE customers.isbn=classics.isbn;

    

NATURAL JOIN

Використовуючи NATURAL JOIN, можна скоротити кількість введеного тексту і зробити запити більш зрозумілими. У цьому виді об'єднання беруть участь дві таблиці, в яких автоматично об'єднуються поля з однаковими іменами. Для отримання тих же результатів, що і в прикладі 8.29, можна ввести наступний запит:

      SELECT name,author,title FROM customers NATURAL JOIN classics;
    

JOIN...ON

Якщо потрібно вказати стовпець, по якому слід об'єднати дві таблиці, використовується конструкція JOIN...ON, завдяки якій можна отримати ті ж результати, що і в прикладі 8.29:

      SELECT name,author,title FROM customers
        JOIN classics ON customers.isbn=classics.isbn;
    

Використання ключового слова AS

Можна скоротити кількість введеного тексту і поліпшити читаність запиту за рахунок створення псевдонімів за допомогою ключового слова AS. Після імені таблиці потрібно поставити AS, а потім використовується псевдонім. Наступний код ідентичний за своєю роботою коду, наведеному в прикладі 8.29:

      SELECT name,author,title FROM
        customers AS cust, classics AS class WHERE cust.isbn=class.isbn;
    

Використання логічних операторів

Для подальшого звуження простору вибору в запитах MySQL, що використовують ключове слово WHERE, можна також задіяти логічні оператори AND, OR і NOT. У прикладі 8.30 показані варіанти застосування кожного з них, але їх можна використовувати в будь-яких поєднаннях.

      SELECT author,title FROM classics WHERE
        author LIKE "Charles%" AND author LIKE "%Darwin";
      SELECT author,title FROM classics WHERE
        author LIKE "%Mark Twain%" OR author LIKE "%Samuel Langhorne Clemens%";
      SELECT author,title FROM classics WHERE
        author LIKE "Charles%" AND author NOT LIKE "%Darwin";