- •Язык php
- •Динамические сайты
- •Преимущества обработки страниц на стороне сервера
- •Современные технологии обработки страниц на стороне сервера
- •Active Server Pages (asp)
- •Java Servlets и jsp
- •Контрольные вопросы
- •Возможности языкаPhp ОбработкаHtmLформ
- •ГенерированиеHtmLстраниц
- •Взаимодействие с субд
- •Поддержка большого количества библиотек
- •Контрольные вопросы
- •Создание динамических страниц Создание простейшегоPhp-скрипта
- •Рнр и код, выполняемый на стороне клиента
- •Взаимодействие с пользователем
- •Контрольные вопросы
- •Синтаксис языкаPhp Типы данных
- •Константы
- •Объявление и инициализация переменных
- •Преобразование типов
- •Арифметические операторы
- •Унарный оператор
- •Оператор конкатенации строк
- •Сокращенная запись для присвоениязначений переменным
- •Операторы сравнения
- •Условные операторы
- •Функции пользователя
- •Массивы
- •Работа с файлами
- •Контрольные вопросы
- •Рнр иMySql Обработка и хранение структурированных данных
- •Динамические сайты, использующие базу данных
- •Построение реляционной базы данных
- •Продавцы
- •Заказчики
- •SqLзапросы к реляционной базе данных
- •Insert into salespeople values(1001,'Иванов','Москва',0.12);
- •Insert into customers values(2001,'Белкин','Москва',100,1001);
- •Insert into orders values(3008,4723.00,'2002-10-05',2006,1001);
- •Особенности реализацииMySql
- •ВзаимодействиеPhp иMySql
- •Контрольные вопросы
- •Разработка системы "Прайс-лист"
- •Постановка задачи
- •Принципы функционирования программного комплекса
- •Разработка структуры базы данных
- •Проектирование системы администрирования
- •Проектирование генератора прайс-листа
- •Контрольные вопросы
Продавцы
SNUM |
SNAME |
CITY |
COMM |
1001 |
Иванов |
Москва |
0.12 |
1002 |
Петров |
Екатеринбург |
0.13 |
1004 |
Сидоров |
Москва |
0.11 |
1007 |
Егоров |
Санкт-Петербург |
0.15 |
1003 |
Васильев |
Смоленск |
0.10 |
Заказчики
CNUM |
CNAME |
CITY |
RATING |
SNUM |
2001 |
Белкин |
Москва |
100 |
1001 |
2002 |
Зайцев |
Новосибирск |
200 |
1003 |
2003 |
Орлов |
Екатеринбург |
200 |
1002 |
2004 |
Соколов |
Владивосток |
300 |
1002 |
2006 |
Медведев |
Москва |
100 |
1001 |
2008 |
Волков |
Екатеринбург |
300 |
1007 |
2007 |
Грачев |
Новосибирск |
100 |
1004 |
Заказы
ONUM |
AMT |
ODATE |
CNUM |
SNUM |
3001 |
18.69 |
2002-10-03 |
2008 |
1007 |
3003 |
767.19 |
2002-10-03 |
2001 |
1001 |
3002 |
1900.10 |
2002-10-03 |
2007 |
1004 |
3005 |
5160.45 |
2002-10-03 |
2003 |
1002 |
3006 |
1098.16 |
2002-10-03 |
2008 |
1007 |
3009 |
1713.23 |
2002-10-04 |
2002 |
1003 |
3007 |
75.75 |
2002-10-04 |
2004 |
1002 |
3008 |
4723.00 |
2002-10-05 |
2006 |
1001 |
3010 |
1309.95 |
2002-10-06 |
2004 |
1002 |
3011 |
9891.88 |
2002-10-06 |
2006 |
1001 |
Для того, чтобы понять смысл данных, представленных в таблице, необходимо привести расшифровку названий столбцов, присутствующих в таблицах.
Продавцы | |
Поле |
Назначение |
snum |
уникальный номер продавца |
sname |
имя продавца |
city |
расположение продавца (город) |
com |
комиссия от суммы сделки |
Заказчики | |
Поле |
Назначение |
cnum |
уникальный номер заказчика |
cname |
имя заказчика |
city |
расположение заказчика (город) |
rating |
код указывающего уровень предпочтения данного заказчика перед другими. |
snum |
номер продавца назначенного этому заказчику (из таблицы "Продавцы") |
Заказы | |
Поле |
Назначение |
onum |
уникальный номер заказа |
amt |
стоимость заказа |
odate |
дата получения заказа |
cnum |
номер заказчика (из таблицы "Заказчики") |
snum |
номер продавца, оформившего заказ (из таблицы "Продавцы"). |
SqLзапросы к реляционной базе данных
В данном разделе будут приведены примеры SQL запросов к реляционной базе данных. Все запросы, рассматриваемые в данном разделе адаптированы для применения в СУБД MySQL. О некоторых особенностях реализации языка SQL в СУБД MySQL будет рассказано ниже.
Команды языка SQL можно условно разделить на две категории:
команды определения данных – предназначенные для создания/модификации объектов (таблиц, записей, индексов)
команды манипулирования данных – предназначенные для организации выборки данных
Для того, чтобы делать выборки из базы данных, необходимо предварительно создать базу данных и наполнить ее информацией. Поэтому, рассмотрение команд языка SQL будет начато с команд определения данных.
Как уже было сказано, база данных состоит из совокупности таблиц. В свою очередь, каждая таблица определяется набором столбцов. Каждый столбец является атрибутом объектов (записей), хранящихся в таблице. Атрибуты могут быть как числовыми, так и символьными. При описании таблицы необходимо явно указывать, данные какого типа будут храниться в каждом ее столбце.
В различных СУБД базовые типы данных могут сильно различаться. Ниже будет приведены типы данных, характерные для СУБД MySQL.
TINYINT – целое число в диапазоне от -128 до 127.
SMALLINT - целое число в диапазоне от -32768 до 32767.
MEDIUMINT - целое число в диапазоне от -8388608 до 8388607.
INT - целое число в диапазоне от -2147483648 до 2147483647.
BIGINT - целое число в диапазоне от -9223372036854775808 до 9223372036854775807
FLOAT[(M,D)] – вещественное число. Диапазоны значений от
-3.402823466E+38 до -1.175494351E-38, 0 и от 1.175494351E-38 до 3.402823466E+38. M – количество десятичных символов в представлении числа, D – количество знаков после запятой.
DATE – дата, представляемая в формате 'ГГГГ-ММ-ДД'.
Диапазон от '1000-01-01' до '9999-12-31'.
CHAR(M) – строка длиной M символов. Для хранения данных резервируется М байт памяти. В случае, если хранимая строка короче, оставшееся место остается незаполненным. Длина строки может быть от 1 до 255 символов.
VARCHAR(M) – строка длиной от 1 до M символов, в зависимости от размера хранимой строки. Длина строки не может превышать 255 символов.
TEXT - строка длиной до 65535символов.
MEDIUMTEXT – строка длиной 16777215 символов.
LONGTEXT - строка длиной 4294967295 символов.
Построение и последующее управление базой данных с использованием SQL-запросов можно осуществить при помощи стандартного клиента, имеющегося в составе СУБД MySQL (аналогичного эффекта можно добиться при помощи встроенных функций PHP, которые будут рассмотрены в разделе "взаимодействие PHP и MySQL"). Программа-клиент представляет собой консольное приложение, работающее в текстовом режиме. Процесс взаимодействия пользователя с СУБД заключается в последовательном вводе SQL-запросов. Клиент отображает результаты запросов, выводит сообщения о синтаксических ошибках в запросах, а так же обладает рядом сервисных функций, расширяющих возможность языка SQL (более подробную информацию можно найти в документации, поставляемой вместе со свободно распространяемой СУБД MySQL).
Создадим базу данных, разместим внутри нее таблицы согласно структуре, разработанной в предыдущем разделе ("Построение реляционной базы данных").
create database mybase;
В результате будет создана база банных с именем mybase
use mybase;
Эта команда не описана в стандарте языка SQL и является внутренней директивой MySQL. Команда предназначена для выбора текущей базы данных (СУБД может одновременно обслуживать несколько баз данных). Все последующие запросы, в которых не будет явным образом указана база данных, будут адресоваться к текущей базе данных.
create table salespeople (snum int not null primary key, sname varchar(30) not null, city varchar(30) not null, comm float(3,2) not null);
Команда создает таблицу "Продавцы". Атрибут not null означает, что значение данного поля должно быть обязательно определено. Атрибут primary key (первичный ключ) означает, что данное поле содержит уникальный идентификатором записи. В таблице не может быть нескольких записей с одинаковым первичным ключом.
create table customers (cnum int not null primary key, cname varchar(30) not null, city varchar(30) not null, rating int default 0, snum int not null);
Создается таблица "Заказчики".
create table orders (onum int not null primary key, amt float(6,2) not null, odate date not null, cnum int not null, snum int not null);
Создается таблица "Заказы".
Следующий этап создания базы данных – заполнение таблиц. Ниже будут приведены примеры, иллюстрирующие занесение записей в каждую из трех таблиц. По аналогии, повторяя запросы с другими значениями, можно добавить в таблицы недостающие данные.