Таблиця 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";