В последнее время информационные
технологии стали развиваться с огромной
быстротой и решить сложные задачи без
нововведений становятся просто невозможно.
В последнее время стало актуальным
использования специальных программных
комплексов, которые получили название СУБД
(Системы Управления Базами Данных). Но,
данными, которые заложены в СУБД нужно
управлять, чтобы добиться желаемого
результата. Для этого были созданы
специальные языки манипулирования данными
(ЯМД). Одним из таких языков является 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;

Вот пожалуй и всё. Если ты заинтересовался,
то не останавливайся на этой статье, а рой
инфу в Инете и просвещайся, ибо информация -
источник всех знаний.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии