Имея очень продолжительный опыт работы с различными версиями SQL (более 15 лет) и постоянные обращения новичков с просьбами помочь разобраться (понять, решить проблему и т.д.) было решено написать серию небольших заметок, в помощь людям, не сталкивавшимся и боящимся аббревиатуры SQL, начать работать с этой новой для них и очень увлекательной технологией.
SQL(Structured Query Language или «язык структурированных запросов») - клиент северная технология, позволяющая относительно простым языком клиенту запросить у сервера необходимые ему данные, добавить, удалить или изменить их. Основу языка, как и много чего хорошего ;), заложила IBM в начале 70 годов прошлого века. Текущая реализация MySQL сервера поддерживает основную часть ставшей “классической” версии SQL-1992 и некоторые свои нестандартные функции.
Упрощенная классическая схема клиент северной технологии подразумевает наличие клиента инициирующего операции, сервера выполняющего задания и канала связи между ними. Для простоты понимания процесса представьте себя в качестве клиент, сервер это библиотека или человек на другом конце провода (или что-то аналогичное), ну и обычная телефонная линия это канал связи. Вы по телефону просите кого-то на другом конце провода выполнить манипуляции с книгой (например подсчитать их количество, вес книг на заданной полке и т.д.). В случае работы с базой - дать правильную вам нужно выполнить SQL команду.
Клиент <-канал связи->Сервер
В процессе работы необходимо постоянно помнить обо всех участниках процесса.
Версии серверов имеют некоторые незначительные отличия. Текущую версию вашего MySQL сервера можно узнать введя команду:
Обратите внимание:
База данных состоит из объектов (таблиц, представлений, триггеров, хранимых процедур и т.д.). Практически ко всем из объектов можно получить доступ из SQL, зная инструкции (или команды).
Текущие доступные вам базы на сервере можно получить командой:
Выбрать текущую базу для работы можно командой:
USE им_базы;
Получить текущую активную базу можно командой
Создание или добавление новой базы выполняется командой:
CREATE DATABASE [IF NOT EXISTS] имя_базы;
Удаление существующей базы:
DROP DATABASE [IF EXISTS] имя_базы;
Обратите внимание:
Вся информация пользователя хранится в таблицах базы. Все остальные объекты базы используются для удобства работы, сохранения настроек, процедур и некоторых вспомогательных нужд.
Таблицы, соответственно состоят из полей. В первом приближении, таблицы похожи на Excel таблицы, за исключением того, что в колонках могут быть данные только одного типа. Каждая строка таблицы содержит набор полей записей (колонок), где в каждом поле данные только его формата.
Просмотреть существующие таблицы в базе можно командой:
Обратите внимание:
Поля таблиц, как и переменные в большинстве языков программирования, имеют жёстко заданный тип данных, который может в них содержаться. При проектировании своих таблиц, и работе с существующими таблицами, и их любой их модификации - относитесь очень внимательно к содержащемуся в полях типу данных. Используйте тип, значения которого будут не больше заданного диапазона. Будте внимательны !
- Целые числа
префиксINT [UNSIGNED]
Стандартные для SQL типы INTEGER (или INT) и SMALLINT и дополнительно свои TINYINT, MEDIUMINT и BIGINT. Необязательны флаг UNSIGNED указывает на хранение в поле чисел больше 0 (границы диапазона соответственно увеличиваются).
Тип | Длина (байт) | Диапазон значений |
TINYINT | 1 | от -128 до 127 |
SMALLINT | 2 | от -32 768 до 32 767 |
MEDIUMINT | 3 | от -8 388 608 до 8 388 607 |
INT | 4 | -2 147 483 648 до 2 147 483 647 |
BIGINT | 5 | от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
ИмяТипа[(length, decimals)] [UNSIGNED]
Тип | Длина (байт) | Диапазон значений |
FLOAT | 4 | <=24 -3,402823466E+38 до -1,175494351E-38 |
DOUBLE | 8 | 25-53 -1,7976931348623157E+308 до -2,2250738585072014E-308 |
DECIMAL | 4 | <=24 -3,402823466E+38 до -1,175494351E-38 |
NUMERIC | 8 | 25-53 -1,7976931348623157E+308 до -2,2250738585072014E-308 |
DECIMAL и NUMERIC - точные значения, которые хранят число в виде строки, при этом для каждого десятичного знака используется один символ.
Тип | Длина (байт) | Точность |
CHAR | lenght | 255 |
VARCHAR | lenght | 65535 |
BINARY | lenght | 255 (аналог CHAR BINARY ) |
VARBINARY | lenght | 65535 (аналог VARCHAR BINARY ) |
BLOB | 65635 байт | |
TEXT | 65535 Байт | |
ENUM | список значений | 65535 |
SET | список значений | 64 |
Тип | Диапазон |
DATETIME | ‘1000-01-01 00:00:00' - '9999-12-31 23:59:59'. |
DATE | '1000-01-01' to '9999-12-31' |
TIMESTAMP | '1970-01-01 00:00:01' UTC - '2038-01-19 03:14:07' UTC |
TIME | '-838:59:59' - '838:59:59' |
YEAR | '1901' to '2155' |
Обратите внимание:
После знакомства с типами данных и общим устройством таблиц можно переходить к операциям управления таблицами. При выполнении этих операций вы должны быть внимательны, ибо большинство из них могут значительно изменить структуру таблиц, что может привести к потере данных. Не забывайте делать резервные копии!
Просмотреть информацию по полям таблицы можно командой:
SHOW COLUMNS FROM имя_таблицы или синоним DESC имя_таблицы;
Просмотреть информацию по таблицам:
Удаление таблицы:
Создание таблицы
CREATE TABLE [IF NOT EXISTS] имя_таблицы [(имя_колнки тип данных, …)];
Переименование таблицы:
ALTER TABLE исходное_имя_таблицы RENAME TO конечное_имя_таблицы
Изменение структуры таблицы:
(поле1 -> поле2)
ALTER TABLE имя_таблицы CHANGE поле1 поле2 тип_данных
(смена тип данных поля)
ALTER TABLE имя_таблицы MODIFY поле тип_данных
(добавить поле)
ALTER TABLE имя_таблицы ADD поле тип_данных [FIRST]
(удалить поле)
ALTER TABLE имя_таблицы DROP поле
После прочтения это материала вы должны уметь создавать и удалять базы и таблицы в них, а так же понимать общую специфику работы и различать типы данных, используемых SQL сервером. Отдохните и мы дальше продолжим знакомство с миром SQL
Предложения, замечания, пожелания - комментарии. Все вопросы задаём на форум