лабораторные по MySql. Mysql одна из множества баз данных, поддерживаемых в php. Система Mysql распространяется бесплатно и обладает достаточной мощностью для решения реальных задач. Краткое введение в Mysql sql
Скачать 42.33 Kb.
|
Кузин Сергей Александрович составитель Связь с базами данных MySQL СУБД MySQL - одна из множества баз данных, поддерживаемых в PHP. Система MySQL распространяется бесплатно и обладает достаточной мощностью для решения реальных задач. Краткое введение в MySQL SQL - это аббревиатура от слов Structured Query Language, что означает структурированный язык запросов. Этот язык является стандартным средством для доступа к различным базам данных. Система MySQL представляет собой сервер, к которому могут подключаться пользователи удаленных компьютеров. Для работы с базами данных удобно пользоваться средством, входящее в комплект Web-разработчика:Denwer phpMyAdmin. Здесь можно создать новую базу данных, создать новую таблицу в выбранной базе данных, заполнить таблицу данными, а также добавлять, удалять и редактировать данные. В MySQL определены три базовых типа данных: числовой, дата и время и строчный. Каждая из этих категорий подразделяется на множество типов. Основные из них:
Каждый столбец после своего типа данных содержит и другие спецификаторы:
Создание новой базы данных MySQL осуществляется при помощи SQL-команды CREATE DATABASE. CREATE DATABASE IF NOT EXISTS `base` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin Создание новой таблицы осуществляется при помощи SQL-команды CREATE TABLE. Например, таблицаbooks для книжного магазина будет содержать пять полей: ISBN, автор, название, цена и количество экземпляров: CREATE TABLE books (ISBN CHAR(13) NOT NULL, PRIMARY KEY (ISBN), author VARCHAR(30), title VARCHAR(60), price FLOAT(4,2), quantity TINYINT UNSIGNED); Чтобы избежать сообщения об ошибке, если таблица уже есть необходимо изменить первую строчку, добавив фразу "IF NOT EXISTS": CREATE TABLE IF NOT EXISTS books ... Для создания автообновляемого поля с текущей датой типа TIMESTAMP или DATETIME используйте следующую конструкцию: CREATE TABLE t1 ( ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); Добавление данных в эту таблицу осуществляется при помощи SQL-команды INSERT. Например: INSERT INTO books ( ISBN, author, title, price, quantity ) VALUES ('5-8459-0184-7', 'Зандстра Мэт', 'Освой самостоятельно PHP4 за 24 часа', '129', '5'); Для извлечения данных из таблицы служит оператор SELECT. Он извлекает данные из базы, выбирая строки, которые отвечают заданному критерию поиска. Оператор SELECT сопровождает немалое количество опций и вариантов использования. Символ * означает, что необходимы все поля. Например: SELECT * FROM books; Для получения доступа только к некоторому полю следует указать его имя в инструкции SELECT. Например: SELECT author, title, price FROM books; Чтобы получить доступ к подмножеству строк в таблице, следует указать критерий выбора, который устанавливает конструкция WHERE. Например, чтобы выбрать имеющиеся в наличии недорогие книги о PHP, надо составить запрос: SELECT * FROM books WHERE price < 200 AND title LIKE '%PHP%' AND quantity != 0; % Соответствует любому количеству символов, даже нулевых _ Соответствует ровно одному символу Для того, чтобы строки, извлеченные по запросу, перечислялись в определенном порядке, используется конструкция ORDER BY. Например: SELECT * FROM books ORDER BY price; По умолчанию порядок сортировки идет по возрастанию. Изменить порядок сортировки на обратный можно с помощью ключевого слова DESC: SELECT * FROM books ORDER BY price DESC; Сортировать можно и по нескольким столбцам. Вместо названий столбцов можно использовать их порядковые номера: SELECT * FROM books ORDER BY 4, 2, 3; Для изменения ранее записанных в таблицу значений нужно воспользоваться командой UPDATE. Например, цену всех книг повысили на 10%: UPDATE books SET price = price * 1.1; Конструкция WHERE ограничит работу UPDATE определенным строками. Например: UPDATE books SET price = price * 1.05 WHERE price <= 250; Для удаления строк из базы данных используется оператор DELETE. Ненужные строки указываются при помощи конструкции WHERE. Например, какие-то книги проданы: DELETE FROM books WHERE quantity = 0; Если нужно удалить все записи TRUNCATE TABLE table_name Для полного удаления таблицы используется: DROP TABLE table_name Связь PHP с базой данных MySQL Поработав с phpMyAdmin над созданием базы данных, можно приступить к подключению этой базы данных к внешнему Web-интерфейсу. Чтобы получить доступ к базе данных из Web, используя PHP, надо сделать следующие основные шаги: Подключение к серверу MySQL. Выбор базы данных. Выполнение запроса к базе данных: добавление; удаление; изменение; поиск; сортировка. Получение результата запроса. Отсоединение от базы данных. Для подключения к серверу базы данных в PHP есть функция mysql_connect( ). Ее аргументы: имя компьютера, имя пользователя и пароль. Эти аргументы можно опустить. По умолчанию имя компьютера =localhost, тогда имя пользователя и пароль не требуется. Если PHP используется в сочетании с сервером Apache, то можно воспользоваться функцией mysql_pconnect(). В этом случае соединение с сервером не исчезает после завершения работы программы или вызова функции mysql_close(). Функцииmysql_connect() и mysql_pconnect() возвращают идентификатор подключения, если все прошло успешно. Например: $link = mysql_pconnect (); if ( !$link ) die ("Невозможно подключение к MySQL"); После того, как соединение с сервером MySQL установлено, нужно выбрать базу данных. Для этого используется функция mysql_select_db(). Ее аргумент: имя базы данных. Функция возвращает true, если указанная база данных существует и доступ к ней возможен. Например: $db = "sample"; mysql_select_db ( $db ) or die ("Невозможно открыть $db"); Для добавления, удаления, изменения и выбора данных нужно сконструировать и выполнить запрос SQL. Для этого в языке PHP существует функция mysql_query(). Ее аргумент: строка с запросом. Функция возвращает идентификатор запроса. Пример 1 $db = "sample"; $link = mysql_pconnect (); if ( !$link ) die ("Невозможно подключение к MySQL"); mysql_select_db ( $db ) or die ("Невозможно открыть $db"); $query = "INSERT INTO books VALUES ('966-7393-80-1', 'Аллен Вайк', 'PHP. Справочник', '213', '4')"; mysql_query ( $query ); mysql_close ( $link ); ?> if (!isset($_POST['isbn']) || !isset($_POST['author']) || !isset($_POST['title']) || !isset($_POST['price']) || !isset($_POST['quantity'])){ die ("Не все данные введены. Пожалуйста, вернитесь назад и закончите ввод"); } $isbn = trim ( $_POST['isbn'] ); $author = trim ( $_POST['author'] ); $title = trim ( $_POST['title'] ) ; $isbn = addslashes ( $isbn ); $author = addslashes ( $author ); $title = addslashes ( $title ) ; $db = "sample"; $link = mysql_connect(); if ( !$link ) die ("Невозможно подключение к MySQL"); mysql_select_db ( $db ) or die ("Невозможно открыть $db"); $query = "INSERT INTO books VALUES ('" .$isbn."', '".$author."', '".$title."', '" .floatval($_POST['price'])."', '".intval($_POST['quantity'])."')"; $result = mysql_query ( $query ); if ($result) echo "Книга добавлена в базу данных."; mysql_close ( $link ); ?> $searchterm = trim ( $_POST['searchterm'] ); if (!$searchterm) die ("Не все данные введены. Пожалуйста, вернитесь назад и закончите ввод"); $searchterm = addslashes ($searchterm); $link = mysql_pconnect (); if ( !$link ) die ("Невозможно подключение к MySQL"); $db = "sample"; mysql_select_db ( $db ) or die ("Невозможно открыть $db"); $query = "SELECT * FROM books WHERE " .$_POST['searchtype']." like '%".$searchterm."%'"; $result = mysql_query ( $query ); $n = mysql_num_rows ( $result ); for ( $i=0; $i<$n; $i++ ) { $row = mysql_fetch_array($result); echo " ".($i+1). $row['title']. " "; echo "Автор: ".$row['author']." "; echo "ISBN: ".$row['ISBN']." "; echo "Цена: ".$row['price']." "; echo "Количество: ".$row['quantity']." "; } if ( $n == 0 ) echo "Ничего не можем предложить. Извините"; mysql_close ( $link ); ?> $searchterm=trim ( $_POST['searchterm'] ); if (!$searchterm) die ("Не все данные введены. Пожалуйста, вернитесь назад и закончите ввод"); $searchterm = addslashes ($searchterm); mysql_connect() or die ("Невозможно подключение к MySQL"); mysql_select_db ( "sample" ) or die ("Невозможно открыть БД"); $result = mysql_query ( "SELECT * FROM books WHERE ".$_POST['searchtype']." like '%".$searchterm."%'" ); $i=1; while($row = mysql_fetch_array($result)) { echo " ".($i++) . $row['title']." "; echo "Автор: ".$row['author']." "; echo "ISBN: ".$row['ISBN']." "; echo "Цена: ".$row['price']." "; echo "Количество: ".$row['quantity']." "; } if ( $i == 1 ) echo "Ничего не можем предложить. Извините"; mysql_close( ); ?> |