Типы данных t sql. Типы данных Transact-SQL

Типы данных SQL разделяются на три группы:
- строковые ;
- с плавающей точкой (дробные числа );
- целые числа , дата и время .

Типы данных SQL строковые

Типы данных SQL Описание
CHAR(size) Строки фиксированной длиной (могут содержать буквы, цифры и специальные символы). Фиксированный размер указан в скобках. Можно записать до 255 символов
VARCHAR(size)
TINYTEXT Может хранить не более 255 символов.
TEXT
BLOB Может хранить не более 65 535 символов.
MEDIUMTEXT
MEDIUMBLOB Может хранить не более 16 777 215 символов.
LONGTEXT
LONGBLOB Может хранить не более 4 294 967 295 символов.
ENUM(x,y,z,etc.) Позволяет вводить список допустимых значений. Можно ввести до 65535 значений вSQL Тип данных ENUM список. Если при вставке значения не будет присутствовать в списке ENUM , то мы получим пустое значение. Ввести возможные значения можно в таком формате: ENUM ("X", "Y", "Z")
SET SQL Тип данных SET напоминает ENUM за исключением того, что SET может содержать до 64 значений.

Типы данных SQL с плавающей точкой (дробные числа) и целые числа

Типы данных SQL - Дата и время

Создание таблицы в базе данных производится командой CREATE TABLE .

Синтаксис:

CREATE TABLE tbl_name [(create_definition,...)]

tbl_name - Задает имя таблицы, которая будет создана в текущей базе данных. Если никакая база данных на момен вызова команды CREATE TABLE не была принята текущей, то возникнет ошибка выполнения команды.

IF NOT EXISTS - Если указан этот параметр и производится попытка создать таблицу с дублирующим именем (т.е. таблица с таким именем в текущей БД уже есть), то таблица создана не будет и сообщение об ошибке не появиться. В противном случае таблица также создана не будет, но команда вызовет ошибку.

create_definition - Определяет внутреннюю структуру создаваемой таблицы (названия и типы полей, ключи, индексы и т.д.)

Возможные синтаксисы create_definition :

col_name type

PRIMARY KEY (index_col_name,...)

KEY (index_col_name,...)

INDEX (index_col_name,...)

UNIQUE (index_col_name,...)

FOREIGN KEY (index_col_name,...)

col_name - Задает имя столбца в создаваемой таблице.

Type - Задает тип данных для столбца col_name .

Возможные значения параметра type :

§ INT[(length)]

§ BIGINT[(length)]

§ DOUBLE[(length,decimals)]

§ FLOAT[(length,decimals)]

§ DECIMAL(length,decimals)

§ CHAR(length)

§ VARCHAR(length)

- Указывавет, может ли данных столбец содержать значение NULL или нет. Если не указано, то по умолчанию принимается NULL (т.е. может содержать NULL).

- Задает значение по умолчанию для данного столбца. При вставке новой записи в таблицу командой INSERT если значение для поля col_name явно указано не было, то устанавливается значение default_value .

- При вставке новой записи в таблицу поле с этим атрибутом автоматически получит числовое значение, на 1 больше самого большого значения для этого поля в текущий момент времени. Данная возможность обычно используется для генерирования уникальных идентификаторов строк. Столбец, для которого применяется атрибут AUTO_INCREMENT , должен иметь целочисленный тип. В таблице может быть только один столбец с атрибутом AUTO_INCREMENT . Так же этот столбец должен быть проиндексирован. Отсчет последовательности чисел для AUTO_INCREMENT начинается с 1. Это могут быть только положительные числа.

Следующий пример создает таблицу users с 3 полями, где первое поле - уникальный идентификатор записи, второе поле - имя пользователя, а третье поле - его возраст:

create table Water_Area(

id int auto_increment,

name varchar(70),

constraint pk_Water_Area primary key nonclustered(id))

create table Station(

id_Water_Area int not null,

name varchar(20) not null,

Latitude float(4) null,

Longitude float(4) null,

coordinates varchar(40) null,

coordinates_modern varchar(30) null,

comment varchar(70) null

constraint pk_Station primary key nonclustered(id))

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

Для удаления таблицы служит команда DROP TABLE.

DROP TABLE tbl_name [, tbl_name,...]

tbl_name - Имя удаляемой таблицы.

IF EXISTS – Если указан этот параметр, то при попытке удаления несущестующей таблицы ошибки не возникнет. В противном случае возникнет ошибка выполнения команды.

RESTRICT и CASCADE Не несут никакой функциональности. Оставлены для упрощения переноса программы.

Drop table Station

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

