Эта стать ориентирована на новичков, своего рода курс молодого бойца. В ней мы на примерах разберемся как работать с базой данных MySQL, научимся создавать SQL запросы и создадим свою первую базу данных с помощью консоли.
И так по порядку. MySQL – это реляционная система управления базами данных (СУБД). Используется СУБД в качестве сервера, к которому обращаются с помощью SQL запросов локальные или удаленные клиенты. SQL это универсальный язык запросов, который используют для работы с различными базами данных, такие как MS SQL, PostgreSQL, Oracle и другие.
Так все таки, что же такое реляционная база данных. Это набор данных хоронящихся в двумерной таблице. Строки таблицы это записи, а столбцы содержат значения полей записи. К примеру возьмем телефонный справочник. У нас есть три типа данных – поля: телефон, владелец, адрес. Тогда одной записью будет: «22-7-00 Иванов И.И. ул. Строителей дом 5 кв.10″. Набор таких записей образуют целую таблицу. А в базе может хранится большое количество таблиц, причем таблицы могут быть связаны между собой. У нас может быть таблица сделок с записями: «дата сделки, наименование товара, цена, id клиента», где id клиента это номер записи в телефонном справочнике. Не нужно повторять одни и те же данные в разных таблицах. Такие связи таблиц дают массу удобств.
Не будем глубоко вдаваться в теорию, разберем все на примерах. Нам для этого понадобится консольный клиент MySQL. Я буду приводить примеры под операционной системой Linux, но принципиальных отличий от Windows нет. Существует множество графических систем управлений, очень распространен PhpMyAdmin. Почему консольный клиент MySQL? Ну во первых, графические системы не позволяют изучить язык запросов SQL. Во вторых работа в консоли с MySQL даст вам больше понимания устройства базы данных. А в третих научившись работать с базой данных MySQL в консоли вы легко разберетесь с любой графической СУБД.
И так, как создать базу данных? Для начала откроем консоль и подключим клиента MySQL. Для этого введем команду: mysql -u root -p. Ключик -u обозначает, что мы вводим имя пользователя. У нас он называется root. А -p означает, что мы хотим ввести пароль.
Готово. Вот мы подошли к ответу на вопрос: «как создать базу данных». Сделаем наш первый SQL запрос: create database mybase;
Система сообщила, что запрос прошел удачно: Query OK. Сделана одна запись: 1 row affected. Так мы создали базу данных под названием mybase. У нас может быть несколько баз данных, просмотрим какие базы у меня есть. Введем запрос: show databases;
Мы видим в списке только что созданную mybase. Information_schema, grab, mysql, test это базы созданные при установки, в них хранятся настройки MySQL. Теперь вы знаете как создать базу данных, но этого мало. Данных в ней нет. Давайте этим займемся, для начала создадим таблицу. Пусть для примера у нас есть книжный магазин и нам нужно хранить список книг. Какие данные мы будим хранить? Название книги, цена и номер записи. Укажем системе, какую базу мы будем использовать: use mybase; Создадим структуру таблицы:
create table books (
id bigint(20),
name varchar(30),
price bigint(20),
primary key(id)
);
В этом SQL запросе мы говорим, что таблица называется: books. У нас есть три поля: поле id – номер записи типа begint длиной в 20 символов, поле name – название книги типа varchar длиной 30 символов и price – цена книги тоже bigint(20). Тип begint это целы положительные числа, аналогично есть тип int всех целые чисел с обоими знаками. Также есть float – числа с плавающей запятой. Тип varchar это набор из символов, другими словами строка. И последнее primary key(id) это означает что поле id у нас уникальное, другими словами в двух записях не может быть одинаковых значений поля id. Ну и сразу посмотрим что у нас получилось.
Мы видим список таблиц в базе mybase, у нас одна таблица books. Посмотрим на структуру таблицы с помощью запроса: describe books;
Колонка Null показывает может поле иметь пустое значение или нет. У нас в записях обязательное, причем уникальное, поле id, остальные могут быть пустыми. Default это значения, которые ставятся по умолчанию. Так получилось, что мы забыли про авторов книг. Не проблема, давайте вставим в таблицу еще одно поле: alter table books add author varchar(30) after id; Это обозначает, что в таблицу books добавится поле author с типом данных varchar в 30 символов. Это поле вставится следом за полем id. И сразу просмотрим результат с помощью: describe books;
Теперь можно заполнить нашу таблицу информацией. Добавим пять записей:
insert into books (id ,author, name, price) values
(1, ‘Matthew A’, ‘Mining the Social Web’, ’90′),
(2, ‘Steve Suehring’, ‘javascript Step by Step’, ’100′),
(3, ‘Michael Miller’, ‘The Ultimate Web Marketing Guide’, ’250′),
(4, ‘Mark Bell’, ‘Build a Website for Free’, ’150′),
(5, ‘Marc Campbell’, ‘Web Design Garage’, ’100′);
Cтруктура этого SQL запроса такая: после insert into указываем название нашей таблицы. Затем в скобочках перечисляем поля значения которые мы хотим записать. Если какое нибудь поле не указать, то в него подставится значение по умолчанию. После values мы в скобочках через запятую перечисляем значения наших полей, причем в том же порядке в котором перечислили поля. Значения типа varchar указываются в кавычках. За один запрос мы можем вставить любое количество записей. Теперь посмотрим на содержимое нашей таблицы: select * from books;
Оператор select выбирает данные. Звездочка означает, что нужно выбрать значения всех полей. Так же обязательно указываем из какой таблицы нужно выбрать данные. Мы можем вместо звездочки перечислить поля, значения которых нам нужны. Например мы можем выбрать только названия книг и их цены: select name, price from books;
Оператору select можно задать условие для выборки where. Например можно выбрать все книги которые стоят 100 рублей: select * from books where price=100;
Или можно задать такое условие: select * from books where price>100;
Вот пример с более сложным условием сразу по двум полям: select * from books where price>95 and id<4;
Аналогично оператору select строится и оператор delete. Только не указываются поля, потому что этот оператор удаляет всю запись целиком: delete from books where price=100; Мы можем увидеть, что теперь 2 записей с ценой в 100 р. нет: select * from books;
С помощью оператора drop можем удалить всю таблицу целиком: drop table books; Этота команда удаляет не только записи, а и вся структура таблицы. Убедимся в этом: show tables;
Emty set означает, что наша база пуста. Еще с помощью оператора drop можно удалить базу данных: drop database mybase; Проверим: show databases;
Все, базы данных под названием mybase в списке больше нет. Для выхода из клиента СУБД MySQL введите команду: exit;
Это только основы MySQL. Но теперь как я и обещал, вы знаете как создать базу данных. Умеете создавать SQL запросы и работать с базой данных MySQL c помощью консоли. Например теперь, если вы знаете какой нибудь из языков программирования php, perl или python, вы сможете создать веб сайт используя MySQL. Давайте на последок обобщим полученные нами знания:
- Подключение к СУБД:
mysql -u <имя пользователя> -p - Выбрать список всех баз данных:
show databases; - Создать базу данных:
create database <название базы данных>; - Подключится к базе данных:
use <название базы данных>; - Создать таблицу:
create <название таблицы> (
<название поля> <тип данных>
[,<название поля> <тип данных>]
[,primary key(<название поля>)]
); - Вставить поле в таблицу:
alter table <название таблицы> add <название поля> <тип данных> after <название поля>; - Выбрать список таблиц:
show tables; - Посмотреть структуру таблицы:
describe <название таблицы>; - Записать данные в таблицу:
insert into <название таблицы> (<название поля> [,<название поля>]) values
(<значение поля> [,<значение поля>]); - Выбрать данные из таблицы:
select <название поля> [,<название поля>] from <название таблицы> [where <условие>]; - Удалить данные из таблицы:
delete from <название таблицы> where <условие>; - Удалить таблицу:
drop table <название таблицы>; - Удалить базу данных:
drop database <название базы данных>; - Выход из СУБД:
exit;

Полезно. +. Надо бы поглубже изучить эту тему.
Очень жаль, что нет продолжения…
Надеюсь в будущем по возможности глубже раскрыть эту тему