Главная страница

основы sql. Основы языка sql аннотация


Скачать 88.91 Kb.
НазваниеОсновы языка sql аннотация
Дата29.03.2023
Размер88.91 Kb.
Формат файлаdocx
Имя файлаосновы sql.docx
ТипЛитература
#1024706
страница2 из 4
1   2   3   4

CREATE TABLE имя_табл (с_спецификация, ...);

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

  1. Описание столбца таблицы

имя_столбца тип_данных [NULL]

где имя_столбца -  имя столбца таблицы, а тип_данных - спецификация одного из типов данных, рассмотренных в разделе ?Типы данных языка SQL?. Необязательное ключевое слово NULL означает, что ячейкам данного столбца разрешено быть пустыми (т.е. не содержать какого-либо значения).
 

  1. Описание столбца таблицы

имя_столбца тип_данных NOT NULL [DEFAULT по_умолч] [PRIMARY KEY]

где конструкция NOT NULL запрещает иметь в таблице пустые ячейки в данном столбце. Конструкция PRIMARY KEY указывает, что содержимое столбца будет играть роль первичного ключа для создаваемой таблицы. Конструкция DEFAULT по_умолч переопределяет имеющееся для столбцов каждого типа данных значение ?по умолчанию? (например, 0 для числовых типов), используемое при добавлении в таблицу оператором INSERT INTO строк, не содержащих значений в этом столбце.
 

  1. Описание первичного ключа

PRIMARY KEY имя_ключа (имя_столбца, ...)

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

  1. Описание вторичного ключа

KEY имя_ключа (имя_столбца, ...)

Примеры

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

CREATE TABLE nodes (

    id SMALLINT NOT NULL PRIMARY KEY,    # номер узла

    x FLOAT NOT NULL,                    # x-координата

    y FLOAT NOT NULL);                   # y-координата

 

CREATE TABLE elements (

    id SMALLINT NOT NULL PRIMARY KEY,    # номер КЭ

    n1 SMALLINT NOT NULL,                # номер первой вершины

    n2 SMALLINT NOT NULL,                # номер второй вершины

    n3 SMALLINT NOT NULL,                # номер третьей вершины

    props CHAR(12) NOT NULL DEFAULT 'steel');

Столбец props таблицы elements предназначен для хранения названия материала КЭ и не может содержать ?пустых? полей, его значением ?по умолчанию? является строка символов ?steel? (сталь).

CREATE TABLE materials (

    name CHAR(12) NOT NULL PRIMARY KEY,   # название материала

    density FLOAT NOT NULL,               # плотность

    elastics FLOAT NOT NULL,              # модуль Юнга

    poisson FLOAT NOT NULL,               # к-т Пуассона

    strength FLOAT NOT NULL);             # прочность

 

CREATE TABLE loadings (

    type CHAR(1) NOT NULL,                # тип граничного условия

    direction CHAR(1),                    # направление действия

    node SMALLINT NOT NULL,               # номер узла приложения

    value FLOAT,                          # числовое значение

    KEY key_node (node) );                # вторичный ключ

В таблице граничных условий loadings поля столбцов direction и value могут быть пустыми (иметь значение NULL), поскольку не все виды нагрузок имеют направление действия и/или величину.
Номер узла node приложения граничного условия определяется как ключ поиска в таблице, т.к. типичный запрос на поиск в таблице loadings - это запрос на определение граничных условий для конкретного узла. Однако этот ключ не может быть первичным, поскольку к одному узлу допустимо приложение нескольких граничных условий (например, момент внешних сил в шарнире).
Следует отметить, что в этой таблице первичный ключ может быть сконструирован только составным из столбцов type, direction и node.
 

Модификация таблицы

Модификация существующей таблицы в БД реализуется оператором ALTER TABLE, имеющим следующий синтаксис

ALTER TABLE имя_табл м_специкация [,м_спецификация ...]

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

  1. Добавление нового столбца

ADD COLUMN с_спецификация

где с_спецификация - описание добавляемого столбца в том виде, как оно используется  для создания таблицы оператором CREATE TABLE.
 

  1. Удаление первичного ключа для таблицы

DROP PRIMARY KEY

  1. Изменение/удаление значения ?по умолчанию?

ALTER COLUMN имя_столбца SET по_умолч

или

ALTER COLUMN имя_столбца DROP DEFAULT

Пример
Предположим в нашей задаче моделирования состояния плоского механического объекта возникла необходимость учесть дополнительно тепловые эффекты. Для этого, в частности, необходимо иметь сведения о теплофизических параметрах материала объекта (теплоемкости и теплопроводности). Включение дополнительных сведений в таблицу materials требует ее расширения двумя новыми столбцами, что можно реализовать таким оператором языка SQL:

ALTER TABLE materials

    ADD COLUMN capacity FLOAT NOT NULL,        # теплоемкость

    ADD COLUMN conductivity FLOAT NOT NULL;    # теплопроводность

Удаление таблицы

Удаление одной или сразу нескольких таблиц из БД реализуется оператором DROP TABLE, имеющим следующий простой синтаксис

DROP TABLE имя_табл, ...

Подчеркнем, что оператор DROP TABLE удаляет не только все содержимое таблицы, но и само описание таблицы из БД. Если требуется удалить только содержимое таблицы, то необходимо использовать оператор DELETE FROM.

Добавление строк в таблицу

Для добавления строк в таблицу SQL базы данных используется оператор INSERT INTO. Основные его синтаксические формы описываются ниже.

  1. Добавление строки перечислением значений всех ее ячеек

INSERT INTO имя_табл VALUES (знач, ...);

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

  1. Добавление строки с использованием списка имен столбцов

INSERT INTO имя_табл (имя_столбца, ...) VALUES (знач, ...);

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

    • ячейки, соответствующие столбцам со спецификацией NULL в операторе CREATE TABLE, будут пустыми;

    • ячейки, соответствующие столбцам со спецификацией NOT NULL в операторе CREATE TABLE, заполняются значениями ?по умолчанию?.

 

  1. Добавление строк по результатам запроса к БД

INSERT INTO имя_табл [(имя_столбца, ...)] SELECT ...

Такой оператор дает возможность добавить в таблицу 0, 1 или сразу несколько новых строк, полученных в результате запроса к базе данных, реализуемого оператором SELECT.

Пример
Добавление информации о новом узле КЭ-сетки в таблицу nodes:

INSERT INTO nodes VALUES (25, 6.3, 1.8);

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

Пример
Добавление информации о новом КЭ в таблицу elements:

INSERT INTO elements

    (n1, n2, n3, id) VALUES

    (14, 25, 18, 46);

В результате в таблице elements появится новая строка, содержащая в поле props значение ?steel?, как умолчательное значение, определенное при создании таблицы.

Пример
Включение в таблицу materials сведений о новом материале:

INSERT INTO materials VALUES (

    'wood', 0.6, 2.0, 0.12, 50);

Пример
Добавление в таблицу граничных условий loadings информации об ориентированном горизонтально ?катке? в узле 2:

INSERT INTO loadings VALUES (

    'r', 'x', 2, NULL);

Выборка данных из таблиц

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

SELECT [ALL | DISTINCT] в_выражение, ...

    FROM имя_табл [син_табл], ...

    [WHERE сложн_условие]

    [GROUP BY полн_имя_столбца|ном_столбца, ...]

    [ORDER BY полн_имя_столбца|ном_столбца [ASC|DESC], ...]

    [HAVING сложн_условие];

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

  • количество и смысл (семантика) столбцов определяется списком элементов в_выражение;

  • содержимое строк определяется содержимым исходных таблиц из списка FROM и критерием выборки, задаваемым сложн_условие.

При описании синтаксиса оператора SELECT использованы следующие обозначения:

  • син_табл - необязательный синоним имени таблицы, используемый для сокращения длины записи выражений и условий в операторе SELECT.

  • полн_имя_столбца - полное имя столбца в виде

[имя_табл|син_табл.]имя_столбца

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

  • ном_столбца - номер столбца результирующей таблицы.

Описание столбцов результирующей таблицы

1. Специальным (и часто используемым) видом в_выражение является символ ?*?, имеющий смысл ?все столбцы таблиц из списка FROM?.
Пример
Вывод всего содержимого таблицы materials.

SELECT * FROM materials;

+--------------+---------+----------+---------+----------+

| name         | density | elastics | poisson | strength |

+--------------+---------+----------+---------+----------+

| steel        |    7.80 |   200.00 |    0.25 |  1000.00 |

| aluminium    |    2.70 |    65.00 |    0.34 |   600.00 |

| concrete     |    5.60 |    25.00 |    0.12 |   300.00 |

| duraluminium |    2.80 |    70.00 |    0.31 |   700.00 |

| titanium     |    4.50 |   116.00 |    0.32 |   950.00 |

| brass        |    8.50 |    93.00 |    0.37 |   300.00 |

+--------------+---------+----------+---------+----------+

2. Простым (и также часто используемым) случаем в_выражение является полное имя столбца одной из таблиц списка FROM.
Пример
Пусть необходимо определить идентификаторы всех узлов КЭ-сетки, к которым приложено какое-либо граничное условие, при этом необходимо знать тип приложенного условия. Эта задача может быть решена с помощью следующего оператора:

