СУБД MySQL
1/38
795.50K
Category: databasedatabase

СУБД MySQL PHP. Лекція №7

1. СУБД MySQL

PHP

2. СУБД MySQL

Одна з популярних СУБД, що
використовуються в Webпрограмуванні

3. Що таке MySQL

MySQL - компактний багатопотічний сервер баз даних.
MySQL характеризується великою швидкістю, стабільністю
та легкістю у використанні.
MySQL був розроблений компанією ТсХ для внутрішніх
потреб, що полягали у швидкій обробці дуже великих баз
даних.
Компанія стверджує, що використовує MySQL з 1996
року на сервері з більш ніж 40 БД, що містять 10,000
таблиць, з яких більш ніж 500 мають більш 7 мільйонів
рядків.

4. Можливості MySQL.

Короткий перелік можливостей MySQL.
1. Підтримується необмежена кількість користувачів, що
одночасно працюють з базою даних.
2. Кількість рядків у таблицях може досягати 50 млн!
3. Швидке виконання команд. Можливо MySQL
найшвидший сервер з існуючих.
4. Проста та ефективна система безпеки.

5. Типи полів

Строки
VARCHAR(n) – від 1 до 255
символів
TINYTEXT
TEXT – не більш 65535
символів
MEDIUMTEXT
LONGTEXT
Дата і час
DATE - дата в форматі
YYYY-MM-DD
TIME - час в форматі HH:
MM: SS
DATETIME - дата і час в
форматі YYYY-MM-DD HH:
MM: SS
TIMESTAMP - дата і час в
форматі timestamp, при
отриманні значення поля
воно відбивається не в
форматі timestamp, а у
вигляді YYYY-MM-DD HH:
MM: SS

6. Модифікатори

До типу можна приєднувати модифікатори, які задають
поведінку типу та операції, які дозволено / заборонено
виконувати з відповідними стовпцями
not null - поле не може містити невизначене значення,
поле обов'язково має бути ініціалізовано при вставці
нового запису в таблицю
primary key - поле є первинним ключем
auto_increment - при вставці нового запису поле
отримає унікальне значення…

7. phpMyAdmin

Система адміністрування, цілком написана на
PHP
Дозволяє
Створювати та видаляти бази даних
Створювати та видаляти таблиці баз даних
Переглядати і редагувати бази даних і їх таблиці
Змінювати структуру таблиць
переглядати статистику

8. phpMyAdmin

9. Алгоритм роботи з БД в РНР

1.
2.
3.
4.
5.
Встановлюємо з'єднання з сервером
Вибираємо потрібну базу даних
Робимо запит до сервера баз даних
(sql запит)
Обробляємо результат запиту, якщо
це необхідно
Закриваємо з'єднання
(відключаємося від сервера БД)

10. Мінімум потрібних функцій

mysql_connect();
mysql_select_db();
mysql_query();
mysql_fetch_array();
mysql_close();

11. Функції для роботи з MySQL

mysql_connect(string hostname, string
username, string password)
встановлює з’єднання з MySQLсервером
mysql_connect("localhost", "root", "");

12. Функції для роботи з MySQL

mysql_close ()
закриває з’єднання з MySQL-сервером
mysql_close();

13. Функції для роботи з MySQL

mysql_select_db(string dbname)
вибирає базу даних
mysql_select_db("test");
mysql_query(string query)
формування і відправка SQL-запита

14. Приклад роботи з БД

<?php
// Дані для mysql серверу
$dbhost = "localhost"; // Хост
$dbuser = "guest"; // І’мя користувача
$dbpassword = "mypassword"; // Пароль
$dbname = "database"; // І’мя бази даних
// Підключаємося до mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
// Вибираємо нашу базу даних
mysql_select_db($dbname, $link);
// Створюємо таблицю customer // тобто робимо sql запит
$query = "create table customer (id int(2) primary key
auto_increment, name varchar(100), tel varchar(20))";
mysql_query($query, $link);
// Закриваємо підключення
mysql_close($link)
?>

15. Приклад: Що буде?

<?
$id=mysql_connect("localhost","root","");
mysql_query("create database `phonebase`");
mysql_select_db(" phonebase ");
mysql_query("CREATE TABLE `phone` (`name`
TEXT NOT NULL ,`email` VARCHAR( 20 ) NOT NULL
,`number` VARCHAR( 9 ) NOT NULL ,`id` INT NOT
NULL AUTO_INCREMENT, PRIMARY KEY ( `id` ) );");
?>

16. Розміщення БД

В каталозі data при створенні нової
БД створюється каталог з такою ж
назвою

17. Розміщення БД

Кожна таблиця розміщується в трьох
файлах
table.frm - містить структуру самої таблиці
table.myd - зберігаються фактичні дані
table.myi - зберігаються дані про ключі та інші
службові дані, необхідні MySQL для швидкого
пошуку даних в файлі table.myd

18. Розміщення БД

19. Додавання записів

<?
$id=mysql_connect("localhost","root","");
if ($id==0)
die("Не можу підключитися до MySQL<br>");
else
echo «Підключення з MySQL встановлено<br>";
mysql_select_db("phonebase");
mysql_query("INSERT INTO `phone` ( `name` , `email` ,
`number` , `id` ) VALUES (‘Іванов', 'ivanov@gmail.com',
'123456789', 'null');");
mysql_query("INSERT INTO `phone` ( `name` , `email` ,
`number` , `id` ) VALUES ('Петров', 'petrov@gmail.com',
'987654321', 'null');");
mysql_query("INSERT INTO `phone` ( `name` , `email` ,
`number` , `id` ) VALUES ('Михайленко',
'mikhayl@gmail.com', '192837465', 'null');");
?>

20. Функції обробки результатів запиту

Якщо запит, виконаний за допомогою функції
mysql_query() успішно виконався, то в результаті
клієнт отримає набір записів, який може бути
оброблений наступними функціями PHP:
mysql_result() - отримати необхідний елемент з
набору записів;
mysql_fetch_array() - занести запис в масив;
mysql_fetch_row() - занести запис в масив;
mysql_fetch_assoc() - занести запис в
асоціативний масив;
mysql_fetch_object() - занести запис в об'єкт.

21. Отримання даних

mysql_fetch_array(int $result)
вибирає результуючий рядок як
асоціативний масив, дані
зберігаються як в асоціативному, так і
в індексному масивах

22. Отримання даних

mysql_fetch_assoc(int $result)
mysql_fetch_row(int $result)
вибирають результуючий рядок в
асоціативний масив, дані
зберігаються в асоціативному /
індексному масиві

23. Отримання даних

mysql_num_rows(int $result)
mysql_num_fields(int $result)
повертають число рядків (полів) в
результуючому рядку

24. Отримання даних

<?
$id=mysql_connect("localhost","root","");
if ($id==0)
die("Не можу підключитися до MySQL<br>");
mysql_select_db("phonebase");
$result=mysql_query("select * from phone");
for($i=0;$i<mysql_numrows($result);$i++)
{
$arr=mysql_fetch_array($result);
foreach ($arr as $k=>$v)
echo '$arr[',$k,"]=",$v,"<br>";
}
?>

25. Отримання даних

<?
$id=mysql_connect("localhost","root","");
if ($id==0)
die("Не можу підключитися до MySQL<br >");
mysql_select_db("phonebase");
$result=mysql_query("select * from phone");
for($i=0;$i<mysql_numrows($result);$i++)
{
$arr=mysql_fetch_assoc($result);
foreach ($arr as $k=>$v)
echo '$arr[',$k,"]=",$v,"<br>";
}
?>

26. Отримання даних

<?
$id=mysql_connect("localhost","root","");
if ($id==0)
die("Не можу підключитися до MySQL<br >");
mysql_select_db("phonebase");
$result=mysql_query("select * from phone");
for($i=0;$i<mysql_numrows($result);$i++)
{
$arr=mysql_fetch_row($result);
foreach ($arr as $k=>$v)
echo '$arr[',$k,"]=",$v,"<br>";
}
?>

27. Отримання даних

<?
$id=mysql_connect("localhost","root","");
if ($id==0)
die("Не можу підключитися до MySQL>");
mysql_select_db("phonebase");
$result=mysql_query("select * from phone");
while
(list($name,$email,$number,$id)=mysql_fetch_row($
result))
{
echo '$name=',$name,"<br>";
echo '$email=',$email,"<br>";
echo '$number=',$number,"<br>";
echo '$id=',$id,"<br>";
}
?>

28. Отримання даних

<html>
<table border=1>
<tr>
<th>ПІБ</th>
<th>E-mail</th>
<th>Номер</th>
</tr>
<?
$id=mysql_connect("localhost","root","");
if ($id==0)
die("Не можу підключитися до MySQL>");
mysql_select_db("phonebase");

29. Отримання даних

$result=mysql_query("select * from phone");
while
(list($name,$email,$number,$id)=mysql_fetch_row($
result))
echo ("<tr><td><a
href=\mysql\mysql_info.php?id=$id&name=$name>
$name</a></td><td>$email</td><td>$number</t
d></tr>");
?>
</table>
</html>

30. Додавання даних

<form
action=http://localhost/mysql/mysql_insert_t
able.php>
<p>Имя:<input type=text name=name>
<p>E-mail:<input type=text name=email>
<p>Номер:<input type=text
name=number>
<p><input type=submit>
</form>

31. Додавання даних

<?
$id=mysql_connect("localhost","root","");
if ($id==0) die("Не могу підключитися до MySQL");
mysql_select_db("phonebase");
mysql_query("insert into phone
(name,email,number,id)
values('$_REQUEST[name]','$_REQUEST[email]','$_R
EQUEST[number]','null');");
?>
В таблицу додано:<br>
ПІБ: <?echo $_REQUEST[name]?><br>
E-mail: <?echo $_REQUEST[email]?><br>
Номер: <?echo $_REQUEST[number]?><br>

32. Завантаження/вивантаження даних

За замовчуванням MySQL повертає всі
результати користувачеві, який зробив
запит
Але можливо і перенаправлення
результатів запиту в файл
Для цього використовується специфікатор
INTO OUTFILE filename
FIELDS TERMINATED BY 'c' визначає
символ, який використовується для поділу
полів

33. Завантаження/вивантаження даних

Для читання текстового файлу і вставки даних в
таблицю використовується оператор LOAD
LOAD DATA [LOCAL] INFILE file INTO TABLE ...
Передбачається, що зазначений файл знаходиться
на сервері
Якщо шлях до файлу не вказано, то
передбачається, що він знаходиться в тому ж
каталозі, що і база даних
Специфікатор LOCAL задає розташування файлу
на клієнтській машині

34. Завантаження/вивантаження даних

<?php
$id=mysql_connect("localhost","root","");
if ($id==0) die("Не могу підключитися до MySQL<br>");
mysql_query("create database `out`");
mysql_select_db("out");
mysql_query("CREATE TABLE `info` (`a` TEXT NOT NULL ,`b`
INT NOT NULL ,`c` TIMESTAMP);");
mysql_query("insert into info values('one',1,null)");
mysql_query("insert into info values('two',2,null)");
mysql_query("insert into info values('three',3,null)");
$result=mysql_db_query("out","select * from info");
while ($arr=mysql_fetch_assoc($result))
foreach ($arr as $k=>$v)
echo '$arr[',$k,"]=",$v,"<br>";
?>

35. Завантаження/вивантаження даних

36. Завантаження/вивантаження даних

<?
$id=mysql_connect("localhost","root","");
if ($id==0) die("Не могу підключитися до
MySQL");
mysql_select_db("out");
mysql_query("select * from info into outfile
'z:/out.txt' fields terminated by '#'");
?>

37. Завантаження/вивантаження даних

<?
$id=mysql_connect("localhost","root","");
if ($id==0) die("Не могу підключитися до MySQL");
mysql_select_db("out");
mysql_query("load data local infile 'z:/out.txt' into
table info fields terminated by '#'");
mysql_query("select * from info");
$result=mysql_db_query("out","select * from info");
while ($arr=mysql_fetch_assoc($result))
foreach ($arr as $k=>$v)
echo '$arr[',$k,"]=",$v,"<br>";
?>

38. Література:

English     Русский Rules