- •Методичні вказівки
- •«Проектування інформаційних ресурсів Інтернет»
- •6.040303 «Системний аналіз»
- •3.3 Завантаження дампа в базу 28
- •4 Короткі теоретичні відомості про php 30
- •1 Набір web-розробника denwer
- •1.1 Призначення та склад denwer
- •1.2 Інсталяція дистрибутива
- •1.3 Робота з віртуальними хостами
- •2 Система керування базами даних mysql
- •2.1 Загальні положення
- •2.2 Установка MySql
- •2.3 Поля і їхні типи в MySql
- •Цілочисельні типи даних
- •Дійсні числа
- •Рядкові типи
- •Бінарні типи даних
- •Дата та час
- •2.4 Оператори та команди MySql
- •Сортування записів
- •Внутрішні функції min, max, avg, sum
- •Групування записів
- •Видалення полів і таблиць. Оператор drop
- •Відключення від субд
- •3 Розробка й редагування бд за допомогою phpmyadmin
- •3.1 Створення бд і таблиць за допомогою phpMyAdmin.
- •3.2 Резервне копіювання бд
- •3.3. Завантаження дампа в базу
- •4 Короткі теоретичні відомості про php
- •4.1 Основні положення
- •Привіт, я - скрипт php!
- •4.3 Типи даних (змінних) в php
- •4.4 Оператори
- •Арифметичні оператори
- •Порозрядні оператори
- •Логічні оператори
- •Оператори рівності
- •Оператори порівняння
- •Інкремент і декремент
- •Оператори присвоєння
- •Логічний оператор if ...Else
- •Оператор switch
- •Оператор циклу із передумовою
- •Оператор циклу з післяумовою
- •Універсальний цикл for
- •4.5 Функції рнр
- •5.1 Рнр функції для роботи з MySql
- •5.2 Виведення даних з таблиці
- •5.3 Додавання даних у бд
- •5.4 Видалення даних із бд
- •5.5 Відбір даних з поєднаних таблиць
- •Рекомендована література
Сортування записів
Для впорядкування виведеної інформації по зростанню або по спаданню використовують команду ORDER. За замовчуванням впорядкування виконується по зростанню (ASC). Для сортування по спаданню додаємо DESC. Наприклад:
SELECT fio, addr FROM clients ORDER BY fio DESC
Внутрішні функції min, max, avg, sum
При роботі з оператором SELECT доступні досить корисні внутрішні функції MySQL, що обчислюють кількість елементів (COUNT), суму елементів (SUM), максимальне й мінімальне значення (MAX і MIN), а також середнє значення (AVG).
Наступні оператори виведуть, відповідно, кількість записів у таблиці clients та наймолодшого клієнта:
SELECT COUNT(*) FROM clients;
SELECT MAX(gr) FROM clients;
Групування записів
Створимо ще одну таблицю orders, у якій зберігається інформація про замовлення: nz – номер замовлення, date – дата замовлення, nk – номер клієнта, nt – номер товару, quantity- кількість одиниць замовленого товару, amount – вартість замовлення.
CREATE TABLE orders ( nz INT NOT NULL, date DATE NOT NULL, nk INT NOT NULL, nt INT NOT NULL, quantity DOUBLE(9,2) NOT NULL, amount DOUBLE(9,2) NOT NULL );
Якщо в різних таблицях є поля з однаковими іменами, то в багатотабличних запитах перед ім'ям поля потрібно вказувати ім'я таблиці, наприклад, cliеnts.nk, orders.nk.
Оператор SELECT дозволяє групувати значення в запитах. Наприклад, клієнт Козлов (nk=1) кілька разів замовляв якийсь товар. Виходить, його номер зустрічається в таблиці orders кілька разів. Інший клієнт також міг зробити кілька замовлень. Ми можемо згрупувати всі записи по полю nk (номер клієнта), а потім вивести суму замовлення кожного клієнта. Псевдонім стовпця для загальної суми замовлення – totalsum.
SELECT clients.fio, SUM(orders.amount) AS totalsum FROM clients, orders WHERE clients.nk = orders. nk GROUP BY orders.nk;
Групування виконує оператор GROUP BY, що є частиною оператора SELECT. Оператор GROUP BY можна обмежити за допомогою HAVING. HAVING можна вважати аналогом WHERE, але тільки для GROUP BY:
HAVING <умова>
Наприклад, нас цікавлять тільки клієнти, які замовили товарів на загальну суму, що перевищує 1500:
SELECT clients.fio, SUM(ORDERS.AMOUNT) AS totalsum FROM clients, orders WHERE clients.nk = orders.nk GROUP BY orders.nk HAVING totalsum > 1500;
Ключі
Припустимо, що хтось додав у таблицю clients запис:
2 Волков В.В. Волі 7 Донецьк 0112233
У той же час, до цього номер 2 був закріплений за Барановим. Номер клієнта повинен бути унікальним. Щоб уникнути такої плутанини, необхідно оголосити поле nk як первинний ключ:
ALTER TABLE clients ADD PRIMARY KEY (nk);
Як первинний ключ не можна використовувати поле, що допускає значення NULL. Створити первинний ключ можна й простіше - при побудові таблиці в такий спосіб:
CREATE TABLE clients ( nk int NOT NULL, fio varchar(50) NOT NULL, addr varchar(55) NOT NULL, city varchar(20) NOT NULL, phone varchar(8) NOT NULL, gr INT NOT NULL, PRIMARY KEY (nk) );
Таблиця orders містить відомості про замовлення. По полю nk у цій таблиці ідентифікується замовник. Припустимо, що в таблицю orders хтось увів значення, якого немає в таблиці clients. Щоб не допустити подібної ситуації, варто використовувати запит для створення зовнішнього ключа:
ALTER TABLE orders ADD FOREIGN KEY(nk) REFERENCES clients;
Такий зв'язок називається декларативною цілісністю бази даних. Команда ALTER використовується не тільки для додавання ключів, але й для реорганізації таблиці в цілому. Наприклад, можна додати в таблицю нове поле email:
ALTER TABLE clients ADD email VARCHAR(20) NULL;
Зверніть увагу, що ви не можете додати нове поле зі значенням NOT NULL у таблицю, у якій уже є дані.
За допомогою ALTER можна ввести список обмежень на значення, що вводяться. Наприклад, якщо компанія працює тільки із клієнтами Києва, Донецька і Запоріжжя, то доцільно ввести список припустимих значень для таблиці clients:
ALTER TABLE clients ADD CONSTRAINT INVALID_STATE SHECK (city IN ('Київ', 'Донецьк', 'Запоріжжя' ));