Sql

Что такое СУБД

У Вас может возникнуть вопрос, если база данных это некая информация, которая хранится в таблицах, то как она выглядит физически? Как на нее посмотреть в целом?

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

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

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

Таким инструментом как раз и выступает СУБД – это система управления базами данных, сокращенно СУБД.

Создаем базу данных

Управление базами данных как объектами

Будем считать, что наша небольшая экскурсия по запросам и командам SQL со стороны «торгового зала» завершена. Заглянем теперь в его «служебные помещения» и познакомимся с тем, как создается сама база данных. Эта часть языка SQL не столь стандартизирована и сильно отличается в различных реализациях. Поэтому в дальнейших примерах я буду придерживаться синтаксиса, принятого в самой популярной на веб-серверах системе — MySQL.

MySQL — продукт шведской компании MySQL AB. Ее основатели — Дэвид Аксмарк, Аллан Ларсон и Майкл Видениус (последний больше известен по прозвищу — Монти). По одной из версий, первая часть названия продукта (My) — не что иное, как англизированная запись имени дочери М. Видениуса. Однако точно за происхождение названия сегодня не могут поручиться даже отцы-создатели. Существует версия, по которой «my» — это префикс, с которого начинались названия рабочих каталогов на их компьютерах.

Из всех команд чаще всего нам будут нужны три: CREATE (создать), ALTER (изменить) и DROP (уничтожить).

Чтобы создать новую базу данных с названием, ну скажем, OUR_SHOP, следует выполнить команду:

Еще лучше сразу при ее создании установить нужную кодировку (ведь по умолчанию в MySQL используется latin1). В итоге команда будет выглядеть так.

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

Когда, наигравшись вдоволь с пробной базой данных, вы захотите ее уничтожить, воспользуйтесь командой:

Управление таблицами

Чтобы создать таблицу GOODS, на которой мы отрабатывали манипуляции с данными, потребуется составить команду примерно такого вида:

Разберем эту команду подробнее. Тип INT устанавливается для столбцов с целочисленными данными, тип VARCHAR(100) обеспечивает хранение строк с длиной не более 100 символов, DECIMAL(10,2) соответствует действительным числам с не более чем десятью знаками и точностью в два знака после запятой.

Столбец ID объявлен первичным ключом (PRIMARY KEY).

Ключевое слово AUTO_INCREMENT означает, что при добавлении новых строк с неуказанным значением ID оно будет автоматически заполняться следующим значением. Это удобно, поскольку обычно нет нужды вручную указывать значения первичных ключей, а за тем, чтобы они были уникальными, пусть лучше следит база данных.

NOT NULL означает запрет на пустые значения в столбце, иными словами, гарантирует обязательность заполнения.

Команда DEFAULT задает значение по умолчанию — то, которое будет записываться в базу при добавлении новой строки, если не указано иное. В нашем случае она обеспечивает автоматическое объявление товара штучным (код = 1) в случае, если при добавлении новых строк не будет указан другой код.

Признак UNIQUE обеспечивает уникальность значений в колонке (в нашем случае — уникальность названий товаров).

Если в будущем вы захотите перенастроить объявленные командой CREATE столбцы таблицы, сделать это можно командой ALTER. Например, таблицу GOODS можно нарастить строчной колонкой REMARK (подкоманда ADD):

Поработав с ней немного и убедившись, что 50 символов для примечания явно недостаточно, увеличиваем максимальный размер строки до 250 (блок CHANGE):

Так как имя столбца мы не изменяли (новое совпадает со старым), то его просто повторяем в этой команде (как бы меняем само на себя).

И наконец, убедившись через какое-то время, что без примечания в товарном справочнике вполне можно обойтись, мы удаляем ставшую ненужной колонку (блок DROP):

Удалить таблицу целиком можно командой DROP:

Стоит ли говорить о том, что пользоваться командами с этим ключевым словом следует с особой осторожностью?

«Курс SQL и PostgreSQL» от BeOnMax

  • Стоимость: бесплатны первые уроки, далее подписка от 90 рублей в месяц
  • Длительность: 23 академических часа
  • Сертификат: да
  • Формат обучения: видеокурс

Описание курса

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

Благодаря предоставленным материалам вы сможете работать с простыми выборками, соединениями и подзапросами, научитесь проектировать базы данных, редактировать их и составлять сложные запросы. Главное — все это впоследствии вы сможете применить на практике.

Преподавателем курса является Илья Фофанов — практикующий инженер программист, работающий по специальности более 10 лет. За его плечами сотрудничество с крупнейшими компаниями, занимавшимися организацией встреч специалистов платформы .NET.

Плюсы:

  • Большое количество представленного материала;
  • Наличие подробного плана курса;
  • Возможность бесплатного ознакомления с первыми уроками;
  • Предоставление сертификата.

Минусы:

Запросы DML

DML (Data Manipulation Language) – это операторы SQL, с помощью которых осуществляется манипуляция данными. К ним относятся select, update, insert, delete.

SELECT

Оператор SQL с помощью которого осуществляется выборка данных. Подробно о нем мы разговаривали в материале Язык запросов SQL – Оператор SELECT

Пример

  
   SELECT * FROM test_table

UPDATE

Используется для обновления данных

Пример

   
  --обновятся все строки в таблице
   UPDATE test_table SET summa=500
   --обновятся только строки, у которых id больше 10
   UPDATE test_table SET summa=100
   WHERE id > 10

INSERT

Оператор на добавление данных

   
   --добавление одной строки
   INSERT INTO test_table (fio, summa, date_create, comment)
        VALUES ('ФИО',100, '26.10.2014', 'тестовая запись')
   --массовое добавление на основе запроса
   INSERT INTO test_table
        SELECT fio, summa, date_create, comment 
        FROM test_table

DELETE

С помощью этого оператора можно удалить данные.

Пример

   
   --очищение всей таблицы
   DELETE test_table
   --удаление только строк попавших под условие
   DELETE test_table 
   WHERE summa > 100

Вот и все, справочник закончился! Надеюсь, он Вам хоть как-то помог. Удачи!

Нравится10Не нравится1

Процедуры

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

Создание

   
   CREATE PROCEDURE sp_test_procedure
   (@id INT) 
   AS 
     --объявляем переменные
     DECLARE @sum FLOAT
    --SQL инструкции
     SET @sum = 100
     UPDATE test_table SET summa = summa + @sum 
     WHERE id = @id
   
   GO

Изменение

   
   ALTER PROCEDURE sp_test_procedure
   (@id int) 
   AS 
   --объявляем переменные
   DECLARE @sum float
   --SQL инструкции
   SET @sum = 500
   UPDATE test_table SET summa = summa + @sum WHERE id = @id
   
   GO

Удаление

  
   DROP PROCEDURE sp_test_procedure

Вызов процедуры

Можно вызывать по разному, например:

   
   EXECUTE sp_test_procedure 1
     --или
   EXEC sp_test_procedure 1

Где, EXECUTE и EXEC вызов процедуры, sp_test_procedure соответственно название нашей процедуры, 1 значение параметра

Распределенная обработка SQL

Архитектура распределенной реляционной базы данных (DRDA) была разработана рабочей группой в IBM в период с 1988 по 1994 год. DRDA позволяет связанным с сетью реляционным базам данных взаимодействовать для выполнения запросов SQL.
Интерактивный пользователь или программа может выдавать SQL-запросы локальному RDB и получать таблицы данных и индикаторы состояния в ответ от удаленных RDB. Операторы SQL также могут быть скомпилированы и сохранены в удаленных RDB как пакеты, а затем вызваны именем этого пакета

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

Создаём таблицу

Таблица — основной компонент в MySQL. Они состоят из полей и записей, которые относятся к своим полям. Чтобы было проще понять, что такое поля и записи, можно представить так:

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

Допустим, вы ведёте ежедневник в виде карточек. Тогда у вас будут всего два поля: дата и события за день. Дата будет записываться в формате «год — месяц — число», а события — в виде простого текста. Получается, что для записи каждого дня вы берёте пустую карточку, заполняете в ней нужные поля и кладёте карточку в ящик (таблицу в базе данных).

Зная это, создадим таблицу, чтобы вести в ней учёт входящих обращений в сервисный центр:

Теперь разберём команду подробнее:

  • CREATE TABLE имя_таблицы — создаёт таблицу с указанным именем внутри текущей базы данных. Таблицы переименовывать можно, поэтому тут можно всё поправить, если что-то будет не так.
  • id INT AUTO_INCREMENT PRIMARY KEY — создаёт поле с названием id, внутри него будут только числа, а ещё значение в этом поле само увеличивается на единицу в каждой новой записи.  PRIMARY KEY означает, что это поле служит для связи с другими таблицами внутри базы данных.
  • city_id INT — создаёт поле city_id для чисел.
  • day DATE — создаёт поле для даты с именем day.
  • reason TEXT — создаёт поле reason, в который можно положить текст почти любой длины.

Такие поля нам нужны, чтобы при каждом обращении в сервисный центр мы могли записать:

  • код города, откуда пришло обращение (city_id);
  • дату обращения (day);
  • и саму причину обращения в сервис (reason).

Базовый синтаксис SQL команды SELECT

Одна из основных функций SQL — получение данных из СУБД. Для построения всевозможных запросов к базе данных используется оператор SELECT. Он позволяет выполнять сложные проверки и обработку данных.

Общая структура запроса

SELECT  поля_таблиц 
 



]

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

Параметры оператора

  • DISTINCT используется для исключения повторяющихся строк из результата
  • ALL (по умолчанию) используется для получения всех данных, в том числе и повторений
  • FROM перечисляет используемые в запросе таблицы из базы данных
  • WHERE — это условный оператор, который используется для ограничения строк по какому-либо условию
  • GROUP BY используется для группировки строк
  • HAVING применяется после группировки строк для фильтрации по значениям агрегатных функций
  • ORDER BY используется для сортировки. У него есть два параметра:
  • ASC (по умолчанию) используется для сортировки по возрастанию
  • DESC — по убыванию
  • LIMIT используется для ограничения количества строк для вывода

SQL-псевдонимы

Псевдонимы используются для представления столбцов или таблиц с именем отличным от оригинального. Это может быть полезно для улучшения читабельности имён и создания более короткого наименования столбца или таблицы.

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

Для создания псевдонимов используется оператор AS:

SELECT 
    good_type_id AS id 
FROM 
    GoodTypes;

Примеры использования

Вы можете выводить любые строки и числа вместо столбцов:

SELECT 
    "Hello world", 1;

Для того, чтобы вывести все данные из таблицы Company, вы можете использовать символ «*», который буквально означает «все столбцы»:

SELECT 
    * 
FROM 
    Company;

Вы можете вывести любой столбец, определённый в таблице, например, town_to из таблицы Trip:

SELECT 
    town_to 
FROM 
    Trip;

Также вы можете вывести несколько столбцов. Для этого их нужно перечислить через запятую:

SELECT 
    member_name, status 
FROM 
    FamilyMembers;

Иногда возникают ситуации, в которых нужно получить только уникальные записи. Для этого вы можете использовать DISTINCT. Например, выведем список городов без повторений, в которые летали самолеты:

SELECT 
    DISTINCT town_to 
FROM 
    Trip;

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

Инсталляция MS SQL Server

Подготовительный шаг – скачать установочный пакет SQL Server Enterprise с официальной страницы сайта Microsoft. После нажатия на кнопку «Бесплатная пробная версия» будет предложено выбрать вариант EXE или Azure («облако») и внести свои анкетные данные, при сохранении которых начнется загрузка инсталляционного файла.

