Создание баз данных и таблиц в SQL

Готовы ли вы приступить к созданию баз данных и таблиц с помощью Структурированный язык запросов? В этой статье мы исследуем процесс создания таблиц вручную с помощью команд CREATE DATABASE и CREATE TABLE. Если вы новичок в SQL, возможно, вы захотите ознакомиться с некоторыми Основы SQL первый.

Бизнес-требования

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

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

instagram viewer
Диаграмма сущность-связь на этой странице.

Выбор платформы базы данных

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

В качестве дополнительного преимущества использование ANSI-совместимого SQL гарантирует, что эти команды будут работать в любой СУБД, поддерживающей стандарт SQL, включая Oracle и Microsoft SQL Server. Если вы еще не выбрали платформу для своей базы данных, Database Software Options проведет вас через процесс выбора.

Создание базы данных

Наш первый шаг - создать саму базу данных. Многие системы управления базами данных предлагают ряд опций для настройки параметров базы данных на этом этапе, но наша база данных позволяет только простое создание базы данных. Как и в случае со всеми нашими командами, вы можете обратиться к документации по своей СУБД, чтобы определить, соответствуют ли какие-либо дополнительные параметры, поддерживаемые вашей конкретной системой, вашим потребностям. Давайте воспользуемся командой CREATE DATABASE для настройки нашей базы данных:

СОЗДАТЬ БАЗУ ДАННЫХ персонала

Обратите особое внимание на использование заглавных букв в приведенном выше примере. Программисты SQL часто используют заглавные буквы в ключевых словах SQL, таких как «CREATE». и «БАЗА ДАННЫХ» при использовании всех строчных букв для пользовательских имен, таких как база данных «персонал». название. Эти условные обозначения обеспечивают удобство чтения.

Теперь, когда мы спроектировали и создали нашу базу данных, мы готовы приступить к созданию трех таблиц, используемых для хранения данных о персонале XYZ Corporation.

Создание нашей первой таблицы

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

Атрибут ReportsTo хранит идентификатор менеджера для каждого сотрудника. Из приведенных примеров записей мы можем определить, что Сью Скампи является менеджером Тома Кендалла и Джона Смита. Однако в базе данных нет информации о менеджере Сью, о чем свидетельствует запись NULL в ее строке.

Теперь мы можем использовать SQL для создания таблицы в нашей базе данных персонала. Прежде чем мы это сделаем, давайте убедимся, что мы находимся в правильной базе данных, введя команду USE:

Персонал ЕГЭ;

В качестве альтернативы, «Персонал БАЗЫ ДАННЫХ»; команда будет выполнять ту же функцию. Теперь мы можем взглянуть на команду SQL, используемую для создания таблицы наших сотрудников:

СОЗДАТЬ ТАБЛИЦУ сотрудников
(employeeid INTEGER NOT NULL,
фамилия VARCHAR (25) NOT NULL,
firstname VARCHAR (25) NOT NULL,
reportsto INTEGER NULL);

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

СОЗДАТЬ ТАБЛИЦУ имя_таблицы
(параметры типа данных attribute_name,
...,
параметры типа данных attribute_name);

Атрибуты и типы данных

В предыдущем примере имя таблицы - сотрудники, и мы включили четыре атрибуты: идентификатор сотрудника, фамилия, имя и reportsto. Тип данных указывает тип информации, которую мы хотим сохранить в каждом поле. Идентификатор сотрудника - это простое целое число, поэтому мы будем использовать тип данных INTEGER как для поля employeeid, так и для поля reportsto. Имена сотрудников будут представлять собой символьные строки переменной длины, и мы не ожидаем, что имя или фамилия какого-либо сотрудника будет длиннее 25 символов. Поэтому для этих полей мы будем использовать тип VARCHAR (25).

NULL значения

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

Создание оставшихся таблиц

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

Посмотрим на соответствующий SQL:

СОЗДАТЬ ТАБЛИЧНЫЕ территории
(территория id INTEGER NOT NULL,
территория Описание VARCHAR (40) NOT NULL,
идентификатор региона VARCHAR (25) NOT NULL);

Наконец, мы будем использовать таблицу EmployeeTerritories для хранения отношений между сотрудниками и территориями. Подробная информация по каждому сотруднику и территории хранится в двух наших предыдущих таблицах. Следовательно, нам нужно сохранить в этой таблице только два целых идентификационных номера. Если нам нужно расширить эту информацию, мы можем использовать JOIN в наших командах выбора данных для получения информации из нескольких таблиц.

Этот метод хранения данных снижает избыточность в нашей базе данных и обеспечивает оптимальное использование пространства на наших дисках. Мы подробно рассмотрим команду JOIN в следующем руководстве. Вот код SQL для реализации нашей финальной таблицы:

СОЗДАТЬ ТАБЛИЦУ территории сотрудников
(employeeid INTEGER NOT NULL,
территорииid INTEGER NOT NULL);

Механизм, предоставляемый SQL для изменения структуры базы данных после создания

Если вы сегодня особенно проницательны, то, возможно, заметили, что мы «случайно» упустили одно из требований к дизайну при реализации наших таблиц базы данных. Директор по персоналу XYZ Corporation попросил, чтобы база данных отслеживала информацию о заработной плате сотрудников, и мы не позаботились об этом в таблицах базы данных, которые мы создали.

Однако еще не все потеряно. Мы можем использовать команду ALTER TABLE, чтобы добавить этот атрибут в нашу существующую базу данных. Мы хотим сохранить зарплату в виде целого числа. Синтаксис очень похож на синтаксис команды CREATE TABLE, вот он:

Сотрудники ALTER TABLE
ДОБАВИТЬ зарплату INTEGER NULL;

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