СУБД MySQL

Документация по MySQL

MySQL Installer

MySQL Installer

MySQL - свободная система управления базами данных(СУБД). MySQL является собственностью компании Oracle Corporation, получившей её вместе с поглощённой Sun Microsystems, осуществляющей разработку и поддержку приложения. Распространяется под GNU General Public License или под собственной коммерческой лицензией. Помимо этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.

MySQL является решением для малых и средних приложений. Входит в состав серверов WAMP, AppServ, LAMP и в портативные сборки серверов Денвер, XAMPP. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.

База данных - это структурированная коллекция записей или данных, хранящихся в компьютерной системе и организованных так, что можно осуществлять быстрый поиск и извлечение нужной информации.

В названии MySQL составляющая SQL означает Structured Query Language — язык структурированных запросов. Если характеризовать его в общих чертах, то это язык, основанный на словах английского языка и используемый также в других системах управления базами данных, например Oracle и Microsoft SQL Server. Он разработан для предоставления возможности создания простых запросов к базе данных.

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

Реляционная база данных - база данных, основанная на реляционной модели данных.

Реляционная база данных представляет собой набор связанных данных, хранящихся в таблицах.

Понятие «реляционный» основано на англ. relation («отношение», «зависимость», «связь»).
Пример реляционной базы данных
12 правил Кодда, которым должна удовлетворять каждая система управления реляционными базами данных.

SQL

SQL (Structured Query Language - Структурированный Язык Запросов) - язык манипулирований для реляционных баз данных.

Всемирно принятый стандарт для реляционных систем

ANSI - American National Standard Institute(Американский Институт Стандартизации) - центральный институт стандартизации США . Стандарт, принятый данным институтом, является рекомендуемым для других стран и обязательным для применения на территории США.
Изделия, не удовлетворяющие условиям стандарта не могут быть использованы на территории США

Язык SQL является непроцедурным языком системы управления реляционной базой данных, который может обрабатывать записи группами и обеспечивает автоматический поиск нужных данных.

Непроцедурный язык - язык у которого отсуствует возможность управления последовательностью действий.

SQL по существу изобретение IBM. Но другие компании подхватили SQL сразу же.
После того как появился ряд конкурирующих программ SQL на рынке, ANSI определил стандарт к которому они должны быть приведены (определение таких стандартов и является функцией ANSI). Однако после этого, появились некоторые проблемы. Возникли они в результате стандартизации ANSI в виде некоторых ограничений. Так как не всегда ANSI определяет то, что является наиболее полезным, то программы пытаются соответствовать стандарту ANSI не позволяя ему ограничивать их слишком сильно. Это, в свою очередь, ведет к случайным несогласованности. Программы баз данных обычно дают ANSI SQL дополнительные особенности и часто ослабляют многие ограничения из большинства из них.
Удачные идеи имеют тенденцию к внедрению и использованию в различных программах даже когда они не определены стандартом ANSI.
ANSI - это вид минимального стандарта и вы можете делать больше чем он позволяет.

SQL является прежде всего информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных.

Изначально SQL был основным способом работы пользователя с базой данных и позволял выполнять следующий набор операций

Со временем SQL усложнился обогатившись новыми конструкциями, обеспечил возможность описания и управления новыми хранимыми объектами.

При всех своих изменениях SQL остаётся единственным механизмом связи между прикладным программным обеспечением и базой данных. В то же время современные СУБД, а также информационные системы, использующие СУБД, предоставляют пользователю развитые средства визуального построения запросов.

Синтаксис

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

SELECTid FROM studentWHERE name='Ivan';
глаголсубъектпредикат

Субъект - это мысль о каком-то предмете, понятие о предмете суждения (логическое подлежащее).

Предикат - мысль об известной части содержания предмета, которое рассматривается в суждении (логическое сказуемое).

Заметно, что оператор читается как нормальное предложение. SQL был задуман, как легкий и понятный язык для работы непрограммистов.

					
    -- Пример выборки ФИО и возраста из таблицы покупателей
    SELECT fio, age FROM customer; 
					
				
Пример таблицы БД
idfioaddressphoneage
12Иванов И.И.г.Городец8956453456818
15Петров П.П.г.Заволжье8960123657826
22Сидоров С.С.рп.Сокольское8930213546135
80Ткачёв Т.Т.д.Повалихино8901253478551
    -- Результат выборки
    +-------------+----+
    | Иванов И.И. | 18 |
    | Петров П.П. | 26 |
    | Сидоров С.С.| 35 |
    | Ткачёв Т.Т. | 51 |
    +-------------+----+
				
					
    -- Добавили предикат
    SELECT fio, age FROM customer WHERE age < 30; 
					
				
    +-------------+----+
    | Иванов И.И. | 18 |
    | Петров П.П. | 26 |
    +-------------+----+
				
В давние дни предполагалось, что SQL будут использовать непрограммисты для выполнения разовых запросов и генерации отчетов, несмотря на то, что сейчас им пользуются исключительно разработчики и администраторы баз данных.

Каждое "предложение" SQL - это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе.

Операторы

Текст на языке SQL представляет собой последовательность операторов. Операторы обычно разделяются символом точка-с-запятой, который отмечает конец запроса.

Операторы, в свою очередь, составляются из серии лексем. Лексемы могут быть константами, ключевыми словами, идентификаторами, выражениями или специальными символами. Лексемы разделяются пробельными символами (пробел, табуляция, символ новой строки).

Операторы SQL делятся на

Операторы определения данных
CREATEсоздает объект БД (саму базу, таблицу, представление, пользователя и т. д.)
ALTERизменяет объект
DROPудаляет объект
Операторы манипуляции данными
SELECTвыбирает данные, удовлетворяющие заданным условиям
INSERTдобавляет новые данные
UPDATEизменяет существующие данные
DELETEудаляет данные
Операторы определения доступа к данным
GRANTпредоставляет пользователю (группе) разрешения на определенные операции с объектом
REVOKEотзывает ранее выданные разрешения
DENYзадает запрет, имеющий приоритет над разрешением
Операторы управления транзакциями
COMMITприменяет транзакцию
ROLLBACKоткатывает все изменения, сделанные в контексте текущей транзакции
SAVEPOINTделит транзакцию на более мелкие участки
					
    -- Пример одной из самых частых "команд"
    SELECT name FROM personal; 
					
				
					
    -- Удаление данных из таблицы
    DELETE FROM customer WHERE id='Ткачёв Т.Т.'; 
					
				
Следующий далее материал будет касаться MySql и его использования в PHP

Зарезервированные слова

Полный список зарезервированных слов для MySql 5.7

ЗАПРЕЩЕНО использовать в качестве имён столбцов и таблиц зарезервированные слова

К зарезервированным словам относятся слова, использующиеся в качестве названия функций и типов данных. Некоторые слова разрешены в качестве имён для столбов и таблиц, но запрещены в ANSI SQL, как правило это слова естественного языка, уже пользующиеся многими потребителями, т.е. запретить их полностью будет болезненно для многих систем, эти слова: ACTION, BIT, DATE, ENUM, NO, TEXT, TIME и TIMESTAMP.

Операции

ОператорОписание
+Операция сложения
-Операция вычитания / отрицания
*Операция умножения
/Операция деления
%Остаток от деления
=Сравнение на равно
<Меньше
<=Меньше или равно
<>Не равно
>Больше
>=Больше или равно
--Комментарии на одной строке
#Комментарии на одной строке
/* */Многострочные комментарии
;Завершение команды SQL
ORЛогическое ИЛИ
ANDЛогическое И
NOTЛогическое НЕ
					
    SELECT name FROM customer WHERE age>18  AND age<35; 
					
				
    -- Результат выборки
    +-------------+----+
    | Петров П.П. | 26 |
    +-------------+----+
				

Типы данных

Данные хранятся в БД в виде таблиц, состоящих из столбцов и строк. В таблице с одним столбцом можно хранить одномерный список. Таблица с несколькими столбцами хранит информацию, для которой имеет значение сочетание строк и столбцов.

Каждый столбец представляет собой один атрибут строки. Каждая строка таблицы содержит одну запись. Один или несколько столбцов таблицы могут быть первичными, внешними или уникальными ключами. На таблицы и столбцы ссылаются, используя их имена.

MySQL - реляционная СУБД, которая поддерживает несколько типов данных, которые можно разделить на три категории: числовые данные, дата и время, и данные типа строка.

Тип данныхИспользованиеДиапазоны
TINYINT Очень маленькое целое число Диапазон числа со знаком от –128 до 127. Диапазон числа без знака (unsigned) от 0 до 255.
SMALLINT Маленькое целое число Диапазон числа со знаком от –32768 до 32767. Диапазон числа без знака (unsigned) от 0 до 65535.
MEDIUMINT Среднее целое число Диапазон числа со знаком от –8388608 до 8388607. Диапазон числа без знака (unsigned) от 0 до 16777215.
INT или INTEGER Целое число Диапазон числа со знаком от –2147483648 до 2147483647. Диапазон числа без знака (unsigned) от 0 до 4294967295.
BIGINT Большое целое число Диапазон числа со знаком от –9223372036854775808 до 9223372036854775807. Диапазон числа без знака (unsigned) от 0 до 18446744073709551615.
FLOAT Малое (одинарной точности) число с плавающей запятой. Не может быть числом без знака Диапазоны от –3.402823466E+38 до –1.175494351E-38, 0 и 1.175494351E-38 до 3.402823466E+38. Если количество знаков после запятой не установлено или <= 24 это число с плавающей запятой одинарной точности.
DOUBLE,
DOUBLE PRECISION,
REAL
Нормальное (двойной точности) число с плавающей запятой. Не может быть числом без знака Диапазоны от -1.7976931348623157E+308 до -2.2250738585072014E-308, 0 и 2.2250738585072014E-308 до 1.7976931348623157E+308. Если количество знаков после запятой не установлени или 25 <= количество знаков <= 53 означает числоа с плавающей запятой двойной точности.
DECIMAL,
NUMERIC
Распакованное число с плавающей запятой Работает подобно типу данных CHAR: «распакованный» означает, что число хранится в виде строки, используя один символ для каждой цифры-значения. Символ десятичной запятой и символ отрицательного числа "-" не учитывается в длину. Если десятичное значение равно 0, значение не будет иметь десятичной запятой или дробной части. Максимальный размер для DECIMAL значение такое же, как и для DOUBLE, но фактический диапазон для данного столбца DECIMAL может быть ограничен в выборе длины и десятичные дроби.
DATE Дата Дата в диапазоне от «1000-01-01» до «9999-12-31». MySQL хранит поле типа DATE в виде «YYYY-MM-DD» (ГГГГ-ММ-ДД).
DATETIME Дата и время Допустимые диапазоны от «1000-01-01 00:00:00» до «9999-12-31 23:59:59». MySQL хранит поле типа DATETIME в виде «YYYY-MM-DD HH:MM:SS» (ГГГГ-ММ-ДД ЧЧ-ММ-СС).
TIMESTAMP Дата и время Диапазон от «1970-01-01 00:00:00» до, примерно, 2037 года. MySQL может хранить поле типа TIMESTAMP в видах «YYYYMMDDHHMMSS» (TIMESTAMP(14)), «YYMMDDHHMMSS» (TIMESTAMP(12)), «YYYYMMDD» (TIMESTAMP(8)) и др.
TIME Время Диапазон от «-838:59:59» до «838:59:59». MySQL хранит поле TIME в виде «HH:MM:SS», но позволяет присваивать значения столбцам TIME с использованием либо строки или числа.
YEAR Год в 2- или 4- хцифровом виде (4 цифры по-умолчанию) Если вы используете 4 цифра, то допустимые значения 1901-2155, и 0000. Если 2 цифры, то 1970-2069 (70-69). MySQL хранит значения поля YEAR в формате «YYYY».
CHAR Строка фиксированной длины, которая справа дополняются пробелами до указанной длины, при хранении Диапазон длины от 1 до 255 символов. Завершающие пробелы удаляются, когда значение извлекается. Значения CHAR сортируются и сравниваются без учета регистра в зависимости от кодировки по умолчанию, если не установлен флаг BINARY.
VARCHAR Строка переменной длины. Примечание: конечные пробелы удаляются при сохранении (в отличие от спецификации ANSI SQL). Диапазон длины от 1 до 255 символов. Значения VARCHAR сортируются и сравниваются без учета регистра, если не установлен флаг BINARY.
TINYBLOB,
TINYTEXT

BLOB или ТЕХТ с максимальной длиной 255 (2^8 - 1) символов.
BLOB,
TEXT

BLOB или ТЕХТ с максимальной длиной 65535 (2^16 - 1) символов.
MEDIUMBLOB,
MEDIUMTEXT

BLOB или ТЕХТ с максимальной длиной 16777215 (2^24 - 1) символов.
LONGBLOB,
LONGTEXT

BLOB или ТЕХТ с максимальной длиной 4294967295 (2^32 - 1) символов.
ENUM Перечисление Строка-объект, который может принимать только одно значение, выбирается из списка значений «значение 1», «значение 2» или NULL. ENUM максимум может иметь 65535 различных значений.
SET Набор Строка-объект, который может принимать ноль и более значений, каждоу из которых должно быть выбрано из списка значений «значение 1», «значение 2», … Поле SET может иметь максимум 64 варианта значений.

Константы