Перед запуском установщика нужно создать учетную запись пользователя. Она пригодится для авторизации на сервере при запросе доступа с клиентских компьютеров (даже при условии, что ПК будет один и тот же).

Последовательность действий:

  1. В поиске набрать команду lusrmgr.msc и нажать Enter.
  2. Создать нового пользователя и задать ему пароль доступа.
  3. Сохранить изменения и перезагрузить компьютер.

Рекомендуется в имени и пароле использовать только буквы латиницы и цифры, кириллица будет привносить риски локальных сбоев из-за особенностей обработки. Теперь можно запускать файл с дистрибутивом MS SQL Server. Программа предложит 3 варианта действий: базовая инсталляция с настройками «по умолчанию», выборочный режим или скачивание файлов «на потом».

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

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

Зачем нужен SQL Server Management Studio

Для удобства администрирования также понадобится SQL Server Management Studio (SSMS). Он представляет собой интегрированную среду для управления инфраструктурой БД и поддерживает любые ее варианты – от локальной до Azure. В него встроены инструменты настройки, наблюдения и редактирования экземпляров баз данных.

Последовательность действий:

  1. Нажать кнопку «Установить SSMS» в окне инсталлятора SQL Server.
  2. Произойдет автоматическое перенаправление на официальную страницу продукта.
  3. Скачать последний релиз программного обеспечения на компьютер.
  4. Запустить инсталлятор и нажать кнопку «Установить».

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

Хостинг-провайдеры обычно предлагают предустановленный комплект поддержки баз данных на SQL Server.  Он не всегда последней версии, зато наверняка работоспособен в рамках как панели управления, так и публикуемых веб-ресурсов. Пользователю фактически предлагается сразу начать с создания БД – запрашивается всего лишь ее название, имя пользователя и пароль.

Синтаксис

Структура программы

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

Data definition language

Data Definition Language используется для модификации схемы реляционной базы данных. Этот раздел языка состоит из четырёх типов утверждений: CREATE, ALTER, DROP, RENAME.

Create

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

CREATE TABLE employees (
    id            INTEGER      PRIMARY KEY,
    first_name    VARCHAR(50) not null,
    last_name     VARCHAR(75) not null,
    fname         VARCHAR(50) not null,
    dateofbirth   DATE         not null
);

ALTER

Команда ALTER используется для модификации уже существующего в БД объекта.

ALTER TABLE sink ADD bubbles INTEGER;
ALTER TABLE office ADD CONSTRAINT unique_name_and_description UNIQUE (name, description);
ALTER TABLE office DROP CONSTRAINT unique_name_and_description;

Команда DROP уничтожает существующий объект (будь то база данных, таблица или иной объект).

DROP TABLE employees;

RENAME

Команда RENAME используется для переименования таблицы.

RENAME TABLE old_name TO new_name;

Data manipulation language

Data Manipulation Language используется для составления запросов к СУБД или модификации её содержимого. Раздел языка состоит из четырёх типов утверждений: SELECT, INSERT, UPDATE и DELETE.

SELECT

SELECT извлекает 0 или более строк из различных таблиц или отображений.

SELECT *
FROM reunion
WHERE (priority = 'B' AND NOT duration <= 60) OR date = '2008-05-12';

Декларативное утверждение SELECT формулирует запрос с помощью условий FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER_BY, DISTINCT и др. Возможны вложенные запросы, хотя их производительность обычно уступает классическому подходу с применением JOIN. Вложенный запрос также называют подзапросом.

INSERT

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

INSERT INTO reunion (id_reunion, name, description, priority, planned, date, hour, duration, id_office)

UPDATE

UPDATE используется для модификации уже существующей строки.

UPDATE reunion
SET description = 'Meeting with Ms. JOHNSON', date = '2010-02-11', hour = '08:00:00'
WHERE id_reunion = '14';

DELETE удаляет заданный условием набор строк.

DELETE FROM reunion
WHERE duration = 120;

MERGE

MERGE объединяет элементы нескольких таблиц.

MERGE INTO table_name USING table_reference ON (condition)
   WHEN MATCHED THEN
   UPDATE SET column1 = value1 ) VALUES (value1 );

Data control language

Синтаксис Data Control Language используется для ограничения прав пользователей базы данных. Содержит два основных утверждения: GRANT и REVOKE.

GRANT

GRANT предоставляет привилегии пользователю. Все команды SQL выполняются от имени определённого пользователя.

GRANT INSERT, UPDATE, DELETE ON office TO DEVELOPER_2 DEVELOPER_3;

REVOKE

REVOKE снимает привилегии с пользователя. Для полного снятия привилегии необходимо её снятие с понижаемого в полномочиях пользователя всеми пользователями, её давшими.

REVOKE INSERT, DELETE ON TABLE office FROM DEVELOPER_2, DEVELOPER_3;

Управление транзакциями

START TRANSACTION, COMMIT, SAVE TRANSACTION, ROLLBACK — набор команд, использующихся для организации транзакций и обеспечивающих надёжность и целостность реляционной БД.

START TRANSACTION;
 UPDATE Account SET amount=amount-200 WHERE account_number=1234;
 UPDATE Account SET amount=amount+200 WHERE account_number=2345;
IF ERRORS= COMMIT;
IF ERRORS<> ROLLBACK;

Установка и настройка MS SQL Server Management Studio

После того, как мы настроили сервер. Нужно настроить клиент. MS SQL Server Management Studio предоставляет удобный визуальный интерфейс для клиента и позволяет удобно разрабатывать и отправлять серверу запросы.

