Ключевые слова:sql, mysql, database, (найти похожие документы)
From: Докучаев Дмитрий <forb@k-uralsk.ru>
Subject: mySQL - назначение, команды и функцииhttp://kamensk.net.ru/forb/cgi-bin/links.cgi?area=linux&art=1
mySQL. Назначение, команды и функции
В последнее время информационные технологии стали увеличиваться с
огромной быстротой и сложные задачи без нововведений становятся просто
невыполнимыми. В послежнее время стало актуальным использования
специальных программных комплексов, которые получили название СУБД
(Системы Управления Базами Данных). Но, данными, которые заложены в
СУБД нужно управлять, чтобы добиться желаемого результата. Для этого
были созданы специальные языки манипулирования данными (ЯМД). Одним из
таких языков является 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;
Вот пожалуй и всё. Если ты заинтересовался, то не останавливайся на
этой статье, а рой инфу в Инете и просвещайся, ибо информация -
источник всех знаний.
Copyright Forb (2001)
http://kamensk.net.ru/forb