Для модификации служит команда Alter Table.

Синтаксис:

ALTER TABLE TableName1ADD | ALTER FieldName1FieldType [(nFieldWidth [, nPrecision])] ]] | FieldName]

Команда ALTER TABLE изменяет определение таблицы одним из следующих способов:

Добавляет столбец

Добавляет ограничение целостности

Переопределяет столбец (тип данных, размер, умалчиваемое значение)

Удаляет столбец

Модифицирует характеристики памяти или иные параметры

Включает, выключает или удаляет ограничение целостности или триггер.

alter table Station

unique(id_Water_Area, name)

alter table Station

add constraint fk_Station_Relation_Water_Area foreign key (id_Water_Area) references Water_Area (id)

ОПРЕДЕЛЕНИЕ СТРУКТУРЫ ДАННЫХ

Вопросы:

1. Типы данных языка SQL, определенные стандартом.. 1

2. Типы данных, используемые в SQL-сервере. 3

3. Выражения и переменные. 5

4. Управляющие конструкции SQL.. 6

5. Основные объекты структуры базы данных SQL-сервера. 7

Типы данных языка SQL, определенные стандартом

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

В языке SQL имеется шесть скалярных типов данных, определенных стандартом. Их краткое описание представлено в таблице.

Символьные данные

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

<символьный_тип>::=

{ CHARACTER [ VARYING][длина] | [длина]}

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

Битовые данные

Битовый тип данных используется для определения битовых строк, т.е. последовательности двоичных цифр (битов), каждая из которых может иметь значение либо 0, либо 1 . Данные битового типа определяются при помощи следующего формата:

<битовый_тип>::=

BIT [длина]

Точные числа

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

<фиксированный_тип>::=

{NUMERIC[точность[,масштаб]]|{DECIMAL|DEC}

[точность[, масштаб]]

| {INTEGER |INT}| SMALLINT}

Типы NUMERIC и DECIMAL предназначены для хранения чисел в десятичном формате. По умолчанию длина дробной части равна нулю, а принимаемая по умолчанию точность зависит от реализации. Тип INTEGER (INT) используется для хранения больших положительных или отрицательных целых чисел. Тип SMALLINT – для хранения небольших положительных или отрицательных целых чисел; в этом случае расход внешней памяти существенно сокращается.

Округленные числа

Тип округленных чисел применяется для описания данных, которые нельзя точно представить в компьютере, в частности действительных чисел. Округленные числа или числа с плавающей точкой представляются в научной нотации, при которой число записывается с помощью мантиссы, умноженной на определенную степень десяти (порядок), например: 10Е3, +5.2Е6, -0.2Е-4 . Для определения данныхвещественного типа используется формат:

<вещественный_тип>::=

{ FLOAT [точность]| REAL |

DOUBLE PRECISION}

Параметр точность задает количество значащих цифр мантиссы. Точность типов REAL и DOUBLE PRECISION зависит от конкретной реализации.

Дата и время

Тип данных "дата/время" используется для определения моментов времени с некоторой установленной точностью. Стандарт SQL поддерживает следующий формат:

<тип_даты/времени>::=

{DATE | TIME[точность]|

TIMESTAMP[точность]}

Тип данных DATE используется для хранения календарных дат, включающих поля YEAR (год), MONTH (месяц) и DAY (день). Тип данныхTIME – для хранения отметок времени, включающих поля HOUR (часы), MINUTE (минуты) и SECOND (секунды). Тип данных TIMESTAMP– для совместного хранения даты и времени. Параметр точность задает количество дробных десятичных знаков, определяющих точность сохранения значения в поле SECOND. Если этот параметр опускается, по умолчанию его значение для столбцов типа TIME принимается равным нулю (т.е. сохраняются целые секунды), тогда как для полей типа TIMESTAMP он принимается равным 6. Наличие ключевого слова WITH TIME ZONE определяет использование полей TIMEZONE HOUR и TIMEZONE MINUTE, тем самым задаются час и минуты сдвига зонального времени по отношению к универсальному координатному времени (Гринвичскому времени).

Данные типа INTERVAL используются для представления периодов времени.

Понятие домена

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

Стандарт SQL позволяет определить домен с помощью следующего оператора:

<определение_домена>::=

CREATE DOMAIN имя_домена

тип_данных

[ DEFAULT значение]

[ CHECK (допустимые_значения)]

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

Удаление доменов из базы данных выполняется с помощью оператора:

DROP DOMAIN имя_домена [ RESTRICT |

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

Альтернативой доменам в среде SQL Server являются пользовательские типы данных.

Типы данных, используемые в SQL-сервере

Системные типы данных

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

Приведем краткий обзор типов данных SQL Server.

Для хранения символьной информации используются символьные типы данных , к которым относятся CHAR (длина), VARCHAR (длина),NCHAR (длина), NVARCHAR (длина). Последние два предназначены для хранения символов Unicode. Максимальное значение длины ограничено 8000 знаками (4000 – для символов Unicode).

Хранение символьных данных большого объема (до 2 Гб) осуществляется при помощи текстовых типов данных TEXT и NTEXT.

К целочисленным типам данных относятся INT (INTEGER), SMALLINT, TINYINT, BIGINT. Для хранения данных целочисленного типаиспользуется, соответственно, 4 байта (диапазон от -231 до 231-1), 2 байта (диапазон от -215 до 215-1), 1 байт (диапазон от 0 до255) или 8 байт (диапазон от -263 до 263-1). Объекты и выражения целочисленного типа могут применяться в любых математических операциях.

Числа, в составе которых есть десятичная точка, называются нецелочисленными. Нецелочисленные данные разделяются на два типа – десятичные и приблизительные .

К десятичным типам данных относятся типы DECIMAL [(точность[,масштаб])] или DEC и NUMERIC [(точность[,масштаб])]. Типы данных DECIMAL и NUMERIC позволяют самостоятельно определить формат точности числа с плавающей запятой. Параметр точностьуказывает максимальное количество цифр вводимых данных этого типа (до и после десятичной точки в сумме), а параметр масштаб – максимальное количество цифр, расположенных после десятичной точки. В обычном режиме сервер позволяет вводить не более 28 цифр, используемых в типах DECIMAL и NUMERIC (от 2 до 17 байт).

К приблизительным типам данных относятся FLOAT (точность до 15 цифр, 8 байт) и REAL (точность до 7 цифр, 4 байта). Эти типы представляют данные в формате с плавающей запятой, т.е. для представления чисел используется мантисса и порядок, что обеспечивает одинаковую точность вычислений независимо от того, насколько мало или велико значение.

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

Типы данных MONEY и SMALLMONEY делают возможным хранение информации денежного типа; они обеспечивают точность значений до 4 знаков после запятой и используют 8 и 4 байта соответственно.

Тип данных BIT позволяет хранить один бит, который принимает значения 0 или 1.

В среде SQL Server реализован ряд специальных типов данных .

Тип данных TIMESTAMP применяется в качестве индикатора изменения версии строки в пределах базы данных.

Тип данных UNIQUEIDENTIFIER используется для хранения глобальных уникальных идентификационных номеров.

Тип данных SYSNAME предназначен для идентификаторов объектов.

Тип данных SQL_VARIANT позволяет хранить значения любого из поддерживаемых SQL Server типов данных за исключением TEXT, NTEXT, IMAGE и TIMESTAMP.

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

Тип данных CURSOR нужен для работы с такими объектами, как курсоры, и может быть востребован только для переменных и параметров хранимых процедур. Курсоры SQL Server представляют собой механизм обмена данными между сервером и клиентом. Курсор позволяет клиентским приложениям работать не с полным набором данных, а лишь с одной или несколькими строками.


©2015-2019 сайт
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-08

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

2.3.1 Типы char и varchar.

Являются символьными типами данных фиксированной или переменной длины.

char [ (n) ] - символьные данные фиксированной длины, не в Юникоде, с длиной n байт. Значение n должно находиться в интервале от 1 до 8000. Размер хранения данных этого типа равен n байт. Синонимом по стандарту ISO для типа char является character.

varchar [ (n | max) ] - символьные данные переменной длины, не в Юникоде; n может иметь значение от 1 до 8 000; max означает, что максимальный размер хранения равен 2^31-1 байт. Размер хранения равен фактической длине данных плюс два байта. Введенные данные могут иметь длину 0 символов. Синонимами по стандарту ISO для типа varchar являются типы char varying или character varying.

Данные char или varchar могут быть отдельным знаком или строкой максимальной длиной в 8000 символов для данных char и до 2^31 символов для данных varchar.

Типы данных varchar могут принимать две формы. Данные varchar могут быть указанной максимальной длины в знаках, например varchar(6) свидетельствует о том, что в этом типе данных может храниться максимум шесть символов или он может иметь вид varchar(max), увеличивающий максимальное число символов, которые могут храниться в этом типе данных, до 2^31.

Символьные константы должны быть заключены в одинарные (") или двойные кавычки ("). Рекомендуется заключение символьных констант в одинарные кавычки. Заключение символьных констант в двойные кавычки иногда не допускается, если параметру QUOTED IDENTIFIER присвоено значение ON.

Данный пример кода Transact-SQL присваивает символьной переменной значение:

DECLARE @MyCharVar CHAR(25)

SET @MyCharVar = "Ricardo Adocicados"

Если для выделения символьной константы, содержащей вложенную одинарную кавычку, применяются одинарные кавычки, используйте две одинарные кавычки для представления вложенной одинарной кавычки.

Например:

SET @MyCharVar = "O""Leary"

Если данные, подлежащие хранению, длиннее, чем допустимое число символов, они усекаются. Например, если столбец определен как char(10) и в нем сохраняется значение "Это действительно очень длинная символьная строка", то SQL Server усекает символьную строку до "Это действ".

Тип данных char становится типом данных с фиксированной длиной, если указано предложение NOT NULL. Если в столбец char с предложением NOT NULL вставляется значение короче, чем длина столбца, это значение заполняется вправо при помощи пробелов до размера столбца. Например, если столбец определен как char(10) и в нем должно быть сохранено значение "музыка", SQL Server сохраняет данные в виде "музыка____", где "_" обозначает пробел.

2.3.2 Типы данных nchar и nvarchar.

Это - символьные типы данных, имеющие постоянную длину (nchar), или переменную длину (nvarchar), содержащие данные в Юникоде и использующие набор символов UCS-2.

nchar [ (n) ] - символьные данные в Юникоде длиной в n символов. Аргумент n должен иметь значение от 1 до 4000. Размер хранилища вдвое больше n байт. Синонимами по стандарту ISO для типа nchar являются типы national char и national character.

nvarchar [ (n | max) ] - символьные данные в Юникоде переменной длины. Аргумент n может принимать значение от 1 до 4 000. Аргумент max указывает, что максимальный размер хранилища равен 2^31-1 (2 147 483 647) байт. Размер хранилища в байтах вдвое больше числа введенных символов + 2 байта. Введенные данные могут иметь длину в 0 символов. Синонимами по стандарту ISO для типа nvarchar являются типы national char varying и national character varying.

Типы данных SQL.

Описание

Строковые типы

Строка символов постоянной длины

CHAR (количество_символов)

Строка символов переменной длины

VARCHAR (количество_символов)

Большая строка символов переменной длины

Большой двоичный

объект переменной

Числовые точные типы

Целое число

Целое число. Количество разрядов больше или равно INTEGER

Целое число. Количество разрядов

меньше или равно INTEGER

Число с фиксированной запятой

(количество_разрядов – общее число знаков, масштаб - знаков после запятой)

{NUMERIC | DECIMAL | DEC} (кол-во разрядов, масштаб)

Числовые неточные типы

Число с плавающей запятой

Число с плавающей запятой. Количество разрядов больше или равно REAL

DOUBLE PRECISION

Число с плавающей запятой

FLOAT (кол-во разрядов)

Временные типы

Дата. Содержит год, месяц и день

Временная отметка. Содержит год, месяц, день, час, минуты и секунды

TIMESTAMP (масштаб)

Время. Содержит час, минуты и секунды (масштаб - количество

знаков в дробной части секунд). Возможно указание временной зоны

TIME (масштаб)

Временной промежуток.

Логический тип

Принимает логические значения

      1. Литералы

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

    символьных строк (пример: "Символьная строка"),

    двоичных строк (пример: X"1AFFD561"),

    чисел (примеры: 27 -863 0.173 .8582 -9572.5619 11.54Е7 .94Е194 93Е-12 -29.629Е27),

    временные (DATE "2005-12-07" TIME "HH:MI:SS" TIMESTAMP "YYYY-MM-DD HH:MI:SS"),

    логические (TRUE, FALSE, UNKNOWN).

      1. Операторы и выражения

Операторы - это конструкции языка, указывающие операции над элементами данных и возвращающие в качестве результата новое значение. Элементы данных, используемые в операторах, называются операндами или аргументами. Операторы представляются в виде специальных символов или ключевых слов. Например, оператор умножения представляется звездочкой (*), а оператор проверки на неопределенное значение - ключевым словом IS NULL.

Есть два основных вида операторов. Унарные имеют только один операнд и обычно представляются в следующем формате:

операнд оператор

Бинарные оперируют двумя операндами и представляются таким образом:

операнд оператор операнд

Кроме того, существуют специальные операторы, использующие более двух операндов. Тип оператора определяется типом используемых аргументов и типом возвращаемого результата. Имеются операторы следующих типов:

    строковые (||);

    арифметические;

    логические;

    предикаты сравнения;

    специальные предикаты;

    операторы над множествами (таблицами).