Отправляет email-рассылки с помощью сервиса Sendsay

Perl - подпишись и учись!

  Все выпуски  

Perl - подпишись и учись! - Introduction to MySQL(Using Perl DBI)


Информационный Канал Subscribe.Ru


 Hi, All!  
    Приветствую всех!(А именно 9440 подписчиков)

Рад Вас приветствовать!
По просьбе приятеля стояла задача перевода небольшой статейки о использовании MySQL(естественно с PERL). Разобью эту статейку на две рассылки... Надеюсь кому-то она будет полезна... Да, и ещё, некоторое время назад общался с людьми(из подписчиков), которые помогали мне с редактированием рассылки, так вот, обращаюсь к ним: "Люди, если Вы ещё здесь - откликнитесь :)), пожалуйста, нужна будет Ваша помощь, а emailы Ваши - растерял ввиду своей рассеянности.. :(("
#форматироание - автора статьи, оригинал - http://www.danchan.com/feature/2000/10/16/mysql/mysql.htm

Введение в MySQL (используя Perl DBI)

Я считаю, что если название статьи не звучит для Вас чуждо, то, возможно, Вы в нужном месте.

MySQL - это реляционная база данных. MySQL основана на технологии client/server. Все примеры команд MySQL в этой статье могут быть введены прямо в командную строку MySQL. MySQL поддерживает многострочные команды и использует точку с запятой, как разделитель между командами.

Почему же MySQL, а ни другая база данных SQL?

Хотя бы потому, что она бесплатна, быстра и имеет хорошую поддержку.

Данные организуются как ряды и колонки, образующие матрицу. С точки зрения SQL, матрица называется таблицей.

Лучший способ для C программиста понять что же это такое:

Каждый ряд - это структурная ссылка.

Каждая колонка - это член этой структуры.

Вот обычная структура (класс, объявленный с ключевым словом struct) в C:

struct users
{
    int  id;
    char nickname[17];
    char password[17];
    int  socks;
    int  favorite_number;
};

Это выглядит как информация, собранная Web-сайтом о пользователе.

А вот MySQL версия этой структуры:

create table users
(
    id              int auto_increment not null,
    nickname        varchar(16) not null,
    password        varchar(16) not null,
    socks           int,
    favorite_number int,
    primary key     (user_id),
    unique          (nickname)
);

Несколько похоже, не так ли?

Вот как будет выглядеть ряд в MySQL:

+----+----------+----------+-------+-----------------+
| id | nickname | password | socks | favorite_number |
+----+----------+----------+-------+-----------------+

Что же тогда матрица? Вот данные в таблице(матрице) о трёх гипотетических пользователях:

+----+----------+----------+-------+-----------------+
|  1 | GdayMate | dingo    |    57 |              42 |
+----+----------+----------+-------+-----------------+
|  2 | Javier   | cigar    |     1 |             945 |
+----+----------+----------+-------+-----------------+
|  3 | Rolo     | pudding  |     9 |               8 |
+----+----------+----------+-------+-----------------+

Фактически эти таблицы - это то, что вы увидете, если введёте в MySQL следующую команду:

select * from users;

Звёздочка означает, что мы выбираем все колонки из таблицы.

Таблица - это структурная основа многомиллиардной годовой индустрии баз данных, которая включает в себя такие компании, как Oracle и Informix.

Простейшие команды MySQL

Давайте быстро "пробежим" по простейшим командам MySQL. Вы уже занете команду create.

create table users
(
    id              int auto_increment not null,
    nickname        varchar(16) not null,
    password        varchar(16) not null,
    socks           int,
    favorite_number int,
    primary key     (user_id),
    unique          (nickname)
);

А что же делать, если хотим увидеть только прозвища и любимые числа пользователей?

select nickname, favorite_number from users;

Данная команда даст нам:

+----------+-----------------+
| nickname | favorite_number |
+----------+-----------------+
| GdayMate |              42 |
+----------+-----------------+
|   Javier |             945 |
+----------+-----------------+
|     Rolo |               8 |
+----------+-----------------+

А если хотим вывести прозвища пользователей, но с условием, что носков у них меньше, чем 10 пар и их любимое число больше, чем 100?

select nickname from users where socks < 10 and favorite_number > 100;
+----------+
| nickname |
+----------+
|   Javier |
+----------+

Как же ввести данные в таблицу? Это просто.

insert into users (nickname, socks) values ('Cowlick', 0);

Да , но мы забыли добавить поле пароля в таблицу!

create table users
(
    ...
    password varchar(16) not null,
    ...
);

Под NOT NULL понимается то, что поле должно нести в себе какие-либо данные. Поэтому в заданном выше примере MySQL выдаст ошибку. Поэтому следует сделать так:

insert into users (nickname, password, socks) values ('Cowlick', 'udder', 0);

Результат будет следующим:

+----+----------+----------+-------+-----------------+
| id | nickname | password | socks | favorite_number |
+----+----------+----------+-------+-----------------+
|  4 |  Cowlick |    udder |     0 |            NULL |
+----+----------+----------+-------+-----------------+

Но подождите! Мы не определили id! Оно также not null.

create table users
(
    id int auto_increment not null,
    ...
);

В этом случае колонку id мы определили как auto_increment и MySQL сама создаёт значения для нас, добавляя 1 к наибольшему значению, которое найдёт в таблице (Rolo имеет id == 3).

Мы забыли ввести любимое число пользователя Cowlick. Которое, между прочим, -1. Для этого мы будем использовать команду update.

update users set favorite_number = -1 where id = 4;

Также можем выполнить это следующим образом:

update users set favorite_number = -1 where nickname = 'Cowlick';

Но вдруг у нас появится больше чем один пользователь с прозвищем Cowlick? В нашем примере этого быть не может, т.к. в командеcreate table мы определили:

create tables users
(
    ...
    unique (nickname)
);

Если мы попробуем ввести ещё одного пользователя с прозвищем Cowlick, то мы получим ошибку от MySQL.

Предположим Вы имеете проблемы с пользователем Javier. Длугие члены вашего общества также считают, что этому пользователю не место среди них, Вы можете сделать следующее

delete from users where nickname = 'Javier';

Если же Вы хотите удалить всю таблицу, то необходимо будет сделать следующее.

drop table users;

Определение таблицы и все данные после вышеописанной команды будут удалены. Будьте осторожны с этой командой.

Продолжение следует.....:))

________________________________________
И ещё, если у вас есть вопросы, то задавайте их на форуме сайта(http://perl.iatp.org.ua).
________________________________________

                С уважением, Дмитрий.




http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное