MySQL – каскадное удаление строк из таблиц

В данном посте я хочу проверить механизм каскадного удаления связанных таблиц. Создам новую базу данных, 2 связанных таблицы – отделы (departments) и сотрудники (employee). Сделаю стартовое заполнение. И попробую удалить один из отделов… Все работы буду делать из консоли MySQL.exe для тренировки…

Создание БД из консоли…

1

Итак, БД DB_Company успешно создана на сервере mysql;

Создание таблиц в БД из консоли…

Таблица департаментов…

Continue reading

MySQL Создание / удаление пользователей

Как залогиниться в MySQL?

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

3

 

…или из cmd.exe

1

Первый пользователь, о котором Вы можете знать – тот, которого Вы создавали при установке MySQL. Как правило это пользователь под именем root… Когда введете первую строку, система Вам предложит ввести пароль… Если ввёдете правильно окажетесь в консоли mysql; Continue reading

MySQL представления

Что такое представление?

Представления это объект, созданный в результате запроса SELECT к таблице. Представление названо так потому, что само по себе не содержит данных, а извлекает их из таблиц, в момент обращения к нему.

При подготовке поста, нашёл классную статью на хабре. Очень всё подробно расписано.  Continue reading

MySQL Индексы

Файловая система и MySQL

В MySQL информация хранится в файлах. А что такое файл? Это не атомарная величина, а совокупность блоков информации, разбросанных по диску. Если блоков много, и нужно перебирать все – то поиск значительно затрудняется.

Для решения задачи быстрого поиска по базе и создан индекс – преобразованный набор значений. К примеру, у нас есть запись в базе “Вася Пупкин”. Система по некоторому правилу его преобразует в число, например “17”. А при попытке поиска – решается обратная задача – если запросили “Вася Пупкин”, значит ищем число 17 и отображаем запись. Это похоже на алфавиные буквы в старых телефонных справочниках. Continue reading

MySQL редактирование, удаление таблиц

Добавить колонку

Если быть кратким, то добавление колонки будет выглядеть следующим образом…

где parameters, это, как один из вариантов INT NOT NULL AUTO_INCREMENT

Добавим в одну из таблиц существующей БД колонку для создания внешнего ключа…

1 Continue reading

MySQL создание БД и таблиц из MySQL.exe

“Кража” таблицы

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

5

Мы создали копию таблицы на основе запроса и невыполнимого условия!

Ранее я рассматривал как создавать БД и таблицы в ней из программы WorkBench. Это достаточно просто. В данном же посте постараюсь рассмотреть вопрос создания БД и таблиц прямо из консольного клиента MySQL.exe

Это позволит понимать синтаксис MySQL на более глубинном уровне и создавать БД и таблицы универсально – с помощью запросов из любых IDE, например Delphi.

Просмотр существующих БД на сервере

1

 

Единственное, что может удивить у меня исполнение команд идет после символов //, а не после точки с запятой, потому что я менял delimiter во время создания процедуры. В вашем случае,скорее всего будет точка с запятой. В следующем примере вернул delimiter на место, написав delimiter ; Continue reading

Транзакции и MySQL

Что такое транзакции?

Если Вы программируете интернет-магазин, форум, что угодно с большой посещаемостью, то вполне вероятно, что 2 пользователя обратятся к одним и тем же данным в один момент. Хорошо, если обратятся они только с чтением, а если они что-то хотят записать туда одновременно? И в этот же момент третий пользователь попытается прочитать эти данные? Как видите неуправляемый доступ к данным чреват проблемами искажения информации. Именно для этих ситуаций было создано понятие транзакций.

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

Транзакции в MySQL

Итак, как организованы транзакции в MySQL? По умолчанию, на движке InnoDB, каждая инструкция воспринимается системой как отдельная транзакция. То есть, после каждого изменения данных – происходит автоматическая запись в физическую базу данных.

Это можно остановить командой

set autocommit=0;

Или включить обратно

set autocommit=1; Continue reading

DML инструкции в клиенте MySQL.exe UPDATE и DELETE

UPDATE (редактирование записей)

Синтаксис оператора UPDATE на сайте mysql.ru выглядит таким образом

update sales set salesamount=100000 where primary_id=1

1

Теперь попробуем увеличить продажи всех продавцов в 3 раза!
Continue reading

DML инструкции в клиенте MySQL.exe INSERT

DML – Data Manipulation Language. Согласно книге Д. Осипова “Базы данных и Delphi”. Итак, базис языка строится на 3 командах

INSERT – вставка новых записей;

UPDATE – редактирование записей в таблице;

DELETE – удаление записей в таблице;

Итак, начнём эксперименты с СУБД MYSQL и консольным клиентом MySQL.exe В данном посте посмотрим как работает оператор INSERT Continue reading

SQL инструкции. Агрегатные функции из клиента Delphi.

О том, что такое агрегатные функции SQL, я писал в другом посте. Там более менее подробно разобрал работу этих функций на примере клиента MySQL.exe.

В данном посте посмотрим как можно пользоваться агрегатными функциями СУБД MySQL из клиента Delphi. Итак, начало клиента в Delphi у меня получилось таким…

1

На этот раз соединение с MySQL сделал по технологии DBExpress, но не через SimpleDataSet, а через ClientDataSet (для разнообразия). Получилась более длинная цепочка, но и ClientDataSet обладает большими возможностями.  В частности, нам нужно будет создавать агрегатные поля, а это умеет ClientDataSet, в то время как SimpleDataSet – не умеет.

Единственное, что долго искал при подключении – как соединить ClientDataSet с предыдущим компонентом, оказалось, через свойство ProviderName. Continue reading