Какой оператор sql используется для создания таблицы в базе данных
This site https://dev.mysql.com/doc/refman/8.0/en/create-table.html is experiencing technical difficulty. We are aware of the issue and are working as quick as possible to correct the issue.
We apologize for any inconvenience this may have caused.
To speak with an Oracle sales representative: 1.800.ORACLE1.
To contact Oracle Corporate Headquarters from anywhere in the world: 1.650.506.7000.
Какой оператор sql используется для создания таблицы в базе данных
Перед созданием таблицы необходимо выбрать базу данных, в которую таблица будет записана. Это делается с помощью оператора USE :
Для создания таблицы используется оператор CREATE TABLE . Его базовый синтаксис имеет следующий вид:
Например, создадим таблицу пользователей.
INT , VARCHAR(255) — типы данных: числовой и строковый соответственно. Более подробно о них можно будет узнать в следующих статьях.
Вышеприведённое определение столбцов в таблице является упрощённым. Помимо названия столбца и его типа в определение иногда необходимо добавлять следующие необязательные параметры:
Указывает колонку или множество колонок как первичный ключ.
Указывает, что значение данной колонки будет автоматически увеличиваться при добавление новых записей в таблицу. Каждая таблица имеет максимум одну AUTO_INCREMENT колонку. Стоит отметить, что данный параметр можно применять только к целочисленным типам и к типам с плавающей запятой.
Указывает, что значения в данной колонке для всех записей должны быть отличными друг от друга.
Указывает, что значения в данной колонке должны быть отличными от NULL .
Указывает значение по умолчанию. Данный параметр не применяется к типам BLOB , TEXT , GEOMETRY и JSON .
Для нашей таблицы пользователей можно указать следующие параметры:
Так, в данном примере:
- id — поле числового типа, являющееся первичным ключом;
- name — поле строкового типа с максимальной длиной в 255 символов, являющееся обязательным к заполнению;
- age — поле числового типа со значением по умолчанию равным 18.
Для того, чтобы посмотреть описание созданной таблицы можно воспользоваться оператором DESCRIBE .
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| id | int(11) | NO | PRI | <NULL> | |
| name | varchar(255) | NO | <NULL> | ||
| age | int(11) | NO | 18 |
Помимо описания столбцов, при создании таблицы можно дополнительно указать следующие параметры:
Если вы не определили первичный ключ с помощью параметров столбца, то это можно сделать с помощью дополнительных параметров таблицы, добавив запись PRIMARY KEY (<столбец_1>, <столбец_n>) после перечисления столбцов:
Предположим, что мы хотим хранить данные о компании, в которой работают наши пользователи. Давайте создадим небольшую таблицу Companies , в которой мы будем хранить уникальный идентификатор и название компании:
Дальше нужно добавить в таблицу Users поле company – место работы нашего пользователя, которое будет ссылаться на запись в таблице Companies . Полный запрос для создания таблицы будет выглядеть так:
Для того, чтобы при добавлении новых записей в таблицу Users гарантировать, что в колонке company находится идентификатор, существующий в таблице Companies , используется внешний ключ. Он имеет следующий синтаксис:
Полный запрос для создания таблицы с внешним ключом будет таким:
При наличии внешних ключей можно определить поведение текущей записи, при изменении или удалении записи, на которую она ссылается.
ON DELETE RESTRICT означает, что если попробовать удалить компанию, у которой в таблице Users есть данные, база данных не даст этого сделать:
Если бы было указано ON DELETE CASCADE , то при удалении компании были бы удалены все пользователи, ссылающиеся на эту компанию.
Есть ещё одна опция — ON DELETE SET NULL . При её использовании база данных запишет NULL в качестве значения поля company для всех пользователей, работавших в удалённой компании.
ON UPDATE CASCADE означает, что если компания изменит свой идентификатор, то все пользователи ( Users ) получат новый идентификатор в поле company.
CREATE TABLE в SQL
Таблица используется для хранения записей (данных). Для создания таблицы в базе данных используется оператор CREATE TABLE. Например:
Здесь мы создаем таблицу с именем Companies. Таблица содержит столбцы (поля) id, name, address, email и phone.
Типы int , varchar(50) и text указывают, какие данные могут храниться в этих полях.
| Тип данных | Описание | Пример |
| int | Содержит целые числа. | 500, -200. |
| varchar(x) | Содержит символьные переменные с максимальной длиной x. | Tom Yam, System Update for Windows. |
| text | Содержит текст до 65 535 символов. | A computer program is a set of instructions that the computer can perform in order to perform some task. |
Примечание: Мы должны явно указывать типы данных для каждого столбца при создании таблицы.
CREATE TABLE IF NOT EXISTS
Оператор CREATE TABLE IF NOT EXISTS используется для создания таблицы, если такой (с указанным именем) не существует на момент выполнения команды. Например:
Основы языка SQL
Язык SQL был разработан фирмой IBM в конце 70-х годов. Первый международный стандарт языка был принят международной стандартизирующей организацией ISO в 1989 г. [2], а новый (более полный) — в 1992 г. [3]. В настоящее время все производители реляционных СУБД поддерживают с различной степенью соответствия стандарт SQL92.
- идентифицуруется уникальным именем;
- имеет конечное (как правило, постоянное) ненулевое количество столбцов;
- имеет конечное (возможно, нулевое) число строк;
- столбцы таблицы идентифицируются своими уникальными именами и номерами;
- содержимое всех ячеек столбца принадлежит одному типу данных (т.е. столбцы однородны), содержимым ячейки столбца не может быть таблица;
- строки таблицы не имеют какой-либо упорядоченности и идентифицируются только своим содержимым (т.е. понятие ?номер строки? не определено);
- в общем случае ячейки таблицы могут оставаться ?пустыми? (т.е. не содержать какого-либо значения), такое их состояние обозначается как NULL.
- требования уникальности содержимого каждой ячейки какого-либо столбца и/или совокупности ячеек в строке, относящихся к нескольким столбцам;
- запрета для какого-либо столбца (столбцов) иметь ?пустые? (NULL) ячейки.
- Проекция — построение новой таблицы из исходной путем включения в нее избранных столбцов исходной таблицы.
- Ограничение — построение новой таблицы из исходной путем включения в нее тех строк исходной таблицы, которые отвечают некоторому критерию в виде логического условия (ограничения).
- Объединение — построение новой таблицы из 2-ух или более исходных путем включения в нее всех строк исходных таблиц (при условии, конечно, что они подобны).
- Декартово произведение — построение новой таблицы из 2-ух или более исходных путем включения в нее строк, образованных всеми возможными вариантами конкатенации (слияния) строк исходных таблиц. Количество строк новой таблицы определяется как произведение количеств строк всех исходных таблиц.
Кроме перечисленных выше в языке SQL реализованы операции модификации содержимого строк таблицы и пополнения таблицы новыми строками (что теоретически может рассматриваться как операция объединения), а также операции управления таблицами.
Рассмотренные выше операции над таблицами реляционной БД обладая функциональной полнотой, будучи реализованы на практике в своем ?чистом? каноническом виде, как правило, крайне неэкономичны (в первую очередь это относится к комбинации операций ограничения и декартового произведения). Разработчики реальных реляционных СУБД прибегают ко всевозможным приемам и ?ухищрениям? для минизации вычислительных затрат (в первую очередь, машинного времени) при выполнении этих операций. Общим способом, нашедшим отражение в языке SQL, повышения эффективности выполнения запросов в реляционных СУБД являются импользование ключей индексов.
Индексом называется скрытая от пользователя вспомогательная управляющая структура, обеспечивающая прямой (или ?квази?-прямой) метод доступа к строкам таблицы, позволяющий исключить последовательный просмотр всех строк таблицы для обнаружения отвечающих некоторому критерию поиска. Индексы неявным образом (скрытно от пользователя) автоматически создаются для всех ключей таблицы.
- мощные крупные коммерческие СУБД, ориентированные на хранение огромных объемов информации (от гигабайт);
- мобильные компактные свободно распространяемые (в том числе и в исходных кодах) СУБД, использование которых оправдано и для БД объемом всего лишь в десятки килобайт.
- Sybase SQLserver фирмы Sybase, Inc.;
- Oracle фирмы Oracle Corporation;
- Ingres фирмы Computer Associates International;
- Informix фирмы Informix Corporation.
- PostgreSQL организации PostgreSQL;
- microSQL фирмы Hughes Technologies Pty. Ltd.;
- mySQL фирмы T.C.X DataKonsult AB.
- Интерактивные клиенты, обеспечивающие пользователю-человеку возможность общения с SQL-сервером непосредственно с помощью языка SQL.
- ИПП-клиенты, обеспечивающие интерфейс прикладного программирования (ИПП) прикладным программам, использующим средства SQL-сервера. Такой ИПП может быть средством общения прикладной программы с SQL-сервером на языке SQL или набором стандартных функций доступа к реляционной SQL БД без формирования символьных строк запросов (например, стандартный интерфейс ODBC).
- WWW-клиенты, встраиваемые в World Wide Web-сервера и обеспечивающие доступ к информационным возможностям SQL-сервера пользователям сети Internet по протоколу HTTP (протоколу передачи гипертекстовых документов).
Основы синтаксиса языка SQL
- зарезервированных ключевых слов;
- идентификаторов (имен) таблиц и столбцов таблиц;
- логических, арифметических и строковых выражений, используемых для формирования критериев поиска информации в БД и для вычисления значений ячеек результирующих таблиц;
- идентификаторов (имен) операций и функций, используемых в выражениях.
- один или несколько пробелов,
- один или несколько символов табуляции,
- один или несколько символов ?новая строка?.
- Прописными (большими) буквами (напрмер, SELECT, FROM, WHERE) набраны зарезервированные слова.
- Курсивом (например, имя_табл , сложн_условие ) набраны переменные (нетерминальные символы), подлежащие замене в реальном операторе конструкцией из терминальных символов (идентификаторов, знаков операций, имен функций и т.п.).
- В квадратные скобки (?[. ]?) заключается необязательная часть оператора, которую можно опустить при создании реального оператора (сами квадратные скобки в текст оператора не включаются).
- Вертикальная черта (?|?) означает возможность выбора (?или?) из двух или нескольких вариантов синтаксической конструкции (сама вертикальная черта в текст оператора не включается). Подчеркнутый вариант (например, в ?[ ALL | DISTINCT >?) является умолчательным.
- Последовательность символов ?, . обозначает возможность повторения произвольное количество раз (в том числе и нулевое) предшествующей запятой конструкции. Символ . включается в реальный оператор в качестве разделителя перед каждым повторением конструкции.
- от двойного минуса (?—?) до конца строки;
- от символа ?#? до конца строки;
- между последовательностями ?/*? и ?*/? (стиль комментариев языка СИ).
Учебная база данных
Метод конечных элементов (МКЭ) — универсальный метод решения краевых задач (систем дифференциальных уравнений в частных производных с краевыми условиями), к которым относится и задача анализа (моделирования) напряженно-деформированного состояния плоских механических объектов. Одним из основных этапов метода является этап разбиения ?тела? моделируемого объекта на элементарные участки, называемые конечными элементами (КЭ). Для плоских объектов чаще всего такие КЭ представляют собой треугольники. Пример покрытия объекта (типа рычага) сеткой конечных элементов представлен ниже. В дальнейшем МКЭ обеспечивает нахождение численных значений фазовых переменных , характеризующих состояние объекта (в нашем случае напряжений поля сил и деформаций), в вершинах таких треугольников, называемых узлами (nodes).
Для идентификации узлов и КЭ их помечают номерами (числами из натурального ряда 1. ). Задача ручного разбиения двумерного (а тем более трехмерного) объекта на КЭ является трудоемкой и нетривиальной, поэтому в реальных промышленных системах анализа, реализующих МКЭ, существует, как правило, несколько автоматических процедур покрытия исследуемой области сеткой КЭ. Однако сгенерированная любым способом (автоматически/вручную/комбинированно) сетка КЭ нуждается в проверке некоторым набором правил ее корректности, обеспечивающих минимальность вычислительных затрат и точность получаемых результатов.
Требуется, например, чтобы форма треугольных КЭ как можно теснее приближалась к равносторонней (это влияет на точность получаемого решения). Для уменьшения вычислительных затрат желательно иметь минимальную разность идентификаторов вершин для каждого КЭ.
В задачах исследования поведения механических объектов под воздействием внешних факторов с каждым КЭ связан набор свойств материала, покрываемого КЭ, в состав которого входят, например, плотность (density) среды, модуль Юнга (elastic module), коэффициент Пуассона (Poisson’s coefficient), прочность (strength) и др.
- произвольно направленная сила;
- произвольно направленный момент сил;
- ?заделка?, жестко фиксирующая положение узла сетки по линейным координатам и углу вращения;
- шарнир, позволяющий узлу свободно ?вращаться? относительно его фиксируемого положения по линейным координатам;
- ?каток?, дающий узлу возможность свободно перемещаться по оси x или y.
- таблица ?nodes?, содержащая информацию об узлах КЭ-сетки (идентификатор, x- и y-координаты);
- таблица ?elements?, содержащая информацию обо всех КЭ, составляющих сетку (номер КЭ, идентификаторы трех вершин, наименование материала);
- таблица ?materials?, содержащая информацию о свойствах различных конструкционных материалов (наименование, плотность, модуль Юнга, коэффициент Пуассона, прочность);
- таблица ?loadings?, содержащая информацию о граничных условиях решаемой задачи (вид условия, его ?направление?, номер узла приложения, числовое значение).
Типы данных языка SQL
- INT[( len )] — целое число длиной 4 байта, представляемое при выводе максимально len цифрами;
- SMALLINT[( len )] — целое число длиной 2 байта, представляемое при выводе максимально len цифрами;
- FLOAT[( len , dec )] — действительное число, представляемое при выводе максимально len символами с dec цифрами после десятичной точки;
- CHAR( size ) — строка символов фиксированной длины размером size символов;
- VARCHAR( size ) — строка символов переменной длины максимальным размером до size символов;
- BLOB (Binary Large OBject) — массив произвольных (двоичных) байтов (максимальный размер зависит от реализации, обычно это 65535 байт); этот тип данных может использоваться, например, для хранения изображений;
- DATE — астрономическая дата;
- TIME — астрономическое время.
- знак числа;
- десятичное число с точкой;
- символ ?е?;
- знак (?+? или ?-?) показателя степени;
- целое число, играющее роль показателя степени числа 10.
Отличие типов данных CHAR и VARCHAR заключается в том, что для хранения в таблице строк символов типа CHAR используется точно size байт (хотя содержание хранимых строк может быть значительно короче), в то время как для строк типа VARCHAR незанятые символами строк (?пустые?) байты в таблице не хранятся.
Подчеркнем, что величины len и dec (в отличие от size ) не влияют на размер хранения данных в таблице, а только форматируют вывод данных из таблицы.
Примечание. Тип данных BLOB поддерживается непосредственно не всеми СУБД, однако каждая из них предлагает его аналог (например, BINARY или IMAGE).
Рекомендация. Разрабатывая мобильное приложение (рассчитанное на работу в среде различных СУБД), старайтесь без необходимости избегать использования необязательных возможностей в описании типов данных.
Манипулирование таблицами
Создание таблицы
- Описание столбца таблицы где имя_столбца — имя столбца таблицы, а тип_данных — спецификация одного из типов данных, рассмотренных в разделе ?Типы данных языка SQL?. Необязательное ключевое слово NULL означает, что ячейкам данного столбца разрешено быть пустыми (т.е. не содержать какого-либо значения).
- Описание столбца таблицы где конструкция NOT NULL запрещает иметь в таблице пустые ячейки в данном столбце. Конструкция PRIMARY KEY указывает, что содержимое столбца будет играть роль первичного ключа для создаваемой таблицы. Конструкция DEFAULT по_умолч переопределяет имеющееся для столбцов каждого типа данных значение ?по умолчанию? (например, 0 для числовых типов), используемое при добавлении в таблицу оператором INSERT INTO строк, не содержащих значений в этом столбце.
- Описание первичного ключа Эта спецификация позволяет задать первичный ключ для таблицы в виде композиции содержимого нескольких столбцов.
- Описание вторичного ключа
Примеры
Модификация таблицы
- Добавление нового столбца где с_спецификация — описание добавляемого столбца в том виде, как оно используется для создания таблицы оператором CREATE TABLE.
- Удаление первичного ключа для таблицы
- Изменение/удаление значения ?по умолчанию? или
Удаление таблицы
Добавление строк в таблицу
- Добавление строки перечислением значений всех ее ячеек где знач — константное значение ячейки строки. Значения ячеек в списке должны соответствовать порядку перечисления спецификаций столбцов таблицы в операторе CREATE TABLE. Допустимо в качестве знач указывать ключевое слово NULL, что означает отсутствие значения для соответствующей ячейки строки.
Перед добавлением новой строки в таблицу СУБД проверяет допустимость перечисленных значений, используя описание столбцов таблицы из оператора CREATE TABLE. - Добавление строки с использованием списка имен столбцов Здесь списки имен столбцов и значений ячеек добавляемой строки должны быть согласованы, хотя нет никаких требований к их порядку. Допустимо опускать в списках информацию о некоторых ячейках строки, при этом
- ячейки, соответствующие столбцам со спецификацией NULL в операторе CREATE TABLE, будут пустыми;
- ячейки, соответствующие столбцам со спецификацией NOT NULL в операторе CREATE TABLE, заполняются значениями ?по умолчанию?.
- Добавление строк по результатам запроса к БД Такой оператор дает возможность добавить в таблицу 0, 1 или сразу несколько новых строк, полученных в результате запроса к базе данных, реализуемого оператором SELECT.
Пример
Добавление информации о новом КЭ в таблицу elements: В результате в таблице elements появится новая строка, содержащая в поле props значение ?steel?, как умолчательное значение, определенное при создании таблицы.
Пример
Включение в таблицу materials сведений о новом материале: Пример
Добавление в таблицу граничных условий loadings информации об ориентированном горизонтально ?катке? в узле 2:
Выборка данных из таблиц
- количество и смысл (семантика) столбцов определяется списком элементов в_выражение ;
- содержимое строк определяется содержимым исходных таблиц из списка FROM и критерием выборки, задаваемым сложн_условие .
- син_табл — необязательный синоним имени таблицы, используемый для сокращения длины записи выражений и условий в операторе SELECT.
- полн_имя_столбца — полное имя столбца в виде Конкретизирующий таблицу префикс в имени столбца необходим только для различения столбцов, имеющих одинаковое имя в разных таблицах из списка FROM.
- ном_столбца — номер столбца результирующей таблицы.
Описание столбцов результирующей таблицы
Пример
Пусть необходимо при выводе информации о плотности материалов из таблицы materials идентифицировать материалы, имеющие в своем составе алюминий (правильнее, имеющие в своем названии упоминание об алюминии). Эта задача может быть решена с помощью следующего оператора. Пример
Пусть необходимо для каждого конечного элемента определить наибольшее значение разности идентификаторов узлов, являющихся вершинами этого конечного элемента. Данная задача может быть решена следующим оператором 4. В общем случае в_выражение допускает использование агрегативных (называемых также групповыми) функций, принимающих в качестве своего единственного аргумента значения всех ячеек указанного столбца результирующей таблицы. Основные такие функции представлены в таблице 4. Таблица 4. Агрегативные функции
| Синтаксис | Возвращаемое значение |
| SUM( x ) | сумма значений столбца x результирующей таблицы |
| MAX( x ) | наибольшее значение из всех значений ячеек столбца x |
| MIN( x ) | наименьшее значение из всех значений ячеек столбца x |
| AVG( x ) | среднее значение для всех значений ячеек столбца x |
| COUNT( x ) | общее количество ячеек в столбце x |
Пример
Для отыскания наибольшего значения модуля Юнга для материалов, имеющихся в таблице materials, можно использовать следующий оператор Пример
Следующий оператор SELECT позволяет определить общее количество конечных элементов в КЭ-сетке из нашего примера.
Описание критерия выборки содержимого строк результирующей матрицы
- Сравнение где @ — один из операторов сравнения: ? (?больше?), ? (?меньше?), ?= (? не меньше?), ?= (?не больше?), = (?равно?), ?? (?не равно?), а полное_имя_столбца — имя столбца, конкретизированное при необходимости именем или синонимом имени таблицы, как это было описано выше.
- Сопоставление с образцом где образец имеет вид, описанный в таблице 3.
- Проверка на ?пустое? значение в ячейке стодбца
Примечание . Обратите внимание, что синтаксис сложн_условие существенно ?беднее? синтаксиса в_выражение . Дело в том, что сложн_условие используется (в том числе и на физическом уровне организации БД) на этапе выборки из исходной (возможно, очень большой) таблицы (таблиц) необходимых строк в результирующую. Для сокращения времени прямого доступа к строкам таблиц они (таблицы) снабжаются ключами и индексами. Реальный эффект от использования ключей и индексов может быть достигнут только при условии, что запросы на поиск в таблицах используют в качестве критерия поиска только значения ячеек столбцов в ?чистом? виде, а не в виде их комбинации в сложном выражении.
Конструкция же в_выражение применяется, по сути дела, к значениям столбцов уже результирующей таблицы, поэтому сложность в_выражение на эффективность выполнения запроса практически никакого влияния не оказывает.
Пример
Для определения координат местоположения узла 11 может использоваться следующий оператор: Пример
Пусть необходимо определить идентификаторы всех конечных элементов, имеющих в качестве одной из своих вершин узел 20. Эта задача может быть решена следующим оператором SELECT Пример
Для определения идентификаторов узлов КЭ-сетки, расположенных в первом квадранте системы координат можно использовать следующий оператор Пример
Следующий оператор SELECT может быть использован для определения граничных условий, имеющих в качестве одной из своих характеристик численное значение величины
Упорядочивание и группирование строк результирующей таблицы
- Упорядочение строк достигается перечислением полных имен столбцов, по которым в возрастающем ( ASC ) или убывающем (DESC) порядке сортируются строки результирующей таблицы. При этом строки упорядочиваются в первую очередь по столбцу, указанному первым в списке ORDER BY. Затем, если среди значений ячеек первого столбца есть повторяющиеся, производится упорядочение по второму столбцу и так далее.
- в первую очередь по идентификаторам узлов, являющихся первой вершиной конечного элемента;
- во вторую очередь по идентификаторам узлов, являющихся второй вершиной конечного элемента;
Оператор SELECT выводит значения агрегативных функций для самых ?малых? подгрупп.
Пример
Пусть необходимо определить количество узлов КЭ-сетки, охватываемых каждым видом граничных условий. Для этого может быть использован следующий оператор Примечание . Конструкция HAVING сложн_условие , как необязательная составная часть предложения GROUP BY, позволяет определять дополнительный (к WHERE сложн_условие ) критерий выборки строк в группы. Этот дополнительный критерий применяется в режиме постпроцессорной обработки к таблице, полученной в результате использования критерия из конструкции WHERE.