Скачать презентацию ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИИ Лекция 8 PHP и Скачать презентацию ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИИ Лекция 8 PHP и

ITS_First_Semestr_Lecture_8.pptx

  • Количество слайдов: 55

ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИИ Лекция 8 PHP и базы данных. Работа с СУБД My. ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИИ Лекция 8 PHP и базы данных. Работа с СУБД My. SQL Лектор: Берёза Евгений Олегович bereza. evgenij@gmail. com

Тема 4. Содержание PHP. Часть 4 1. 2. 3. 4. Основная информация о СУБД Тема 4. Содержание PHP. Часть 4 1. 2. 3. 4. Основная информация о СУБД My. SQL. Операторы и команды My. SQL. Функции PHP для работы с My. SQL. Практический пример использования PHP-функций для работы с My. SQL. 2

Тема 4. Основная информация о СУБД My. SQL БД и СУБД База данных (БД) Тема 4. Основная информация о СУБД My. SQL БД и СУБД База данных (БД) – представленная в объективной форме структурированную совокупность данных, систематизированных таким образом, чтобы эти данные могли быть найдены и обработаны с помощью электронной вычислительной машины (ЭВМ). Для записи, выборки и обработки данных, хранящихся в БД, необходима система управления базой данных (СУБД). My. SQL – реляционная (от англ. relation – отношение) СУБД, очень часто применяемая в сочетании с PHP. В реляционной базе данных данные хранятся в отдельных таблицах, благодаря чему достигается выигрыш в скорости и гибкости. Таблицы связываются между собой при помощи отношений, благодаря чему обеспечивается возможность получать при выполнении запроса данные из нескольких таблиц. SQL (structured query language – «язык структурированных запросов» ) – формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной БД. My. SQL правильно произносится как ''Май Эс Кью Эль''. 3

Тема 4. Основная информация о СУБД My. SQL Устройство My. SQL состоит из двух Тема 4. Основная информация о СУБД My. SQL Устройство My. SQL состоит из двух частей: серверной и клиентской. Сервер My. SQL постоянно работает на компьютере. Клиентские программы (например, скрипты PHP) посылают серверу My. SQL-запросы через механизм сокетов (то есть при помощи сетевых средств), сервер их обрабатывает и запоминает результат. То есть скрипт (клиент) указывает, какую информацио он хочет получить от сервера баз данных. Затем сервер баз данных посылает ответ (результат) клиенту (скрипту). Сервер My. SQL передает клиенту не весь результат, а лишь ссылку на область памяти на сервере, в которой содержится результат. Это происходит из-за того, что размер результирующего набора данных может быть слишком большим, и на его передачу по сети уйдет очень много времени. 4

Тема 4. Основная информация о СУБД My. SQL Устройство My. SQL (продолжение) Cтруктура My. Тема 4. Основная информация о СУБД My. SQL Устройство My. SQL (продолжение) Cтруктура My. SQL трехуровневая: • базы данных; • таблицы; • записи (строки или кортежи). Таблицы My. SQL физически представляются файлами с расширениями frm, MYD, MYI. Логически таблица представляет собой совокупность записей. А записи – это совокупность полей разного типа. Имя БД My. SQL уникально в пределах системы, а таблицы – в пределах БД, поля – в пределах таблицы. Один сервер My. SQL может поддерживать сразу несколько БД, доступ к которым может разграничиваться логином и паролем. Зная эти логин и пароль, можно работать с конкретной БД. 5

Тема 4. Основная информация о СУБД My. SQL Поля и их типы в My. Тема 4. Основная информация о СУБД My. SQL Поля и их типы в My. SQL БД с точки зрения My. SQL (и некоторых других СУБД) – это обыкновенный каталог (папка на диске), содержащий двоичные файлы определенного формата – таблицы. Таблицы состоят из записей, а записи, в свою очередь, состоят из полей. Поле имеет два основных атрибута – имя и тип. Основные тип полей в My. SQL: • целые; • вещественные; • строковые; • бинарные; • дата и время. 6

Тема 4. Основная информация о СУБД My. SQL Поля и их типы в My. Тема 4. Основная информация о СУБД My. SQL Поля и их типы в My. SQL: целочисленные типы данных Тип TINYINT SMALLINT MEDIUMINT BIGINT Диапазон -128. . . +127 -32768. . . +32767 -8 388 608. . . +8 388 607 -2 147 483 648. . . +2 147 483 647 -9 223 372 036 854 775 808. . . +9 223 372 036 854 775 807 Целочисленные типы данных записываются в виде: Тип (длина) [UNSIGNED] Длина – это количество знакомест, в которых будет размещено все число. Если указан модификатор UNSIGNED, знак числа (положительное или отрицательное число) учитываться не будет. 7

Тема 4. Основная информация о СУБД My. SQL Поля и их типы в My. Тема 4. Основная информация о СУБД My. SQL Поля и их типы в My. SQL: вещественные числа Тип FLOAT DOUBLE REAL DECIMAL NUMERIC Диапазон Небольшая точность Двойная точность То же, что и DOUBLE Дробное число, хранящееся в виде строки То же, что и DECIMAL Вещественные типы данных записываются в виде: Тип (длина, знаки) [UNSIGNED] Длина – это количество знакомест, в которых будет размещено все число при его передаче, а знаки – это количество знаков после десятичной точки, которые будут учитываться. Если указан модификатор UNSIGNED, знак числа (положительное или отрицательное число) учитываться не будет. 8

Тема 4. Основная информация о СУБД My. SQL Поля и их типы в My. Тема 4. Основная информация о СУБД My. SQL Поля и их типы в My. SQL: строки Тип TINYTEXT Диапазон Максимальная длина 255 символов Максимальная длина 65535 символов (64 Кб) Максимальная длина 16 777 215 символов Максимальная длина 4 294 967 295 символов TEXT MEDIUMTEXT LONGTEXT Любая строка - это массив символов. Строки записываются в виде: Тип (длина) Длина – это количество знакомест, в которых будут размещены все символы строки. При поиске с помощью оператора SELECT не учитывается регистр символов: строки "HELLO" и "Hello" считаются одинаковыми. 9

Тема 4. Основная информация о СУБД My. SQL Поля и их типы в My. Тема 4. Основная информация о СУБД My. SQL Поля и их типы в My. SQL: бинарные типы данных Тип TINYBLOB MEDIUMBLOB LONGBLOB Диапазон Максимум 255 символов Максимум 65535 символов Максимум 16 777 215 символов Максимум 4 294 967 295 Бинарные типы данных записываются в виде: Тип (длина) Длина – это количество знакомест, в которых будут размещены все символы. Бинарные типы данных также можно использовать для хранения текста, но при поиске будет учитываться регистр символов. К тому же, любой текстовый тип можно преобразовать в бинарный, указав модификатор BINARY 10

Тема 4. Основная информация о СУБД My. SQL Поля и их типы в My. Тема 4. Основная информация о СУБД My. SQL Поля и их типы в My. SQL: дата и время Тип DATE TIMESTAMP DATETIME Диапазон Дата в формате ГГГ-ММ-ДД Время в формате ЧЧ: ММ: СС Дата и время в формате timestamp, выводится в виде ГГГГММДДЧЧММСС Дата и время в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС 11

Тема 4. Операторы и команды My. SQL Структурированный язык запросов SQL позволяет производить различные Тема 4. Операторы и команды My. SQL Структурированный язык запросов SQL позволяет производить различные операции с БД: создавать таблицы, добавлять, обновлять, получать и удалять из них данные и. т. д. Несмотря на то, что последний стандарт SQL принят в 1992 году, на сегодняшний день нет ни одной СУБД, где бы он полностью выполнялся. Более того, в различных БД часть операций осуществляется по-разному. Команды SQL не чувствительны к регистру, но традиционно они набираются прописными буквами. 12