Константами, так же называемые литералами, явно записываются величины. Выделяется три типа констант: строки, числа и двоичные значения. Строка - это одна или несколько символов в одинарных кавычках. Например:

    '606345 ул.Геологов'
    'Newman'
    'Привет мир!!'
				

Для языка SQL стандартом является использование одинарных кавычек. Привыкайте пользоваться стандартом, это избавит от затруднений в случае других диалектов SQL. Если одинарная кавычка является частью строки, надо вместо одной набрать две подряд:

    'Kenny''s chicken'
				

Числа можно записывать как целые, с десятичной точкой и научной нотации. Примеры:

    -1
    3.142
    6.0221415Е23
				

Двоичные константы записываются как пары шестнадцатиричных цифр (0-9A-F) в одинарных кавычках с лидирующим символом х. Примеры:

    x'01'
    x'0fff'
				

Пример

В МySQL существует два типа таблиц - MyISAM и InnoDB. Отличаются они следующим.
MyISAM
  • не поддерживает транзакции и с этим связаны его основные недостатки и преимущества;
  • в большинстве случаев он быстрее, так как нет расходов на транзакции;
  • занимает меньше дискового пространства;
  • меньше расход памяти на обновления;
  • полнотекстовый индекс;
  • быстрый INSERT, SELECT.

InnoDB
  • поддержка транзакций;
  • построчная блокировка. UPDATE не блокирует всю таблицу;
  • отлично ведет себя при смешанной нагрузке (insert|select|update|delete).
Начиная с версии 5.5 InnoDB стал основным хранилищем по умолчанию

CREATE TABLE

CREATE TABLE оператор используется для создания новой таблицы в базе данных.

					
    CREATE TABLE table_name {
        column1 datatype,
        column2 datatype,
        column3 datatype,
    ....
    } 
					
				
					
    -- Создадим таблицу Customer
    CREATE TABLE customer {
        id int AUTO_INCREMENT,
        fio varchar(50),
        age int
    } 
					
				
Результат работы оператора CREATE TABLE
idfioage

INSERT INTO

INSERT INTO используется для вставки новых записей в таблицу.

					
    INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
    
    --  Без указания столбцов
    INSERT INTO table_name VALUES (value1, value2, value3, ...);
					
				
					
    INSERT INTO customer (fio, age) VALUES ('Иванов И.И.', 18);
    INSERT INTO customer (fio, age) VALUES ('Петров П.П.', 26);
    INSERT INTO customer (fio, age) VALUES ('Сидоров С.С', 35);
    INSERT INTO customer (fio, age) VALUES ('Ткачёв Т.Т.', 51);
					
				
Результат работы оператора INSERT INTO
idfioage
1Иванов И.И.18
2Петров П.П.26
3Сидоров С.С.35
4Ткачёв Т.Т.51

SELECT

Оператор SELECT используются для выбора данных из базы данных.

					
    SELECT column1, column2, ... FROM table_name;
					
				
    SELECT fio FROM customer;
	
    -- Результат выборки
    +--------------+
    | Иванов И.И.  |
    | Петров П.П.  |
    | Сидоров С.С. |
    | Ткачёв Т.Т.  |
    +--------------+
				

Если вы хотите, чтобы выбрать все поля, доступные в таблице, используйте символ * вместо перечисления имён полей

					
    SELECT * FROM customer;
					
				

UPDATE

Оператор UPDATE используется для изменения существующих записей в таблице.

					
    UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
					
				
Обратите внимание на пункт WHERE в операторе UPDATE. Предложение WHERE определяет, какая запись(или записи), должна быть обновлена. Если опустить предложение WHERE, все записи в таблице обновяться!
					
    UPDATE customer SET fio = 'Пупкин Г.В.', age = 90 WHERE id = 3;
					
				
Результат выполнения оператора UPDATE
idfioage
1Иванов И.И.18
2Петров П.П.26
3Пупкин Г.В.90
4Ткачёв Т.Т.51

DELETE

Оператор DELETE используется для удаления существующих записей в таблице.

					
    DELETE FROM table_name WHERE condition;
					
				
Предложение WHERE определяет , какая запись(или записи), должна быть удаленыа. Если опустить предложение WHERE, все записи в таблице будут удалены!
					
    DELETE FROM customer WHERE age > 50;
					
				
Результат выполнения оператора DELETE
idfioage
1Иванов И.И.18
2Петров П.П.26

DROP TABLE

Оператор DROP TABLE используется для удаления существующей таблицы в базе данных.

					
    DROP TABLE table_name;
					
				
Удаление таблицы приведёт к полной потере информации, хранящейся в таблице!

Взаимодействие PHP и MySQL