Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #52, МАРТ 2005 г.

Теория СУБД

Докучаев Дмитрий aka Forb

Спецвыпуск: Хакер, номер #052, стр. 052-004-6


Для нужд обычного человека (то есть тебя) вполне хватит реляционных СУБД, которые применяются повсеместно. Это и всенародно любимый MySQL, и менее любимый Access, и MSSQL. Подобных систем управления масса, определись и выбери ту, что тебе больше по сердцу. А сделать этот нелегкий выбор, как всегда, поможет этот уникальный СПЕЦвыпуск ;).

Мощь и сила SQL

Ниже приведен список запросов, изучив который в полной мере можно оценить возможности SQL. Все примеры адаптированы под СУБД MySQL, с которым очень часто приходится сталкиваться.

Начнем с самого простого. Прежде чем что-либо просматривать и изменять, необходимо создать собственную БД и таблицу в ней. Первый шаг делается с помощью запроса:

CREATE database hack_db;

Заметь, что все запросы должны оканчиваться символом ";".

Теперь самое время создавать хакерскую таблицу. Пусть в ней будут находиться атрибуты с индексами number, xakep_nickname, xakep_date, xakep_style и xakep_icq. Первый столбец будет выступать в качестве первичного ключа – благодаря уникальному номеру можно будет отличить одного хакера от другого.

CREATE table xakep_table (

number INT NOT NULL AUTO_INCREMENT,

xakep_nickname CHAR(20),

xakep_date DATE,

xakep_style CHAR(20),

xakep_icq INT(10),

primary key(number)

);

Проанализируем каждое поле. Вначале мы задаем имя таблицы, затем оговариваем ее атрибуты. Цифры в скобках означают количество символов, которые могут быть отведены под то или иное значение. В последней строке определяется атрибут первичного ключа. В нашем случае это столбец number.

Создать отношение – полбеды. Теперь нужно заполнить его полезной информацией. Для этого существует незаменимая команда INSERT. К примеру, мы хотим занести в базу двух хакеров. Для этого осуществляем два запроса:

INSERT INTO xakep_table (xakep_nickname, xakep_date, xakep_style, xakep_icq) VALUES ('d3f4c3d','1980-12-01','defacing',300003);

INSERT INTO xakep_table (xakep_nickname, xakep_date, xakep_style, xakep_icq) VALUES ('cracker','1986-05-09','cracking',31337);

Если потребовалось изменить имеющуюся информацию о хакере (допустим, дефейсер вдруг захотел стать кардером), нужно выполнить запрос UPDATE совместно с WHERE. Например, таким образом:

UPDATE xakep_table SET xakep_style='carding' where xakep_nickname='d3f4c3r';

Когда база будет заполнена, тебе понадобится осуществить выборку определенных значений из нее. Допустим, нас интересуют все кардеры, в нике которых есть слово "crack" и возраст которых больше 20-ти лет. Для выборки используется команда SELECT с ключевым словом WHERE.

SELECT * FROM xakep_table WHERE YEAR(curdate())-YEAR(xakep_date) > 20 AND xakep_nickname LIKE '%crack%';

Если информация в базе устарела и нам захотелось удалить хакера из нее, используется запрос DELETE.

DELETE FROM xakep_table WHERE xakep_nickname = 'cracker';

Когда вообще надоест работать с БД, у тебя может возникнуть желание физически удалить таблицу (и всю базу), для исполнения которого существует команда DROP.

DROP table xakep_table;

DROP database hack_db;

С вышеперечисленными командами тебе придется столкнуться в любом случае. Более изощренные запросы и конструкции ищи в интернете.

Назад на стр. 052-004-5  Содержание  Вперед на стр. 052-004-7