Установка его не сложнее плеера, поэтому останавливаться на этом не будем. Скачайте его с официального сайта Microsoft по одной из ссылок ниже.

  • Скачать SQL Server Management Studio (16.5.1) https://download.microsoft.com/download/3/1/D/31D734E0-BFE8-4C33-A9DE-2392808ADEE6/SSMS-Setup-RUS.exe
  • Скачать SQL Server Management Studio (17.0, версия-кандидат https://download.microsoft.com/download/B/2/3/B234198E-747D-4F89-9008-F39A7E4702D3/SSMS-Setup-RUS.exe

И установите. Программа сама определит, где у вас сервер. Просто следуйте инструкциям.

Системы Управления Базами Данных

Теперь, когда у нас есть реляционная БД, каким образом мы можем её имплементировать? Для этого мы можем воспользоваться системами управления базами данных (СУБД). Существует целый набор подобных программ, как платных, так и бесплатных. Среди платных можно выделить Oracle Database, IBM DB2 и Microsoft SQL Server. Бесплатные: MySQL, SQLite и PostgreSQL.

Чаще всего различные компании используют MySQL. Twitter в этом смысле — не исключение.

SQLite чаще используется при разработке приложений для iOS и Android, где хранится различного рода конфиденциальная информация. Браузер Google Chrome использует SQLite для хранения истории просмотров, кукисов, изображений…

PostgreSQL используется реже. Для неё существует полезное расширение PostGIS, которое делает данную СУБД удобной для хранения геолокационных данных. К примеру сервис OpenStreetMap исользует PostgreSQL.

Системы баз SQL, о которых вы должны знать

Система баз — программа, позволяет разработчику работать с базами с помощью пользовательского интерфейса. Системы баз часто имеют готовые шаблоны, конструкторы и конструкторы.

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

Теперь давайте рассмотрим некоторые из наиболее распространенных систем баз SQL. Системы ранжируются наоснове оценок популярности DB-двигателей. Рейтинг учитывает следующие переменные::

База Oracle

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

MySQL

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

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

Сервер Microsoft SQL

SQL Server — специальная система управления базами от Microsoft. База работает на основных версиях операционных систем Windows. Он применяется в потребительском программном обеспечении, а в частности на серверах, работающих под управлением Windows. Он имеет внушительную базу пользователей.

PostgreSQL

Основной конкурент MySQL,PostgreSQL— еще очередная бесплатная система баз с открытым исходным кодом. Он широко употребляется технологическими стартапами ради своей модели свободного лицензирования. Поддерживает основные операционные системы-MacOS, Windows и Linux.

Он уделяет громадное внимание соблюдению стандартного синтаксиса, чем другие базы. Другие базы (например, SQL Server) значительно изменяют стандарт, это затрудняет их изучение

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

Виды SQL запросов

DDL (Data Def­i­n­i­tion Lan­guage) — язык определения данных. Задачей DDL запросов является создание БД и описание ее структуры. Запросами такого вида устанавливаются правила того, в каком виде различные данные будут размещаться в БД.

DML (Data Manip­u­la­tion Lan­guage) — язык манипулирования данными. В число запросов этого типа входят различные команды, используя которые непосредственно производятся некоторые манипуляции с данными. DML-запросы нужны для добавления изменений в уже внесенные данные, для получения данных из БД, для их сохранения, для обновления различных записей и для их удаления из БД. В число элементов DML-обращений входит основная часть SQL операторов.

DCL (Data Con­trol Lan­guage) — язык управления данными. Включает в себя запросы и команды, касающиеся разрешений, прав и других настроек СУБД.

TCL (Trans­ac­tion Con­trol Lan­guage) — язык управления транзакциями. Конструкции такого типа применяют чтобы управлять изменениями, которые производятся с использованием DML запросов. Конструкции TCL позволяют нам производить объединение DML запросов в наборы транзакций.

Основные типы SQL запросов по их видам:

AUTO_INCREMENT

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

AUTO_INCREMENT может быть присвоен только одному столбцу в таблице. И он должен быть проиндексирован (например, объявлен в качестве первичного ключа).

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

Можно запросить у MySQL самое последнее значение AUTO_INCREMENT, используя функцию last_insert_id() следующим образом:

SELECT last_insert_value();

Что такое нормализация

Чтобы уменьшить размер реляционной базы (не хранить избыточные данные) и избежать противоречивости (аномалий) при работе с ними, отношения в базе нормализуют. Проще говоря — разбивают их на взаимосвязанные таблицы. Это называется декомпозицией.

Избыточность данных — это когда одни и те же данные хранятся в базе сразу в нескольких местах.

Проверим наш пример на избыточность

Каждая строка таблицы Messages содержит имя клиента и никнейм оператора, а также их телефоны. Причём в 1-й и 3-й строках мы видим звонки от одного и того же клиента, а в 1-й и во 2-й — ответы одного и того же менеджера. То есть в 1-й и 3-й строках дублируются имя и телефон клиента — Васи, а в 1-й и 2-й — никнейм менеджера «Оператор1».

Чтобы избавиться от дублирования информации, выделим сущности Клиент и Оператор. И вынесем специфичные для каждой атрибуты в отдельные таблицы.

В первой (Clients) будут храниться имена и телефоны клиентов, а во второй (Operators) — операторов. Кроме того, каждой записи в этих таблицах мы присвоим атрибут id — так называемый первичный ключ (его значение уникально, то есть не может повторяться в пределах таблицы). С его помощью мы установим связь с записями таблицы Messages.

Для этого к каждой записи в Messages (напомним, она всё ещё представляет сущность «звонок») добавим два новых атрибута (внешних ключа): id_client и id_oper. Они будут ссылаться на первичные ключи из таблиц Clients и Operators соответственно. Столбцы с именами и телефонами из таблицы Messages уберём.

И вот что получим:

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

Всего существует шесть форм нормализации реляционных баз данных — в порядке уменьшения избыточности отношений. Все они описаны формальными правилами. Наше отношение мы привели ко второй нормальной форме.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector