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

Общий синтаксис установки внешнего ключа на уровне столбца:

1
2
3
[ FOREIGN KEY ] REFERENCES главная_таблица (столбец_главной_таблицы)
[ ON DELETE { CASCADE | NO ACTION }]
[ ON UPDATE { CASCADE | NO ACTION }]

Возможно, в какой-то момент мы захотим изменить уже имеющуюся таблицу. Например, добавить или удалить столбцы, изменить тип столбцов, добавить или удалить ограничения. То есть потребуется изменить определение таблицы. Для изменения таблиц используется выражение ALTER TABLE.

Общий формальный синтаксис команды выглядит следующим образом:

1
2
3
4
5
6
ALTER TABLE название_таблицы [ WITH CHECK | WITH NOCHECK]
{ ADD название_столбца тип_данных_столбца [атрибуты_столбца] |
DROP COLUMN название_столбца |
ALTER COLUMN название_столбца тип_данных_столбца [ NULL | NOT NULL ] |
ADD [ CONSTRAINT ] определение_ограничения |
DROP [ CONSTRAINT ] имя_ограничения}

В предыдущих случаях сначала создавалась база данных, а затем в эту БД добавлялась таблица с помощью отдельных команд SQL. Но можно сразу совместить в одном скрипте несколько команд. В этом случае отдельные наборы команд называются пакетами (batch).

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

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

Для добавления данных применяется команда INSERT, которая имеет следующий формальный синтаксис:

1INSERT [ INTO ] имя_таблицы [(список_столбцов)] VALUES (значение1, значение2, ... значениеN)

Вначале идет выражение INSERT INTO, затем в скобках можно указать список столбцов через запятую, в которые надо добавлять данные, и в конце после слова VALUES скобках перечисляют добавляемые для столбцов значения.

Для получения данных применяется команда SELECT. В упрощенном виде она имеет следующий синтаксис:

1SELECT список_столбцов FROM имя_таблицы

Например, пусть ранее была создана таблица Products, и в нее добавлены некоторые начальные данные:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE Products
(
Id INT IDENTITY PRIMARY KEY ,
ProductName NVARCHAR(30) NOT NULL ,
Manufacturer NVARCHAR(20) NOT NULL ,
ProductCount INT DEFAULT 0,
Price MONEY NOT NULL
);

INSERT INTO Products
VALUES
( 'iPhone 6' , 'Apple' , 3, 36000),
( 'iPhone 6S' , 'Apple' , 2, 41000),
( 'iPhone 7' , 'Apple' , 5, 52000),
( 'Galaxy S8' , 'Samsung' , 2, 46000),
( 'Galaxy S8 Plus' , 'Samsung' , 1, 56000),
( 'Mi6' , 'Xiaomi' , 5, 28000),
( 'OnePlus 5' , 'OnePlus' , 6, 38000)

Оператор ORDER BY позволяет отсортировать извлекаемые значения по определенному столбцу:

1
2
3
SELECT *
FROM Products
ORDER BY ProductName

В данном случае строки сортируются по возрастанию значения столбца ProductName

Для фильтрации в команде SELECT применяется оператор WHERE. После этого оператора ставится условие, которому должна соответствовать строка:

1WHERE условие

Если условие истинно, то строка попадает в результирующую выборку. В качестве можно использовать операции сравнения. Эти операции сравнивают два выражения. В T-SQL можно применять следующие операции сравнения:

  • = сравнение на равенство (в отличие от си-подобных языков в T-SQL для сравнения на равенство используется один знак равно)

  • <> сравнение на неравенство

  • < меньше чем

  • > больше чем

  • !< не меньше чем

  • !> не больше чем

  • <= меньше чем или равно

  • >= больше чем или равно

Оператор IN

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

1WHERE выражение [ NOT ] IN (выражение)

Выражение в скобках после IN определяет набор значений. Этот набор может вычисляться динамически на основании, например, еще одного запроса, либо это могут быть константные значения.

Например, выберем товары, у которых производитель либо Samsung, либо Xiaomi, либо Huawei:

1
2
SELECT * FROM Products
WHERE Manufacturer IN ( 'Samsung', 'Xiaomi' , 'Huawei' )

Для изменения уже имеющихся строк в таблице применяется команда UPDATE. Она имеет следующий формальный синтаксис:

1
2
3
4
UPDATE имя_таблицы
SET столбец1 = значение1, столбец2 = значение2, ... столбецN = значениеN
[ FROM выборка AS псевдоним_выборки]
[ WHERE условие_обновления]

Например, увеличим у всех товаров цену на 5000:

1
2
UPDATE Products
SET Price = Price + 5000

Опрос

Какие языки программирования вы хотите видеть на сайте

Другие опросы...