SELECT node, type FROM loadings;

+------+------+

| node | type |

+------+------+

|    1 | r    |

|    2 | r    |

|    3 | r    |

|   14 | h    |

|   27 | f    |

|   27 | f    |

+------+------+

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

SELECT DISTINCT node, type FROM loadings;

+------+------+

| node | type |

+------+------+

|    1 | r    |

|    2 | r    |

|    3 | r    |

|   14 | h    |

|   27 | f    |

+------+------+

3. В общем случае в_выражение может представлять собой сложное скобочное выражение над содержимым столбцов таблицы, использующее арифметические, строковые, логические операции и функции. Наиболее часто используемые функции описаны ниже в таблицах 123.
Пример
Используемая нами таблица свойств материалов materials содержит в своих столбцах density и elastics значащие разряды чисел, выражающих, соответственно, плотность и модуль Юнга каждого материала. Для получения реальных значений этих свойств в системе единиц измерения СИ (кг/м3 и Па) необходимо домножить их на масштабные коэффициенты, что реализуется следующим оператором

SELECT name, density*1000, elastics*1e+9 FROM materials;

+--------------+--------------+-----------------+

| name         | density*1000 | elastics*1e+9   |

+--------------+--------------+-----------------+

| steel        |      7800.00 | 200000000000.00 |

| aluminium    |      2700.00 |  65000000000.00 |

| concrete     |      5600.00 |  25000000000.00 |

| duraluminium |      2800.00 |  70000000000.00 |

| titanium     |      4500.00 | 116000000000.00 |

| brass        |      8500.00 |  93000000000.00 |

+--------------+--------------+-----------------+

Таблица 1. Арифметические функции

 

Синтаксис 

Возвращаемое значение

ABS(x)

абсолютное значение x

SQRT(x)

квадратный корень от x

MAX(xy, ...)

значение наибольшего элемента из списка x, y, ...

MIN(x,y, ...)

значение наименьшего элемента из списка x, y, ...

 Примечание. x, y - числа или выражения, имеющие числовой результат.
 Таблица 2. Строковые функции
 

Синтаксис

Возвращаемое значение

LEFT(s,n)

первые символов строки s

RIGHT(s.n)

последние n символов строки s

SUBSTRING(s, m, n)

строка, получаемая копированием n символов из строки s, начиная с m-ого символа строки 

LCASE(s)

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

UCASE(s)

строка, полученная из s преобразованием всех букв в прописные

CONCAT(s1, s2, ...)

строка, полученная конкатенацией (слиянием) строк s1, s2, ...

LENGTH(s)

длина строки s

Примечание. s, s1,s2 - строки или выражения, имеющие результат в виде строки. n, m - числа или выражения, имеющие числовой результат.
 Таблица 3. Операторы и функции, возвращающие логическое значение (1 - ?истина?, 0 - ?ложь?)
 

Синтаксис

Возвращаемое значение

y 
?? y 
x ? y 
x ? y 
x ?= y 
x ?= y

1 (?истина?) или 0 (?ложь?) в зависимости от результата операции сравнения (соответственно, ?равно?, ?не равно?, ?больше?, ?меньше?, ?не больше?, ?не меньше?)

NOT l

1, если l=
0, если l=1

l1 AND l2

результат логической операции ?И? над l1 и l2

l1 OR l2

результат логической операции ?ИЛИ? над l1 и l2

BETWEEN (x, y z)

результат выполнения логического выражения (x?=y AND x?=z)

ISNULL (v)

1, если v имеет значение ?пусто? (NULL) 
0, в противном случае

IFNULL (v1, v2)

v1, если v1 не ?пусто? 
v2, в противном случае

s LIKE образец

1, при удачном сопоставлении строки s с образец  
0, в противном случае

s NOT LIKE образец

0, при удачном сопоставлении строки s с образец  
1, в противном случае

Примечание. x, y, z - числа или выражения, имеющие числовой результат. l, l1, l2 - логические константы (1 или 0) или логические выражения. s - строка или выражение, имеющее результат в виде строки. v, v1, v2 - переменные или выражения.
образец - константа в виде строки символов, возможно, содержащая метасимволы ?%? и ?_?. В образец метасимвол ?_? сопоставим с любым одиночным символом строки s, метасимвол ?%? - с любой цепочкой символов любой ( в том числе нулевой) длины.

Пример
Пусть необходимо при выводе информации о плотности материалов из таблицы materials идентифицировать материалы, имеющие в своем составе алюминий (правильнее, имеющие в своем названии упоминание об алюминии). Эта задача может быть решена с помощью следующего оператора.
1   2   3   4


написать администратору сайта