стрілка вверх

Шаблон вибірки даних з таблиці Бази Даних

редакція квітень 2016

Зміст

  1. Загальні положення, структура основних блоків при виведенні даних з БД
  2. Патерн вибору даних з БД
    1. Вибір одного запису таблиці з Бази Даних (об'єктно-орієнтований стиль програмування)
    2. Вибір одного запису таблиці з Бази Даних (процедурний стиль програмування)
    3. Вибір масиву даних з таблиці Бази Даних (об'єктно-орієнтований стиль програмування)
    4. Вибір масиву даних з таблиці Бази Даних (процедурний стиль програмування)
    5. Вибір асоціативного масиву даних з таблиці Бази Даних (об'єктно-орієнтований стиль програмування)
    6. Вибір асоціативного масиву даних з таблиці Бази Даних (процедурний стиль програмування)
    7. Вибір асоціативного масиву даних з таблиці Бази Даних (об'єктно-орієнтований стиль, декілька рядків даних)
    8. Вибір асоціативного масиву даних з таблиці Бази Даних (процедурний стиль, декілька рядків даних)
  3. Заключення

1. Загальні положення, структура основних блоків при виведенні даних з БД

Таблиця БД може утримувати множину даних, і в залежності від потреб користувача деякі з даних можуть бути вибрані з таблиці застосовуючи SQL-запит SELECT.

SELECT Town_from
FROM Transit
WHERE id = Some_Number;

Якщо мова йде за використання звязки PHP+MySQL, то результатом виконання SQL-запиту SELECT буде результуюча вибірка , що представлена асоціативним масивом даних даних, що представляє собою об'єкт. (Рис.1)


Результуюча вибірка даних вона ж result set - набір даних, що отримані клієнтом (наприклад, веб-сервером, іншим програмним застосунком) з таблиці серверу БД. Як правило результуюча вибірка даних отримується за допомогою SQL-запиту.

Асоціативний масив - масив даних, що змістовно пов'язані між собою.

Рис.1. Вибір даних з однієї таблиці

Об'єкт в свою чергу залежить від потреб користувача, може представляти собою, як одне значення, так і декілька значень, масив даних, асоціативний масив даних.(Рис.2)

Рис.2. Можливі варіанти вибору даних з БД (формування об'єктів в PHP застосовуючи SQL-запит)

Вибірка даних із даної таблиці матиме ассоціативний масив.

Наприклад, один рядок асоціативного масиву: 2, Peter, Brown, his-email@mail.com, 12:20 01-23-2012.

асоціативний масив

Рис.3. Асоціативний масив.

Розглянемо шаблони вибірки даних з таблиці БД, яким чином ми можемо отримувати дані БД на екрані веб-сайту.

Якщо розглядати віртуальну таблицю (рис.4), то з таблиці ми можемо вибрати як одне значення (наприклад, 2_element,.. ), масив даних (наприклад, атрибут vertical) чи навіть асоціативний масив (кортеж, 5_gorizont).

Рис.4. Можливі варіанти вибору даних з однієї таблиці

Якщо мову вести за кодування скрипту в обєктно-орієнтовному стилі програмування, то варто розуміти основи ООП стилю кодування.

2. Патерн вибору даних з БД

Розглянемо наступні варіанти вибору даних:
2.1. Вибір одного запису таблиці
2.2. Вибір масиву даних (вона ж одна колонка таблиці, він же атрибут таблиці)
2.3. Вибір асоціативного масиву даних (він же один рядок таблиці, він же кортеж таблиці)
2.4. Вибір асоціативного масиву, де дані представлені декількома рядками

Систематизуємо цілі:

Спосіб виведення даних Одне значення даних Масив даних Асоціативний масив
(один рядок)
Асоціативний масив
(декілька рядків)
Об'єктно орієнтований стиль програмування розділ 2.1.1. розділ 2.2.1. розділ 2.3.1. розділ 2.4.1.
Процедурний стиль програмування розділ 2.1.2. розділ 2.2.2. розділ 2.3.2. розділ 2.4.2.
PHP Data Objects (PDO) стиль програмування --- --- --- ---


Для більш детальнішого вивчення матеріалу візьмемо таблицю Transit ( Перевезення ) з даними.

Колонки таблиці складаються з Id, Date, Town_from, Town_to, Carrier, Cargo.

№ рейсуДатаВідправлення ПризначенняПеревізникВантаж
IdDateTown_from Town_toCarrierCargo
100112-03-2005МиколаївКиївDeliverЗалізо
100212-03-2005КиївМиколаївTransAvtoПродовольчі товари
100313-03-2005ЛьвівУжгородTransAvtoКонтейнер
100417-03-2005ХерсонМиколаївTransAvtoКомпютерні комплектуючі
100518-03-2005ХерсонЛьвівTransAvtoПродовольчі товари

2.1.1. Вибір одного запису таблиці з Бази Даних
(об'єктно-орієнтований стиль програмування)

Приклад 1.
Необхідно вибрати місто відправлення вантажу за рейсом №1003.
Таблиця Transit ( Перевезення ).


PHP-кодування SQL-запиту SELECT буде мати вигляд:


<?php
// З'єднуємось з БД
$con = new mysqli("localhost","my_user","my_password","my_db");

// Встановлюємо кодування utf8
$con->set_charset("utf8");

// Отримуємо об'єкт $result
$result = $con->query("SELECT Town_from FROM Transit WHERE Id=1003");

//Отримуємо результуючу вибірку даних
$row = $result->fetch_assoc();
printf ("Місто відправлення:%s \n", $row["Town_from"]);

$con->close();
?>

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

Результат виконання коду буде мати вигляд:

Місто відправлення: Львів

лампочка

Вважаю, варто відмітити особливості виведенння одного значення даного, якщо то є результат виконання агрегатних функцій AVG(),COUNT(),FIRST(),LAST(),MAX(),MIN(),SUM() над даними.



Приклад 2.

Вивести кількість комп'ютерів з мінімальним об'ємом жорсткого диску, що є на складі.
Вивести count, hdd.
Таблиця PC.

Idcpu(MHz)memory(Mb)hdd(Gb)
116002000500
224003000800
3320030001200
424002000500
530002000800
632003000500


SQL-запит завдання буде мати вигляд:

SELECT hdd, count(hdd) AS count
FROM PC
WHERE hdd =
     (SELECT min(hdd) FROM PC)
     GROUP BY hdd;


Об'єктно-орієнтовний стиль кодування php-частини:

<?php
$con = new mysqli("localhost","my_user","my_password","my_db");
$con->set_charset("utf8");
$result = $con->query("SELECT hdd, count(hdd) as count
    FROM PC
    WHERE hdd=(SELECT min(hdd) FROM PC)
    GROUP BY hdd;");

$row = $result->fetch_assoc();
echo "hdd: " . $row['hdd']. "Gb Кількість: " . $row['count']. ;
$con->close();
?>

Результат виконання php-частини:

hdd: 500Gb Кількість: 3

2.1.2. Вибір одного запису таблиці з Бази Даних
(процедурний стиль програмування)

<?php
// З'єднуємось з БД
$con=mysqli_connect("localhost","my_user","my_password","my_db");

// Встановлюємо тип кодування utf08
mysqli_set_charset($con, "utf8");

// Отримуємо об'єкт $result
$sql="SELECT Town_from FROM Transit WHERE Id='1003'";
$result=mysqli_query($con,$sql);

//Отримуємо результуючу вибірку даного
$row=mysqli_fetch_assoc($result);
printf ("Місто відправлення:%s \n", $row["Town_from"]);

mysqli_close($con);
?>

Результат виконання коду буде мати вигляд:

Місто відправлення: Львів



2.2.1. Вибір масиву даних з таблиці Бази Даних
(об'єктно-орієнтований стиль програмування)

Приклад 3.

Необхідно вибрати назви останніх чотирьох міст відправок вантажу.
Таблиця Transit ( Перевезення ).


В даному завданні нам необхідно вибрати одну колонку (атрибут) з даними.
Дані представляють собою масив, що складається з чотирьох міст (Миколаїв, Київ, Львів, Херсон).
PHP-кодування буде мати вигляд:


Об'єктно орієнтований стиль програмування
<?php
// З'єднуємось з БД
$con = new mysqli("localhost","my_user","my_password","my_db");

// Встановлюємо тип кодування utf08
$con->set_charset("utf8");

// Отримуємо об'єкт $result
$result = $con->query("SELECT Town_from FROM Transit LIMIT 4 ");

//Отримуємо масив даних
while ($row = $result->fetch_assoc()) {
    echo " Місто: " . $row['Town_from'] . "<br>";
};

$con->close();
?>

Результат виконання коду буде мати вигляд:

Місто: Миколаїв
Місто: Київ
Місто: Львів
Місто: Херсон

2.2.2. Вибір масиву даних з таблиці Бази Даних
(процедурний стиль програмування)

Php-кодування буде мати вигляд:

Процедурний стиль програмування
<?php
// З'єднуємось з БД
$con=mysqli_connect("localhost","my_user","my_password","my_db");

// Встановлюємо тип кодування utf08
mysqli_set_charset($con, "utf8");

// Отримуємо об'єкт $result
$sql="SELECT Town_from FROM Transit LIMIT 4";
$result=mysqli_query($con,$sql);

//Отримуємо масив даних
while($row = mysqli_fetch_assoc($result)){
echo "Місто: " . $row["Town_from"]. "<br>";
};

mysqli_close($con);
?>

Результат виконання коду буде мати вигляд:

Місто: Миколаїв
Місто: Київ
Місто: Львів
Місто: Херсон


2.3.1. Вибір асоціативного масиву даних з таблиці Бази Даних
(об'єктно-орієнтований стиль програмування)

Приклад 4.
Необхідно вибрати дані (Дата відправлення, місто відправлення, місто призначення, перевізник, вантаж) за рейсом №1004. Таблиця Transit ( Перевезення ).


В даному завданні нам необхідно вибрати один рядок з даними.
Дані представляють собою асоціативний масив, що складається з змістовно пов'язаними між собою даних (17-03-2005, Херсон, Миколаїв, TransAvto, Комп'ютерні комплектуючі).

PHP-кодування буде мати вигляд:


Об'єктно орієнтований стиль програмування
<?php
// З'єднуємось з БД
$con = new mysqli("localhost","my_user","my_password","my_db");

// Встановлюємо кодування utf08
$con->set_charset("utf8");

// Отримуємо об'єкт $result
$result = $con->query("SELECT Date,Town_from,Town_to,Carrier,Cargo
    FROM Transit
    WHERE Id=1004");

//Отримуємо асоціативний масив даних для одного рядка, що відповідає Id=1004
$row = $result->fetch_assoc())
echo " Дата: " . $row['Date'] ." Місто відправлення: " . $row['Town_from'] . " Місто прибуття: " . $row['Town_to'] . " Перевізник: " . $row['Carrier']. " Вантаж: " . $row['Cargo'];

$con->close();
?>

Функція fetch_assoc($result) - за своїм призначенням створює асоціативний масив з вказаного об'єкту($result), в даному випадку рядок даних (17-03-2005, Херсон, Миколаїв, TransAvto, Комп'ютерні комплектуючі).

Результат виконання коду буде мати вигляд:

Дата: 2005-03-17 Місто відправлення: Херсон Місто прибуття: Миколаїв Перевізник: TransAvto Вантаж: Компютерні комплектуючі

2.3.2. Вибір асоціативного масиву даних з таблиці Бази Даних
(процедурний стиль програмування)

Php-кодування буде мати вигляд:

Процедурний стиль програмування
<?php
// З'єднуємось з БД
$con=mysqli_connect("localhost","my_user","my_password","my_db");

// Встановлюємо тип кодування utf08
mysqli_set_charset($con, "utf8");

// Отримуємо об'єкт $result
$sql="SELECT Date,Town_from,Town_to,Carrier,Cargo FROM Transit WHERE Id=1004";
$result=mysqli_query($con,$sql);

//Отримуємо асоціативний масив даних для одного рядка, що відповідає Id=1004
$row = mysqli_fetch_assoc($result);
echo " Дата: " . $row['Date'] ." Місто відправлення: " . $row['Town_from'] . " Місто прибуття: " . $row['Town_to'] . " Перевізник: " . $row['Carrier']. " Вантаж: " . $row['Cargo'];";

mysqli_close($con);
?>

Результат виконання коду буде мати вигляд:


Дата: 2005-03-17 Місто відправлення: Херсон Місто прибуття: Миколаїв Перевізник: TransAvto Вантаж: Компютерні комплектуючі

2.4.1. Вибір асоціативного масиву даних
(об'єктно-орієнтований стиль програмування)

Приклад 5.
Необхідно вибрати дані (Дата відправлення, місто відправлення, місто призначення, перевізник) останніх чотирьох рейсів. Таблиця Transit ( Перевезення ).

В даному завданні нам необхідно вибрати чотири рядки з даними.

PHP-кодування буде мати вигляд:

<?php
// З'єднуємось з БД
$con = new mysqli("localhost","my_user","my_password","my_db");

// Встановлюємо тип кодування utf08
$con->set_charset("utf8");

// Отримуємо об'єкт $result
$result = $con->query("SELECT Id,Date,Town_from,Town_to,Carrier FROM Transit LIMIT 4");

//Отримуємо асоціативний масив даних для останніх чотирьох записів
while ($row = $result->fetch_assoc()){
echo "Рейс:".$row['Id']."Дата:".$row['Date']."Місто відправлення:". $row['Town_from']." Місто прибуття:".$row['Town_to']."Перевізник:".$row['Carrier']."<br>";
};
$con->close();
?>

Функція fetch_assoc() - за своїм призначенням створює асоціативний масив з вказаного об'єкту $result, в даному випадку це чотири рядки даних відповідно до запиту колонками (Id, Date, Town_from, Town_to, Carrier).

Результат виконання коду буде мати вигляд:

Рейс: 1001 Дата:2005-03-12 Місто відправлення: Миколаїв Місто призначення: Київ Перевізник: Deliver
Рейс: 1002 Дата:2005-03-12 Місто відправлення: Київ Місто призначення: Миколаїв Перевізник: TransAvto
Рейс: 1003 Дата:2005-03-13 Місто відправлення: Львів Місто призначення: Ужгород Перевізник: TransAvto
Рейс: 1004 Дата:2005-03-17 Місто відправлення: Херсон Місто призначення: Миколаїв Перевізник: TransAvto

2.4.2. Вибір асоціативного масиву даних
(процедурний стиль програмування)

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

<?php
// З'єднуємось з БД
$con=mysqli_connect("localhost","my_user","my_password","my_db");

// Встановлюємо тип кодування utf08
mysqli_set_charset($con, "utf8");

// Отримуємо об'єкт $result
$sql="SELECT Id,Date,Town_from,Town_to,Carrier FROM Transit LIMIT 4";
$result=mysqli_query($con,$sql);

//Отримуємо масив даних
while($row = mysqli_fetch_assoc($result)){
echo "Рейс:".$row['Id']."Дата:".$row['Date']." Місто відправлення:".$row['Town_from']."Місто прибуття:".$row['Town_to']."Перевізник:".$row['Carrier']."<br>";
};

mysqli_close($con);
?>

Результат виконання коду буде мати вигляд:

Рейс: 1001 Дата:2005-03-12 Місто відправлення: Миколаїв Місто призначення: Київ Перевізник: Deliver
Рейс: 1002 Дата:2005-03-12 Місто відправлення: Київ Місто призначення: Миколаїв Перевізник: TransAvto
Рейс: 1003 Дата:2005-03-13 Місто відправлення: Львів Місто призначення: Ужгород Перевізник: TransAvto
Рейс: 1004 Дата:2005-03-17 Місто відправлення: Херсон Місто призначення: Миколаїв Перевізник: TransAvto

Заключення

Застосування БД в сайтобудівництві надає безперечно широкі можливості.

БД може стати Вашим ліпшим другом, допомогти в багатьох корисних фічах (feature - англ.- особливість), відмінна особливість чого-небудь» ), відслідковувати вподобання користувачів, коментарі, опитування, тести та інше за Вашим вподобанням.

В даній статті ми розглянули приклади вибору різних даних та в різній кількості із таблиці Бази Даних. Ну майже всі... ще при нагоді варто буде PDO стиль розглянути :)
Якщо маєте питання можете задати їх як на сторінці Коментарів

Найкращого в програмуванні!