В последнее время информационные
технологии стали развиваться с огромной
быстротой и решить сложные задачи без
нововведений становятся просто невозможно.
В последнее время стало актуальным
использования специальных программных
комплексов, которые получили название СУБД
(Системы Управления Базами Данных). Но,
данными, которые заложены в СУБД нужно
управлять, чтобы добиться желаемого
результата. Для этого были созданы
специальные языки манипулирования данными
(ЯМД). Одним из таких языков является SQL (Structured
Query Language - структурированный язык запросов).
Другими словами с помощью SQL можно легко
достичь желаемого результата в каком либо
проекте.
Рассмотрим конкретный пример:
Допустим ты решил создать крутой сайт с
возможностью регистрирования
пользователей и выделения им определённого
времени на использования ресурсов твоего
сайта. Попробуй сделать это с помощью
одного языка программирования (PHP//CGI). Это
будет очень громоздко и займёт уйму времени.
Вот тут на помощь приходит SQL. С помощью
модуля DBI можно с лёгкостью связать perl-скрипт
с твоей базой данных, в которой будут
находится аккаунты пользователей сайта,
дата истечения срока пребывания в списке. В
конце концов всё сведётся к простому и
гибкому решения проблемы.
Но, согласись, если ты не умеешь управлять
базой данных с помощью SQL языка
программирования, то ничего хорошего ты не
сделаешь и успеха не добьешься. В этой
статье я покажу наиболее часто встречаемые
команды SQL, их синтаксис и значение. После
этого ты будешь знать азы SQL и можешь
штурмовать уже более серьёзные вещи, такие
как администрирование твоей БД или
установка своего SQL-демона (благо по этому
вопросу много статей в Инете). Итак,
начинаем.
Чаще всего SQL-сервер располагается на 3306
порту удалённой машины. Зная логин и пароль
ты сможешь проникнуть на него. Для этого
тебе необходим хороший SQL-клиент. Если ты
под Win32, то таким является "MySQL Administrator for
win32. По доброте душевной я выложил его на http://k-ur.com/sql/sqladm.zip.
Если же ты юниксоид или юзаешь SQL сервер с
шелла на удалённом сервере, то таких
клиентов полно, а на шелле обязательно
будет установлен тамошний SQL-клиент.
Итак, залогинясь на SQL-сервер, можно
приступать к созданию твоей первой таблицы.
Для этого используется команда "create".
Её формат:
Create table имя_таблицы
(поле1 тип_поля1 [not null],
поле2 тип_поля2 [not null] ,
..... [not null],
полеN тип поляN [not null]);
NULL - это специально предусмотренное
значение поля - даётся в том случае, когда
значение не определено.
Основные типы в языке SQL:
text - текстовый тип
int - целочисленный тип
real - тип, с плавющей точкой
date - тип даты
Итак, выбирай SQL-Query, затем в поле ввода пиши
следущее:
create table members
(name text not null,
password text not null,
type int,
bonus int)
этим ты создашь таблицу пользователей в
определённой базе данных (её ты должен
знать заранее).
Далее можешь прописать себя как
администратора в этой таблице (скажем,
пусть тип администратора будет 2). Для
добавления строк в базу существует команда
"Insert". Её формат:
Insert into имя_таблицы [(поле1, поле2, полеN)]
values ('значение1', значение2, значениеN)
Чтобы добавить нового пользователя, пишем:
Insert into members
values ('Admin','myc00lPassworDD',2,0)
Заметь, что в апострофах пишутся только
текстовые значения таблицы.
И наконец, самая распространённая команда в
mySQL это команда "Select". Команда выводит
на экран значения таблицы в удобной для вас
форме. Её формат:
Select [ * | поле[,полеN] ]
from таблица1[,таблицаN]
where условие
Звёздочка "*" означает выбор всех полей
в строке таблицы.
Условие - логическая связка, с помощью
которой можно идентифицировать элемент
либо связку элементов таблицы. Рассмотрим
примеры:
select * from members where user="root%" # Символ %
означает любой ряд символов.
select user,bonus where type=1 and password not NULL
select user where bonus between 1 and 10 # Between/and указывают на
промежуток значений.
select 'Current super bonus is',bonus*100 where user='root%'
Это сравнительно небольшой список условий.
Более подробную документацию можно найти в
Инете (например на www.mysql.com).
Замена значений полей в таблице происходит
с помощью команды "Update". Её формат схож
с форматом "Select":
Update имя_базы
set поле=новое_значение
where условие
Пример: сделаем администратором
пользователя Xakep:
Update members
set type=2
where user='Xakep'
А вот пример посложнее: увеличим число
очков у пользователя Vasya в 2 раза:
Update members
set bonus=bonus*2
where user='Vasya'
Надеюсь, по аналогии ты разберёшься с "Update".
Рассмотрим следующую команду: "Delete".
Команда удаляет строки из таблицы. Формат:
Delete from имя_таблицы
where условие
Пример: удалим всех пользователей на букву
"L" и имеющим не более 10 очков:
Delete from members
where user="L%" and bonus<=10
И последняя команда для изучения: "Drop" -
удаление таблицы.
Роковой пример: "Drop table members" 🙂
Поупражнявшись с твоей таблицей, ты можешь
приступать к следующему отважному шагу -
связи твоего крутого web-сайта с SQL-базой при
помощи обычного CGI-скрипта (можно и PHP // ASP).
Для этого используется специальный модуль
DBI.pm, входящий в стандартный состав Perl-а.
Рассмотрим скрипт, который создаст нового
пользователя с 5 очками. Пароль будет
хранится в переменной $pass, а имя в $user. Тип
пользователя - 1.
#!/usr/bin/perl
use DBI;
$host='localhost'; # Хост к БД
$username='admin'; # Логин к БД
$pass_sql='myc00lPassworD'; # Пароль к БД
$db='foradmin'; # Имя БД
$dbh = DBI->connect("DBI:mysql:$db:$host",$username,$pass_sql) ||
die "$!\n"; # Коннект к БД или выдача
сообщения об ошибке соединения.
$dbh->do("insert into members values ('$user','$pass',1,5)") or die
$DBI::errstr; # Добавляем пользователя либо
сообщаем об ошибке
$dbh->disconnect; # Отсоединение
Вот и весь скрипт. Пользователь был успешно
добавлен 🙂 Рассмотрим пример посложнее -
скрипт, который при активации будет
убавлять у пользователя 1 очко. Если у
пользователя нет очков - удалим его.
Пользователь - $user.
#!/usr/bin/perl
............. # Смотри первый скрипт
$sth=$dbh->prepare("select * from members where user='$login'") or
die $dbh->errstr; # Узнаём состояние пользователя
$sth->execute;
while ($row = $sth->fetchrow_arrayref) {
$bonus = $row->[3]; # Узнаём очки пользователя
}
if ($bonus eq 0) {
$dbh->do("delete from members where user='$user'") die $DBI::errstr;
# Удаляем пользователя если нет очков
$dbh->disconnect;
exit;
}
$dbh->do("update members set bonus=$bonus-1 where user='$user'")
die $DBI::errstr; # Иначе убавим очки
$dbh->disconnect;
Вот пожалуй и всё. Если ты заинтересовался,
то не останавливайся на этой статье, а рой
инфу в Инете и просвещайся, ибо информация -
источник всех знаний.