Тема 4. Операторы и команды My. SQL Первичные и внешние ключи Первичный ключ (primary Тема 4. Операторы и команды My. SQL Первичные и внешние ключи Первичный ключ (primary key или PK) – это поле или минимальный набор полей со значениями, которые являются уникальными для всей таблицы и с помощью которых можно однозначно отличить одну строку от другой. Значения ключа могут использоваться для обозначения всех записей, при этом каждая запись имеет отдельное значение ключа. Каждая таблица может содержать только один первичный ключ. Таблица «Студенты» : Номер студенческого Фамилия Имя Отчество Дата рождения 8140001 Иванович 27. 09. 1996 8140002 Петрович 10. 02. 1995 8140003 Сидоров Сидр Сидорович 02. 05. 1996 Поле «Номер студенческого» входит в первичный ключ. Поля «Фамилия» , «Имя» и «Отчество» не могут входить в первичный ключ, т. к. они не являются уникальными, а использовать их вместе с номером студенческого нельзя, т. к. такой набор полей не будет минимальным. 13

Тема 4. Операторы и команды My. SQL Первичные и внешние ключи Внешний ключ (foreign Тема 4. Операторы и команды My. SQL Первичные и внешние ключи Внешний ключ (foreign key или FK) – это столбец или сочетание столбцов, которое применяется для принудительного установления связи между данными в двух таблицах. Таблица «Зачетные книжки» : Номер зачетной книжки Номер студенческого Год начала ведения 81400010 8140001 2014 81400020 8140002 2014 81400030 8140003 2014 81400011 8140001 2018 Поле «Номер студенческого» входит во внешний ключ. С помощью него осуществляется связь с таблицей студентов и можно получить ФИО и дату рождения студента, которому принадлежит зачетная книжка. 14

Тема 4. Операторы и команды My. SQL Создание БД (оператор CREATE) Создать БД через Тема 4. Операторы и команды My. SQL Создание БД (оператор CREATE) Создать БД через SQL-запрос позволяет оператор CREATE. Его синтаксис: CREATE DATABASE [Имя_БД] С помощью оператора CREATE можно создавать и другие объекты: таблицы, представления, индексы и т. д. 15

Тема 4. Операторы и команды My. SQL Создание таблиц БД (оператор CREATE) Создать таблицу Тема 4. Операторы и команды My. SQL Создание таблиц БД (оператор CREATE) Создать таблицу через SQL-запрос позволяет оператор CREATE. Его синтаксис: CREATE TABLE IF NOT EXISTS [Имя_таблицы_1] ( [Имя_поля_1] [Тип_данных] [Модификатор], . . . [Имя_поля_N] [Тип_данных] [Модификатор] PRIMARY KEY ([Имя_поля_1], [Имя_поля_M]) FOREING KEY ([Имя_поля_K]) REFERENCES [Имя_таблицы_2] ([Имя_поля_L]) ) 16

Тема 4. Операторы и команды My. SQL Создание таблиц БД (оператор CREATE) В качестве Тема 4. Операторы и команды My. SQL Создание таблиц БД (оператор CREATE) В качестве модификаторов можно использовать следующие значения: • NOT NULL - поле не может содержать неопределенного значения (NULL), то есть поле должно быть явно инициализировано; • PRIMARY KEY - поле будет первичным ключом (идентификатором записи), по которому можно однозначно идентифицировать запись; • AUTO_INCREMENT - при вставке новой записи значение этого поля будет автоматически увеличено на единицу, поэтому в таблице не будет двух записей с одинаковым значением этого поля; • DEFAULT - задает значение, которое будет использовано по умолчанию, если при вставке записи поле не будет инициализировано явно. 17

Тема 4. Операторы и команды My. SQL Пример создание таблиц БД (оператор CREATE) Создадим Тема 4. Операторы и команды My. SQL Пример создание таблиц БД (оператор CREATE) Создадим таблицы - «Клиенты» , «Товары» , «Заказы» , «Товары заказа» . 18

Тема 4. Операторы и команды My. SQL Пример создание таблиц БД (оператор CREATE) Таблица Тема 4. Операторы и команды My. SQL Пример создание таблиц БД (оператор CREATE) Таблица «Клиенты» CREATE TABLE IF NOT EXISTS CLIENTS ( CLIENT_ID int PRIMARY KEY AUTO_INCREMENT, LAST_NAME char(40) NOT NULL, SECOND_NAME char(40) NOT NULL, ADDRESS TINYTEXT NOT NULL, CITY char(20) NOT NULL, PHONE char(11) NOT NULL ); Таблица CLIENTS содержит поля CLIENT_ID (номер клиента, который является первичным ключом и автоматически определяется для каждого клиента, начиная с 1 с шагом 1), LAST_NAME (фамилия), NAME (имя), SECOND_NAME (отчество), ADDRESS (адрес), CITY (город) и PHONE (телефон). Все эти поля не могут содержать пустое значение (NOT NULL). 19

Тема 4. Операторы и команды My. SQL Пример создание таблиц БД (оператор CREATE) (продолжение) Тема 4. Операторы и команды My. SQL Пример создание таблиц БД (оператор CREATE) (продолжение) Таблица «Товары» CREATE TABLE IF NOT EXISTS GOODS ( PRODUCT_ID int AUTO_INCREMENT, NAME varchar(255) NOT NULL, PRICE double(9, 2) NOT NULL, STOCK_QUANTITY int NOT NULL, PRIMARY KEY (PRODUCT_ID) ); Таблица GOODS содержит поля PRODUCT_ID (номер товара, который является первичным ключом и автоматически определяется для каждого клиента, начиная с 1 с шагом 1), NAME (название), PRICE (цена, тип double(9, 2) означает, что 9 знаков относим под целую часть, и два - под дробную), STOCK_QUANTITY (количество товара на складе). Все эти поля не могут содержать пустое значение (NOT NULL). 20

Тема 4. Операторы и команды My. SQL Пример создание таблиц БД (оператор CREATE) (продолжение) Тема 4. Операторы и команды My. SQL Пример создание таблиц БД (оператор CREATE) (продолжение) Таблица «Заказы» CREATE TABLE IF NOT EXISTS ORDERS ( ORDER_ID int PRIMARY KEY AUTO_INCREMENT, CLIENT_ID int NOT NULL, CREATION_DATE date NOT NULL, PAYMENT_DATE date default NULL, FOREING KEY (CLIENT_ID) REFERENCES CLIENTS (CLIENT_ID) ); Таблица ORDERS содержит поля ORDER_ID (номер заказа, который является первичным ключом и автоматически определяется для каждого клиента, начиная с 1 с шагом 1), CLIENT_ID (номер клиента из таблицы CLIENTS), CREATION_DATE (дата создания заказа), PAYMENT_DATE (дата оплаты заказа). 21

Тема 4. Операторы и команды My. SQL Пример создание таблиц БД (оператор CREATE) (продолжение) Тема 4. Операторы и команды My. SQL Пример создание таблиц БД (оператор CREATE) (продолжение) Таблица «Товары заказа» CREATE TABLE IF NOT EXISTS ORDERS_GOODS ( ORDER_ID int, PRODUCT_ID int, PRICE double(9, 2) NOT NULL QUANTITY int default 1, PRIMARY KEY (ORDER_ID, PRODUCT_ID), FOREING KEY (ORDER_ID) REFERENCES ORDERS (ORDER_ID), FOREING KEY (PRODUCT_ID) REFERENCES GOODS (PRODUCT_ID) ); Таблица ORDERS_GOODS содержит поля ORDER_ID (номер заказа из таблицы ORDERS, который входит в первичный ключ), PRODUCT_ID (номер товара из таблицы GOODS, который также входит в первичный ключ), PRICE (цена товара на момент покупки), QUANTITY (количество товара в заказе). 22

Тема 4. Операторы и команды My. SQL Добавление данных в таблицу БД (оператор INSERT) Тема 4. Операторы и команды My. SQL Добавление данных в таблицу БД (оператор INSERT) Для добавления записей используется оператор INSERT: INSERT INTO Имя_таблицы [(Список полей через запятую)] VALUES (Список значений соответствующих полей через запятую); После выполнения оператора INSERT будет создана новая запись, в качестве значений полей будут использованы соответствующие значения, указанные в списке VALUES. 23

Тема 4. Операторы и команды My. SQL Пример добавления данных в таблицу БД (оператор Тема 4. Операторы и команды My. SQL Пример добавления данных в таблицу БД (оператор INSERT) Добавим данные в таблицу «Клиенты» INSERT INTO CLIENTS (LAST_NAME, SECOND_NAME, ADDRESS, CITY, PHONE) VALUES (‘Иванов’, ‘Иванович’, ‘г. Зеленоград, проезд 4806’, ‘Москва’, ‘ 8 -499 -88888 -88’), (‘Петров’, ‘Петрович’, ‘г. Клин, ул. Карла Маркса’, ‘Клин’, ‘ 8 -496 -399 -9999’); CLIENT_ID LAST_NAME SECOND_NAME ADDRESS CITY PHONE 1 Иванович г. Зеленогра д, проезд 4806 Москва 8 -499 -888 -88 -88 2 Петрович г. Клин, ул. Карла Маркса Клин 8 -496 -399 -99 -99 24

Тема 4. Операторы и команды My. SQL Пример добавления данных в таблицу БД (оператор Тема 4. Операторы и команды My. SQL Пример добавления данных в таблицу БД (оператор INSERT) Добавим данные в таблицу «Товары» INSERT INTO GOODS (NAME, PRICE, STOCK_QUANTITY) VALUES (‘Молоко’, 50. 5, 10), (‘Хлеб’, 20, 25); PRODUCT_ID NAME PRICE STOCK_QUANTITY 1 Молоко 50. 5 10 2 Хлеб 20 25 25

Тема 4. Операторы и команды My. SQL Пример добавления данных в таблицу БД (оператор Тема 4. Операторы и команды My. SQL Пример добавления данных в таблицу БД (оператор INSERT) Добавим данные в таблицу «Заказы» INSERT INTO ORDERS (CLIENT_ID, CREATION_DATE, PAYMENT_DATE) VALUES (2, ‘ 2016 -05 -20’, NULL), (1, ‘ 2016 -05 -21’); ORDER_ID CLIENT_ID CREATION_DATE PAYMENT_DATE 1 2 2016 -05 -20 NULL 2 1 2016 -05 -21 26

Тема 4. Операторы и команды My. SQL Пример добавления данных в таблицу БД (оператор Тема 4. Операторы и команды My. SQL Пример добавления данных в таблицу БД (оператор INSERT) Добавим данные в таблицу «Товары заказа» INSERT INTO ORDERS_GOODS (ORDER_ID, PRODUCT_ID, PRICE, QUANTITY) VALUES (1, 2, 20, 2), (1, 1, 50. 5, 1), (2, 2, 20, 3); ORDER_ID PRODUCT_ID PRICE QUANTITY 1 2 20 2 1 1 50. 5 1 2 2 20 3 27

Тема 4. Операторы и команды My. SQL Обновление записей в таблице БД (оператор UPDATE) Тема 4. Операторы и команды My. SQL Обновление записей в таблице БД (оператор UPDATE) Синтаксис оператора UPDATE, который используется для обновления записей, выглядит так: UPDATE Имя_таблицы SET Поле 1 = Значение 1, . . . , Поле. N = Значение. N [WHERE Условие]; Если не задано условие WHERE, будет модифицирована вся таблица, а это может повлечь за собой непредсказуемые последствия, поскольку для всех записей будут установлены одинаковые значения полей, поэтому всегда указывайте условие WHERE. 28

Тема 4. Операторы и команды My. SQL Пример обновления данных в таблице БД (оператор Тема 4. Операторы и команды My. SQL Пример обновления данных в таблице БД (оператор UPDATE) Обновим цены на продукты: UPDATE GOODS SET PRICE = 62 WHERE PRODUCT_ID = 1; NAME PRICE STOCK_QUANTITY Молоко 50. 5 10 2 После: PRODUCT_ID 1 До: Хлеб 20 25 PRODUCT_ID NAME PRICE STOCK_QUANTITY 1 Молоко 62 10 2 Хлеб 20 25 29

Тема 4. Операторы и команды My. SQL Удаление записей из таблицы БД (оператор DELETE) Тема 4. Операторы и команды My. SQL Удаление записей из таблицы БД (оператор DELETE) Синтаксис оператора DELETE, который используется для удаления записей, выглядит так: DELETE FROM Имя_таблицы [WHERE Условие]; Если не задано условие WHERE, будут удалены все строки таблицы, поэтому всегда указывайте условие WHERE. 30

Тема 4. Операторы и команды My. SQL Пример удаления данных из таблицы БД (оператор Тема 4. Операторы и команды My. SQL Пример удаления данных из таблицы БД (оператор DELETE) Удалим все заказы клиента «Петрович (CLIENT_ID = 2)» . Сначала удалим товары заказов: DELETE FROM ORDERS_GOODS WHERE ORDER_ID IN (SELECT ORDER_ID FROM ORDERS WHERE CLIENT_ID = 2); До: PRODUCT_ID PRICE QUANTITY 1 2 20 2 1 1 50. 5 1 2 После: ORDER_ID 2 20 3 ORDER_ID PRODUCT_ID PRICE QUANTITY 2 2 20 3 31

Тема 4. Операторы и команды My. SQL Пример удаления данных из таблицы БД (оператор Тема 4. Операторы и команды My. SQL Пример удаления данных из таблицы БД (оператор DELETE) Затем удалим сами заказы: DELETE FROM ORDERS WHERE CLIENT_ID = 2; До: CLIENT_ID 1 2 2016 -05 -20 NULL 2 После: ORDER_ID CREATION_DATE PAYMENT_DATE 1 2016 -05 -21 ORDER_ID CLIENT_ID 2 1 CREATION_DATE PAYMENT_DATE 2016 -05 -21 32

Тема 4. Операторы и команды My. SQL Выбор записей из таблицы БД (оператор SELECT) Тема 4. Операторы и команды My. SQL Выбор записей из таблицы БД (оператор SELECT) Синтаксис оператора SELECT, который используется для получения записей, выглядит так: SELECT {*| [поле 1 AS псевдоним] [, . . . , поле. N AS псевдоним]} FROM Имя_таблицы1 [, . . . , Имя_таблицы. N] [WHERE условия выборки данных] [ORDER BY список полей] Если не задано условие WHERE, будут выбраны все строки таблиц 33

Тема 4. Операторы и команды My. SQL Пример получения данных из таблицы БД (оператор Тема 4. Операторы и команды My. SQL Пример получения данных из таблицы БД (оператор SELECT) Получим ФИО, адреса и телефоны всех клиентов: SELECT LAST_NAME, SECOND_NAME, ADDRESS, PHONE FROM CLIENTS; CLIENT_ID LAST_NAME SECOND_NAME ADDRESS PHONE 1 Иванович г. Зеленоград, 8 -499 -888 -88 -88 проезд 4806 2 Петрович г. Клин, ул. Карла Маркса 8 -496 -399 -99 -99 34

Тема 4. Операторы и команды My. SQL Пример получения данных из таблицы БД (оператор Тема 4. Операторы и команды My. SQL Пример получения данных из таблицы БД (оператор SELECT) Получим всю информацию о товарах, цена которых больше 50 руб: SELECT * FROM GOODS WHERE PRICE > 50; PRODUCT_ID NAME PRICE STOCK_QUANTITY 1 Молоко 50. 5 10 Используются следующие операторы отношений: <, >, =, <> (не равно), <=, >=. 35

Тема 4. Операторы и команды My. SQL Выбор записей из таблицы БД с поиском Тема 4. Операторы и команды My. SQL Выбор записей из таблицы БД с поиском по шаблону (оператор SELECT) Для поиска по шаблону используется функция (оператор) LIKE. Функция производит сравнение с шаблоном, используя операции сравнения простых регулярных выражений в SQL. Возвращает 1 (ИСТИНА) или 0 (ЛОЖЬ). Выражение LIKE предусматривает использование следующих двух шаблонных символов: % Соответствует любому количеству символов, даже нулевых _ Соответствует ровно одному символу Если необходим поиск строк, не соответствующих шаблону, используется функция NOT LIKE. 36

Тема 4. Операторы и команды My. SQL Пример выбора записей из таблицы БД с Тема 4. Операторы и команды My. SQL Пример выбора записей из таблицы БД с поиском по шаблону (оператор SELECT) Получим ФИО и телефоны всех клиентов, у которых в адресе присутствует Зеленоград: SELECT LAST_NAME, SECOND_NAME, PHONE FROM CLIENTS WHERE ADDRESS LIKE ‘%Зеленоград%’ Получим ФИО и адрес тех клиентов, у которых номера телефонов не соответствуют формату X-XX-XX: SELECT LAST_NAME, SECOND_NAME, ADDRESS FROM CLIENTS WHERE PHONE NOT LIKE ‘_-__-__’ 37

Тема 4. Операторы и команды My. SQL Выбор записей из нескольких таблиц БД (оператор Тема 4. Операторы и команды My. SQL Выбор записей из нескольких таблиц БД (оператор SELECT) Для выбора данных из нескольких таблиц необходимо их связать между собой через первичные и внешние ключи. Существует 2 способа связывания таблиц. 1 способ (в разделе FROM) SELECT {*| [поле 1] [, . . . , поле. N]} FROM Имя_таблицы1 INNER | LEFT | RIGHT JOIN Имя_таблицы2 ON Имя_таблицы1. Столбец1 = Имя_таблицы2. Столбец2 INNER | LEFT | RIGHT JOIN Имя_таблицы3 ON Имя_таблицы2. Столбец3 = Имя_таблицы3. Столбец4 38

Тема 4. Операторы и команды My. SQL Пример выбора записей из нескольких таблиц БД Тема 4. Операторы и команды My. SQL Пример выбора записей из нескольких таблиц БД (оператор SELECT) Получим ФИО клиентов, номера и даты совершения всех их заказов c 21 мая 2016 года и до конца месяца: SELECT CLIENTS. LAST_NAME, CLIENTS. SECOND_NAME, ORDERS. ORDER_ID, ORDERS. CREATION_DATE FROM CLIENTS INNER JOIN ORDERS ON CLIENTS. CLIENT_ID = ORDERS. CLIENT_ID WHERE ORDERS. CREATION_DATE >= ‘ 2016 -05 -21’ AND ORDERS. CREATION_DATE <= ‘ 2016 -05 -31’ LAST_NAME SECOND_NAME Иванович Иван ORDER_ID CREATION_DATE 2 2016 -05 -21 39

Тема 4. Операторы и команды My. SQL Выбор записей из нескольких таблиц БД (оператор Тема 4. Операторы и команды My. SQL Выбор записей из нескольких таблиц БД (оператор SELECT) Для выбора данных из нескольких таблиц необходимо их связать между собой через первичные и внешние ключи. Существует 2 способа связывания таблиц. 2 способ (в разделе WHERE) SELECT {*| [поле 1] [, . . . , поле. N]} FROM Имя_таблицы1, Имя_таблицы2, Имя_таблицы3 WHERE Имя_таблицы1. Столбец1 = Имя_таблицы2. Столбец2 AND Имя_таблицы2. Столбец3 = Имя_таблицы3. Столбец4 40

Тема 4. Операторы и команды My. SQL Пример выбора записей из нескольких таблиц БД Тема 4. Операторы и команды My. SQL Пример выбора записей из нескольких таблиц БД (оператор SELECT) Получим фамилии и имена клиентов, номера их заказов, названия и количество товаров в заказе: SELECT CLIENTS. LAST_NAME, CLIENTS. NAME AS CLIENT_NAME, ORDERS. ORDER_ID, GOODS. NAME AS PRODUCT_NAME, ORDERS_GOODS. QUANTITY FROM CLIENTS, ORDERS, GOODS, ORDERS_GOODS WHERE CLIENTS. CLIENT_ID = ORDERS. CLIENT_ID AND ORDERS_GOODS. PRODUCT_ID = GOODS. PRODUCT_ID AND ORDERS_GOODS. ORDER_ID = ORDERS. ORDER_ID LAST_NAME CLIENT_NAME ORDER_ID PRODUCT_NAME QUANTITY Иванов Иван 2 Хлеб 3 Петров Петр 1 Молоко 1 Петров Петр 1 Хлеб 2 41

Тема 4. Операторы и команды My. SQL Удаление полей и таблиц (оператор DROP) Синтаксис Тема 4. Операторы и команды My. SQL Удаление полей и таблиц (оператор DROP) Синтаксис оператора DROP для удаления поля таблицы выглядит так: ALTER TABLE Имя_таблицы DROP Имя_поля Синтаксис оператора DROP для удаления таблицы выглядит так: DROP Имя_таблицы 42

Тема 4. Операторы и команды My. SQL Пример удаления полей и таблиц (оператор DROP) Тема 4. Операторы и команды My. SQL Пример удаления полей и таблиц (оператор DROP) Удалим поле цена из таблицы товаров заказов: ALTER TABLE ORDERS_GOODS DROP PRICE Удалим таблицу товаров заказов: DROP TABLE ORDERS_GOODS 43

Тема 4. Функции PHP для работы с My. SQL PHP-функции подключения к СУБД My. Тема 4. Функции PHP для работы с My. SQL PHP-функции подключения к СУБД My. SQL Основной функцией для соединения с сервером My. SQL является mysql_connect(), которая подключает скрипт к серверу баз данных My. SQL и выполняет авторизацию пользователя в БД. Синтаксис функции: resource mysql_connect ([string $hostname [, string $user [, string $password, [, bool new_link]]]]); Все параметры данной функции являются необязательными, поскольку значения по умолчанию можно прописать в конфигурационном файле php. ini. Для указания другого имени My. SQL-хоста, пользователя и пароля, необходимо передать их в качестве параметров функции. Параметр $hostname может быть указан в виде: хост: порт. Возвращает указатель на соединение с My. SQL в случае успешного выполнения, или FALSE при неудаче. Если второй вызов функции произошёл с теми же аргументами mysql_connect(), новое соединение не будет установлено, функция вернёт ссылку на уже установленное соединение. Параметр new_link может заставить 44 функцию mysql_connect() открыть ещё одно соединение.

Тема 4. Функции PHP для работы с My. SQL Пример использования PHP-функции подключения к Тема 4. Функции PHP для работы с My. SQL Пример использования PHP-функции подключения к СУБД My. SQL 45

Тема 4. Функции PHP для работы с My. SQL PHP-функции подключения к СУБД My. Тема 4. Функции PHP для работы с My. SQL PHP-функции подключения к СУБД My. SQL (продолжение) Функция mysql_connect() устанавливает обыкновенное соединение с My. SQL. Однако, PHP поддерживает постоянные соединения - для этого используйте функцию mysql_pconnect(). Аргументы этой функции такие же, как и у mysql_connect(). Разница между постоянным соединением и обыкновенным соединением с My. SQL: • постоянное соединение не закрывается после завершения работы скрипта, даже если скрипт вызвал функцию mysql_close(), соединение привязывается к PID потомка веб сервера Apache (от имени которого он и работает) и закрывается лишь тогда, когда удаляется процесс-владелец (например, при завершении работы или перезагрузке веб-сервера Apache); • постоянные соединения позволяют значительно снизить нагрузку на сервер, а также повысить скорость работы PHP скриптов, использующих базы данных, т. к. не тратится время на установку соединения с СУБД; При работе с постоянными соединениями нужно следить, чтобы максимальное число клиентов Apache не превышало максимального числа клиентов My. SQL, то есть параметр Max. Client (в конфигурационном файле Apache - httpd. conf) должен быть меньше или равен параметру max_user_connection (параметр 46 My. SQL).

Тема 4. Функции PHP для работы с My. SQL PHP функция выбора БД Для Тема 4. Функции PHP для работы с My. SQL PHP функция выбора БД Для выбора БД, с которой будет работать PHP скрипт, используется функция mysql_select_db(). Синтаксис функции: bool mysql_select_db (string database_name [, resource link_identifier]) Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки. Функция mysql_select_db() выбирает для работы указанную БД на сервере, на который ссылается переданный указатель (link_identifier). Если параметр указателя опущен, используется последнее открытое соединение. Если нет ни одного открытого соединения, функция попытается соединиться с сервером аналогично функции mysql_connect(), вызванной без параметров.

Тема 4. Функции PHP для работы с My. SQL PHP-функции обработки ошибок СУБД Если Тема 4. Функции PHP для работы с My. SQL PHP-функции обработки ошибок СУБД Если произойдет ошибка соединения с My. SQL, то скрипт завершит свою работу. Ошибки работы с My. SQL не вызывают сообщений в PHP. Поэтому, в PHP есть две функции получения ошибок: string mysql_error ([resource link_identifier]) – возвращает строку ошибки последней операции с My. SQL int mysql_errno ([resource link_identifier]) – возвращает численный код ошибки выполнения последней операции с My. SQL Данные функция возвращает код ошибки только последней выполненной функции. Необходимо проверять результат работы функции до вызова следующей. 48

Тема 4. Функции PHP для работы с My. SQL Пример использования PHP-функций обработки ошибок Тема 4. Функции PHP для работы с My. SQL Пример использования PHP-функций обработки ошибок СУБД Вышеописанный код выдаст следующий результат: 1049: Unknown database 'nonexistentdb' 1146: Table 'kossu. nonexistenttable' doesn't exist 49

Тема 4. Функции PHP для работы с My. SQL PHP-функция выполнения запросов к СУБД Тема 4. Функции PHP для работы с My. SQL PHP-функция выполнения запросов к СУБД Все запросы к БД отправляются функцией mysql_query(). Этой функции нужно передать один параметр - текст запроса. Текст запроса может содержать пробельные символы и символы новой строки (n). Текст должен быть составлен по правилам синтаксиса SQL. Синтаксис функции: resource mysql_query (string query [, resource link_identifier]); mysql_query() посылает запрос активной базе данных сервера, на который ссылается переданный указатель. Если параметр link_identifier опущен, используется последнее открытое соединение. Если открытые соединения отсутствуют, функция пытается соединиться с СУБД, аналогично функции mysql_connect() без параметров. Результат запроса буфферизируется. Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() возвращает указатель на результат запроса, или FALSE если запрос не был выполнен. В остальных случаях (INSERT, UPDATE, DELETE, DROP, и т. п. ), mysql_query() возвращает TRUE в случае успешного запроса и FALSE в случае ошибки. Значение не равное FALSE говорит о том, что запрос был выполнен успешно. Он не говорит о количестве затронутых или возвращённых 50 рядов. Вполне возможна ситуация, когда успешный запрос не затронет ни

Тема 4. Функции PHP для работы с My. SQL Пример использования PHP-функция выполнения запросов Тема 4. Функции PHP для работы с My. SQL Пример использования PHP-функция выполнения запросов к СУБД Приведенный запрос должен вернуть содержимое таблицы mytable. Результат запроса присваивается переменной $resource. Результат – это ссылка на область полученных данных, а не сами данные. Для получения данных необходимо их построчно считать с помощью одной из функций обработки результатов запроса mysql_fetch_array(), mysql_fetch_row(), mysql_fetch_assoc(). 51

Тема 4. Функции PHP для работы с My. SQL PHP-функции обработки результатов запроса СУБД Тема 4. Функции PHP для работы с My. SQL PHP-функции обработки результатов запроса СУБД Если запрос, выполненный с помощью функции mysql_query() успешно выполнился, то в результате клиент получит набор записей, который может быть обработан следующими функциями PHP: array mysql_fetch_row (resource result) – обрабатывает ряд результата запроса и возвращает неассоциативный массив; array mysql_fetch_assoc (resource result) – обрабатывает ряд результата запроса и возвращает ассоциативный массив; array mysql_fetch_array (resource result [, int result_type]) – обрабатывает ряд результата запроса, возвращая ассоциативный массив, неассоциативный массив или массив с числовыми и строковыми ключами (объединение ассоциативного и неассоциативного массивов). 52

Тема 4. Функции PHP для работы с My. SQL Пример использования PHP-функций обработки результатов Тема 4. Функции PHP для работы с My. SQL Пример использования PHP-функций обработки результатов запроса СУБД 53

Тема 4. Функции PHP для работы с My. SQL PHP-функция отключение от СУБД Для Тема 4. Функции PHP для работы с My. SQL PHP-функция отключение от СУБД Для закрытия соединения с СУБД используется функция mysql_close(). Синтаксис функции: bool mysql_close ([resource link_identifier]) Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки. mysql_close() закрывает соединение с базой данных My. SQL, на которое указывает переданный указатель. Если параметр link_identifier не указан, закрывается последнее открытое (текущее) соединение. Использование mysql_close() не необходимо для непостоянных соединений. Они автоматически закрываются в конце скрипта. 54

Тема 4. Практический пример использования PHP-функций для работы с My. SQL <? php //Устанавливаем Тема 4. Практический пример использования PHP-функций для работы с My. SQL My. SQL connect error!"); //Выбираем БД mysql_select_db("students"); //Выводим заголовок таблицы? >

< /tr>
EmailИмяМесяцЧислоПол
55