Nchar и nvarchar (transact-sql)nchar and nvarchar (transact-sql)

SQL References

SQL Keywords
ADD
ADD CONSTRAINT
ALTER
ALTER COLUMN
ALTER TABLE
ALL
AND
ANY
AS
ASC
BACKUP DATABASE
BETWEEN
CASE
CHECK
COLUMN
CONSTRAINT
CREATE
CREATE DATABASE
CREATE INDEX
CREATE OR REPLACE VIEW
CREATE TABLE
CREATE PROCEDURE
CREATE UNIQUE INDEX
CREATE VIEW
DATABASE
DEFAULT
DELETE
DESC
DISTINCT
DROP
DROP COLUMN
DROP CONSTRAINT
DROP DATABASE
DROP DEFAULT
DROP INDEX
DROP TABLE
DROP VIEW
EXEC
EXISTS
FOREIGN KEY
FROM
FULL OUTER JOIN
GROUP BY
HAVING
IN
INDEX
INNER JOIN
INSERT INTO
INSERT INTO SELECT
IS NULL
IS NOT NULL
JOIN
LEFT JOIN
LIKE
LIMIT
NOT
NOT NULL
OR
ORDER BY
OUTER JOIN
PRIMARY KEY
PROCEDURE
RIGHT JOIN
ROWNUM
SELECT
SELECT DISTINCT
SELECT INTO
SELECT TOP
SET
TABLE
TOP
TRUNCATE TABLE
UNION
UNION ALL
UNIQUE
UPDATE
VALUES
VIEW
WHERE

MySQL Functions
String Functions
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER

Numeric Functions
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE

Date Functions
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK

Advanced Functions
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION

SQL Server Functions
String Functions
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER

Numeric Functions
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN

Date Functions
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR

Advanced Functions
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME

MS Access Functions
String Functions
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase

Numeric Functions
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val

Date Functions
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year

Other Functions
CurrentUser
Environ
IsDate
IsNull
IsNumeric

SQL Quick Ref

Date/Time типы данных

Ниже приведены типы данных дата / время в MySQL:

Синтаксис Максимальный размер Пояснение
DATE Значения варьируются от ‘1000-01-01’ до ‘9999-12-31’. Отображается как ‘YYYY-MM-DD’.
DATETIME Значения варьируются от ‘1000-01-01 00:00:00’ до ‘9999-12-31 23:59:59’. Отображается как ‘YYYY-MM-DD HH:MM:SS’.
TIMESTAMP(m) Значения варьируются от ‘1970-01-01 00:00:01’ UTC до ‘2038-01-19 03:14:07’ UTC. Отображается как ‘YYYY-MM-DD HH:MM:SS’.
TIME Значения варьируются от ‘-838: 59: 59’ до ‘838: 59: 59’. Отображается как ‘HH:MM:SS.
YEAR Значение года как 2 цифры или 4 цифры. Значение по умолчанию — 4 цифры.

ПримерыExamples

Б.B. Создание определяемого пользователем типаCreating a user-defined type

В следующем примере создается тип , который ссылается на класс в сборке .The following example creates a type that references class in the assembly . Перед тем как приступить к созданию этого типа, сборка регистрируется в локальной базе данных.Before creating the type, assembly is registered in the local database. Замените двоичную часть инструкции CREATE ASSEMBLY на допустимое описание.Replace the binary portion of the CREATE ASSEMBLY statement with a valid description.

Область применения: SQL Server 2008SQL Server 2008 и более поздних версий.Applies to: SQL Server 2008SQL Server 2008 and later.

Типы данных MySQL

В MySQL есть три основных типа данных: текст, число и дата.

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

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

Примечание: Значения сортируются в порядке их ввода.

Вы вводите возможные значения в этом формате: Enum (‘ X ‘, ‘ Y ‘, ‘ Z ‘)

SET Аналогично Enum, за исключением того, что набор может содержать до 64 элементов списка и может хранить более одного выбора

Типы данных чисел:

Тип данных Описание
TINYINT(size) -128 до 127 нормальный. 0 до 255 неподписанный *. Максимальное количество цифр может быть указано в скобках
SMALLINT(size) -32768 до 32767 нормальный. 0 до 65535 неподписанный *. Максимальное количество цифр может быть указано в скобках
MEDIUMINT(size) -8388608 до 8388607 нормальный. 0 до 16777215 неподписанный *. Максимальное количество цифр может быть указано в скобках
INT(size) -2147483648 до 2147483647 нормальный. 0 до 4294967295 неподписанный *. Максимальное количество цифр может быть указано в скобках
BIGINT(size) -9223372036854775808 до 9223372036854775807 в норме. 0 для 18446744073709551615 неподписанных *. Максимальное количество цифр может быть указано в скобках
FLOAT(size,d) Небольшое число с плавающей запятой. Максимальное количество цифр может быть указано в параметре size. Максимальное число цифр справа от десятичной запятой указано в параметре d
DOUBLE(size,d) Большое число с плавающей запятой. Максимальное количество цифр может быть указано в параметре size. Максимальное число цифр справа от десятичной запятой указано в параметре d
DECIMAL(size,d) Значение типа Double, хранящееся в виде строки и допускающее фиксированную десятичную точку. Максимальное количество цифр может быть указано в параметре size. Максимальное число цифр справа от десятичной запятой указано в параметре d

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

Типы данных дат:

Тип данных Описание
DATE() Свидание. Формат: гггг-мм-DD

Примечание: Поддерживаемый диапазон от ‘ 1000-01-01 ‘ до ‘ 9999-12-31 ‘

DATETIME() * комбинация даты и времени. Формат: гггг-мм-DD HH: MI: SS

Примечание: Поддерживаемый диапазон от ‘ 1000-01-01 00:00:00 ‘ до ‘ 9999-12-31 23:59:59 ‘

TIMESTAMP() * Временная метка. Значения timestamp хранятся в виде количества секунд со времени Unix (‘ 1970-01-01 00:00:00 ‘ UTC). Формат: гггг-мм-DD HH: MI: SS

Примечание: Поддерживаемый диапазон от ‘ 1970-01-01 00:00:01 ‘ UTC до ‘ 2038-01-09 03:14:07 ‘ UTC

TIME() Время. Формат: HH: MI: SS

Примечание: Поддерживаемый диапазон от ‘-838:59:59 ‘ до ‘ 838:59:59 ‘

YEAR() Год в формате с двумя или четырьмя цифрами.

Примечание: Допустимые значения в формате четырех цифр: 1901 до 2155. Допустимые значения в формате с двумя цифрами: 70 до 69, представляющие годы с 1970 по 2069

* даже если DateTime и timestamp возвращаются в том же формате, они работают очень по-разному. В запросе INSERT или Update временная метка автоматически устанавливает текущую дату и время. TIMESTAMP также принимает различные форматы, такие как ииииммддххмисс, ииммддххмисс, ГГГГММДД или YYMMDD.

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

  • DATE — предназначен для хранения даты. Формат: год «YYYY», разделитель, месяц «ММ», разделитель, день «DD». В качестве разделителя может выступать не только дефис «-», но и любой символ отличный от цифры.
  • DATETIME — предназначен для хранения и даты и времени суток. Позволяет хранить значения в большом диапазоне, с 1001 до 9999 года, с точностью в одну секунду. Дата и время упаковываются в целое число в формате YYYYMMDDHHMMSS независимо от часового пояса. Под значение отводится восемь байт. По умолчанию MySQL показывает данные типа DATETIME в точно определенном, допускающем сортировку формате: 2008-01-16 22:37:08. Этот способ представления даты и времени согласуется со стандартом ANSI.
  • TIME — предназначен для хранения времени суток. Значение вводится и хранится в привычном формате: hh:mm:ss, где hh — часы, mm — минуты, ss — секунды. В качестве разделителя может выступать любой символ отличный от цифры.
  • TIMESTAMP — предназначен для хранения даты и времени суток в виде количества секунд, прошедших с полуночи 1 января 1970 года по гринвичскому времени (начало эпохи UNIX). С точки зрения занимаемого места на диске он гораздо эффективнее, чем DATETIME. Для хранения типа TIMESTAMP используется только четыре байта, поэтому он позволяет представить значительно меньший диапазон дат, чем тип DATETIME: с 1970 года до некоторой даты в 2038 году. В MySQL имеют ся функции FROM_UNIXTIME() и UNIX_TIMESTAMP(), служащие для преобразования временной метки UNIX в дату и наоборот. Столбцы типа TIMESTAMP по умолчанию создаются в режиме NOT NULL, если вы не указали значение для столбца, MySQL вставляет в первый столбец типа TIMESTAMP текущее время. Тип TIMESTAMP имеет также специальные свойства, которых нет у типа DATETIME.
  • YEAR(N) — предназначен для хранения года. Число N задает формат года: YEAR (2) — 70, а YEAR (4) — 1970. По умолчанию, N = 4.
Типы данных Формат
DATETIME ‘0000-00-00 00:00:00’
DATE ‘0000-00-00’
TIMESTAMP 00000000000000 (длина зависит от количества выводимых символов)
TIME ‘00:00:00’
YEAR 0000

Типы числовых данных

Тип Описание
TINYINT(size) От -128 до 127. От 0 до 255 UNSIGNED *. Максимальное количество цифр может быть указано в круглых скобках
SMALLINT(size) -32768 до 32767 нормально. 0 до 65535 UNSIGNED*. Максимальное количество цифр может быть указано в скобках
MEDIUMINT(size) -8388608 до 8388607 normal. 0 до 16777215 UNSIGNED*. Максимальное количество цифр может быть указано в скобках
INT(size) -2147483648 до 2147483647 normal. 0 до 4294967295 UNSIGNED*. Максимальное количество цифр может быть указано в скобках
BIGINT(size) -9223372036854775808 до 9223372036854775807 normal. 0 до 18446744073709551615 UNSIGNED *. Максимальное количество цифр может быть указано в скобках
FLOAT(size,d) Небольшое число с плавающей запятой. Максимальное количество цифр может быть указано в параметре размера. Максимальное количество цифр справа от десятичной точки указано в параметре d
DOUBLE(size,d) Большое число с плавающей запятой. Максимальное количество цифр может быть указано в параметре размера. Максимальное количество цифр справа от десятичной точки указано в параметре d
DECIMAL(size,d) DOUBLE хранится как строка, позволяющая фиксированную десятичную точку. Максимальное количество цифр может быть указано в параметре размера. Максимальное количество цифр справа от десятичной точки указано в параметре d

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

Типы данных времени

В языке Transact-SQL поддерживаются следующие временные типы данных:

  • DATETIME;

  • SMALLDATETIME;

  • DATE;

  • TIME;

  • DATETIME2;

  • DATETIMEOFFSET.

Типы данных DATETIME и SMALLDATETIME применяются для хранения даты и времени в виде целочисленных значений длиной в 4 и 2 байта соответственно. Значения типа DATETIME и SMALLDATETIME сохраняются внутренне как два отдельных числовых значения. Составляющая даты значений типа DATETIME хранится в диапазоне от 01/01/1753 до 31/12/9999, а соответствующая составляющая значений типа SMALLDATETIME — в диапазоне от 01/01/1900 до 06/06/2079. Составляющая времени хранится во втором 4-байтовом (2-байтовом для значений типа SMALLDATETIME) поле в виде числа трехсотых долей секунды (для DATETIME) или числа минут (для SMALLDATETIME), истекших после полуночи.

Если нужно сохранить только составляющую даты или времени, использование значений типа DATETIME или SMALLDATETIME несколько неудобно. По этой причине в SQL Server были введены типы данных DATE и TIME, в которых хранятся только составляющие даты и времени значений типа DATETIME, соответственно. Значения типа DATE занимают 3 байта, представляя диапазон дат от 01/01/0001 до 31/12/9999. Значения типа TIME занимают 3-5 байт и представляют время с точностью до 100 нс.

Тип данных DATETIME2 используется для представления значений дат и времени с высокой точностью. В зависимости от требований, значения этого типа можно определять разной длины, и занимают они от 6 до 8 байтов. Составляющая времени представляет время с точностью до 100 нс. Этот тип данных не поддерживает переход на летнее время.

Все рассмотренные на данный момент временные типы данных не поддерживают часовые пояса. Тип данных DATETIMEOFFSET имеет составляющую для хранения смещения часового пояса. По этой причине значения этого типа занимают от 6 до 8 байтов. Все другие свойства этого типа данных аналогичны соответствующим свойствам типа данных DATETIME2.

Значения дат в Transact-SQL по умолчанию определены в виде строки формата ‘ммм дд гггг’ (например, ‘Jan 10 1993’), заключенной в одинарные или двойные кавычки. (Но относительный порядок составляющих месяца, дня и года можно изменять с помощью инструкции SET DATEFORMAT. Кроме этого, система поддерживает числовые значения для составляющей месяца и разделители / и -.) Подобным образом, значение времени указывается в 24-часовом формате в виде ‘чч:мм’ (например, ’22:24′).

Язык Transact-SQL поддерживает различные форматы ввода значений типа DATETIME. Как уже упоминалось, каждая составляющая определяется отдельно, поэтому значения дат и времени можно указать в любом порядке или отдельно. Если одна из составляющих не указывается, система использует для него значение по умолчанию. (Значение по умолчанию для времени — 12:00 AM (до полудня).)

RemarksRemarks

И класс сборки, ссылка на который содержится в assembly_name, и его методы должны удовлетворять требованиям, предъявляемым при реализации определяемых пользователем типов в SQL ServerSQL Server.The class of the assembly that is referenced in assembly_name, together with its methods, should satisfy all the requirements for implementing a user-defined type in SQL ServerSQL Server. Дополнительные сведения об этих требованиях см. в статье Определяемые пользователем типы CLR.For more information about these requirements, see CLR User-Defined Types.

К числу дополнительных соображений относятся следующие:Additional considerations include the following:

  • данный класс может иметь перегруженные методы, но эти методы могут вызываться только из управляемого кода, а не с помощью языка Transact-SQLTransact-SQL;The class can have overloaded methods, but these methods can be called only from within managed code, not from Transact-SQLTransact-SQL.

  • все статические члены должны быть объявлены как const или readonly, если аргумент assembly_name имеет значение SAFE или EXTERNAL_ACCESS.Any static members must be declared as const or readonly if assembly_name is SAFE or EXTERNAL_ACCESS.

Внутри базы данных может существовать только один определяемый пользователем тип, зарегистрированный на основе любого указанного типа, который был загружен в SQL ServerSQL Server из CLR.Within a database, there can be only one user-defined type registered against any specified type that has been uploaded in SQL ServerSQL Server from the CLR. Если определяемый пользователем тип создается на основе типа CLR, для которого в этой базе данных уже существует пользовательский тип, инструкция CREATE TYPE вызывает сбой.If a user-defined type is created on a CLR type for which a user-defined type already exists in the database, CREATE TYPE fails with an error. Это ограничение необходимо для того, чтобы избежать неоднозначности при разрешении типа SQL Type, если тип CLR может соответствовать более чем одному определяемому пользователем типу.This restriction is required to avoid ambiguity during SQL Type resolution if a CLR type can be mapped to more than one user-defined type.

Если какой-либо метод-мутатор в данном типе не возвращает значения void, инструкция CREATE TYPE не выполняется.If any mutator method in the type does not return void, the CREATE TYPE statement does not execute.

Чтобы внести изменения в определяемый пользователем тип, нужно удалить этот тип с помощью инструкции DROP TYPE и затем снова создать его.To modify a user-defined type, you must drop the type by using a DROP TYPE statement and then re-create it.

В отличие от определяемых пользователем типов, созданных с помощью хранимой процедуры sp_addtype, разрешение REFERENCES на типы, созданные с помощью инструкции CREATE TYPE, не предоставляется роли базы данных public автоматически.Unlike user-defined types that are created by using sp_addtype, the public database role is not automatically granted REFERENCES permission on types that are created by using CREATE TYPE. Это разрешение должно предоставляться отдельно.This permission must be granted separately.

В определяемых пользователем табличных типах определяемые пользователем структурированные типы, используемые в column_name <data type>, представляют собой часть области схемы базы данных, в которой определен тип таблицы.In user-defined table types, structured user-defined types that are used in column_name <data type> are part of the database schema scope in which the table type is defined. Чтобы получить доступ к определяемым пользователем структурированным типам в другой области базы данных, используйте двухкомпонентные имена.To access structured user-defined types in a different scope within the database, use two-part names.

В определяемых пользователем табличных типах первичный ключ на вычисляемых столбцах должен иметь атрибуты PERSISTED и NOT NULL.In user-defined table types, the primary key on computed columns must be PERSISTED and NOT NULL.

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

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

Тип данных Описание Максимальный размер Хранения
char(n) Фиксированная ширина символьной строки 8,000 Символов Определенная ширина
varchar(n) Переменная ширина символьная строка 8,000 Символов 2 байта + количество символов
varchar(max) Переменная ширина символьная строка 1,073,741,824 Символов 2 байта + количество символов
text Переменная ширина символьная строка 2GB of text data 4 байта + количество символов
nchar Фиксированная ширина строки Юникода 4,000 Символов Определенная ширина x 2
nvarchar Переменная ширина Юникод строка 4,000 Символов  
nvarchar(max) Переменная ширина Юникод строка 536,870,912 Символов  
ntext Переменная ширина Юникод строка 2GB of text data  
binary(n) Фиксированная ширина двоичной строки 8,000 bytes  
varbinary Переменная ширина двоичная строка 8,000 bytes  
varbinary(max) Переменная ширина двоичная строка 2GB  
image Переменная ширина двоичная строка 2GB  

Типы данных чисел:

Тип данных Описание Хранения
bit Целое число, которое может быть 0, 1 или null  
tinyint Позволяет целые числа от 0 до 255 1 byte
smallint Позволяет целые числа между -32 768 и 32 767 2 bytes
int Позволяет целые числа между -2 147 483 648 и 2 147 483 647 4 bytes
bigint Позволяет целые числа между -9223372036854775808 и 9 223 372 036 854 775 807 8 bytes
decimal(p,s) Fixed precision and scale numbers.

Разрешает числа от-10 ^ 38 + 1 до 10 ^ 38 – 1.

Параметр p указывает максимальное общее количество цифр, которые могут быть сохранены (как слева, так и справа от десятичной запятой). p должно быть значением от 1 до 38. Значение по умолчанию — 18.

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

5-17 bytes
numeric(p,s) Фиксированные значения точности и масштаба.

Разрешает числа от-10 ^ 38 + 1 до 10 ^ 38 – 1.

Параметр p указывает максимальное общее количество цифр, которые могут быть сохранены (как слева, так и справа от десятичной запятой). p должно быть значением от 1 до 38. Значение по умолчанию — 18.

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

5-17 bytes
smallmoney Денежные данные от-214 748,3648 до 214 748,3647 4 bytes
money Денежные данные от-922 337 203 685 477,5808 до 922 337 203 685 477,5807 8 bytes
float(n) Плавающая точность данных чисел от-1.79 e + 308 до 1.79 e + 308.

Параметр n указывает, должно ли поле содержать 4 или 8 байт. float (24) содержит 4-байтное поле и float (53) содержит 8-байтное поле. Значение по умолчанию n — 53.

4 or 8 bytes
real Плавающие данные о точности чисел от-38 e + 4 bytes

Типы данных дат:

Тип данных Описание Хранения
datetime С 1 января 1753 по 31 декабря 9999 с точностью 3,33 миллисекунд 8 bytes
datetime2 С 1 января 0001 по 31 декабря 9999 с точностью 100. 6-8 bytes
smalldatetime С 1 января 1900 по 6 июня 2079 с точностью до 1 минуты 4 bytes
date Хранить только дату. С 1 января 0001 по 31 декабря 9999 3 bytes
time Хранить время только для точности 100-ти секунд 3-5 bytes
datetimeoffset Так же, как datetime2 с добавлением смещения часового пояса 8-10 bytes
timestamp Хранит уникальный номер, который обновляется каждый раз при создании или изменении строки. Значение timestamp основывается на внутренних часах и не соответствует реальному времени. Каждая таблица может иметь только одну переменную timestamp  

Другие типы данных:

Тип данных Описание
sql_variant Хранит до 8 000 байт данных различных типов данных, за исключением текста, ntext и отметки времени
uniqueidentifier Хранит глобальный уникальный идентификатор (GUID)
xml Хранит XML-форматированные данные. Максимум 2 ГБ
cursor Хранит ссылку на курсор, используемый для операций с базой данных
table Хранит результирующий набор для последующей обработки

Нормализация БД – дробление на подтаблицы (справочники) и определение связей

ID Name
1 Бухгалтер
2 Директор
3 Программист
4 Старший программист
ID Name
1 Администрация
2 Бухгалтерия
3 ИТ
ID Name Birthday Email Position Department PositionID DepartmentID
1000 Иванов И.И. NULL NULL Директор Администрация 2 1
1001 Петров П.П. NULL NULL Программист ИТ 3 3
1002 Сидоров С.С. NULL NULL Бухгалтер Бухгалтерия 1 2
1003 Андреев А.А. NULL NULL Старший программист ИТ 4 3
ID Name Birthday Email PositionID DepartmentID
1000 Иванов И.И. NULL NULL 2 1
1001 Петров П.П. NULL NULL 3 3
1002 Сидоров С.С. NULL NULL 1 2
1003 Андреев А.А. NULL NULL 4 3
ID Name PositionName DepartmentName
1000 Иванов И.И. Директор Администрация
1001 Петров П.П. Программист ИТ
1002 Сидоров С.С. Бухгалтер Бухгалтерия
1003 Андреев А.А. Старший программист ИТ
ID Name Birthday Email PositionID DepartmentID ManagerID
1000 Иванов И.И. 1955-02-19 NULL 2 1 NULL
1002 Сидоров С.С. 1976-06-07 NULL 1 2 1000

Тип PLS_INTEGER

Тип данных позволяет хранить целые числа в диапазоне от −2 147 483 648 до 2 147 483 647. Значения хранятся в «родном» целочисленном формате аппаратной платформы. Несколько примеров объявлений переменных типа : 

DECLARE
loop_counter PLS_INTEGER;
days_in_standard_year CONSTANT PLS_INTEGER := 365;
emp_vacation_days PLS_INTEGER DEFAULT 14;

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

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

DECLARE
int1 PLS_INTEGER;
int2 PLS_INTEGER;
int3 PLS_INTEGER;
nbr NUMBER;
BEGIN
int1 := 100;
int2 := 49;
int3 := int2/int1;
nbr := int2/int1;
DBMS_OUTPUT.PUT_LINE('integer 100/49 =' || TO_CHAR(int3));
DBMS_OUTPUT.PUT_LINE('number 100/49 =' || TO_CHAR(nbr));
int2 := 50;
int3 := int2/int1;
nbr := int2/int1;
DBMS_OUTPUT.PUT_LINE('integer 100/50 =' || TO_CHAR(int3));
DBMS_OUTPUT.PUT_LINE('number 100/50 =' || TO_CHAR(nbr));
END;

Программа выводит следующий результат:

integer 100/49 =0
number 100/49 =.49
integer 100/50 =1
number 100/50 =.5 

Если итоговое значение целочисленной операции выходит за пределы диапазона допустимых значений (от −2 147 483 648 до 2 147 483 647), произойдет ошибка целочисленного переполнения.

АргументыArguments

expressionexpressionВыражение типа sql_variant.Is an expression of type sql_variant.

propertypropertyСодержит имя свойства sql_variant, для которого будут предоставлены сведения.Contains the name of the sql_variant property for which information is to be provided. Аргумент property имеет тип varchar( 128 ) и может принимать одно из перечисленных ниже значений.property is varchar( 128 ), and can be any one of the following values:

ЗначениеValue ОписаниеDescription Возвращаемый базовый тип sql_variantBase type of sql_variant returned
BaseTypeBaseType Тип данных SQL ServerSQL Server, например:SQL ServerSQL Server data type, such as:bigintbigintbinarybinarybitbitcharchardatedatedatetimedatetimedatetime2datetime2datetimeoffsetdatetimeoffsetdecimaldecimalfloatfloatintintmoneymoneyncharncharnumericnumericnvarcharnvarcharrealrealsmalldatetimesmalldatetimesmallintsmallintsmallmoneysmallmoneytimetimetinyinttinyintuniqueidentifieruniqueidentifiervarbinaryvarbinaryvarcharvarchar sysnamesysnameNULL = Введенные значения недопустимы.NULL = Input is not valid.
ТочностьPrecision Количество знаков числового базового типа данных:Number of digits of the numeric base data type:date = 10date = 10datetime = 23datetime = 23datetime2 = 27datetime2 = 27datetime2 (s) = 19 when s = 0, else s + 20datetime2 (s) = 19 when s = 0, else s + 20datetimeoffset = 34datetimeoffset = 34datetimeoffset (s) = 26 when s = 0, else s + 27datetimeoffset (s) = 26 when s = 0, else s + 27smalldatetime = 16smalldatetime = 16time = 16time = 16time (s) = 8 when s = 0, else s + 9time (s) = 8 when s = 0, else s + 9float = 53float = 53real = 24real = 24decimal и numeric = 18decimal and numeric = 18decimal (p,s) и numeric (p,s) = pdecimal (p,s) and numeric (p,s) = pmoney = 19money = 19smallmoney = 10smallmoney = 10bigint = 19bigint = 19int = 10int = 10smallint = 5smallint = 5tinyint = 3tinyint = 3bit = 1bit = 1Все остальные типы = 0All other types = 0 intintNULL = Введенные значения недопустимы.NULL = Input is not valid.
МасштабированиеScale Количество знаков справа от десятичного разделителя числового базового типа данных:Number of digits to the right of the decimal point of the numeric base data type:decimal и numeric = 0decimal and numeric = 0decimal (p,s) и numeric (p,s) = sdecimal (p,s) and numeric (p,s) = smoney и smallmoney = 4money and smallmoney = 4datetime = 3datetime = 3datetime2 = 7datetime2 = 7datetime2 (s) = s (0 — 7)datetime2 (s) = s (0 — 7)datetimeoffset = 7datetimeoffset = 7datetimeoffset (s) = s (0 — 7)datetimeoffset (s) = s (0 — 7)time = 7time = 7time (s) = s (0 — 7)time (s) = s (0 — 7)все остальные типы = 0all other types = 0 intintNULL = Введенные значения недопустимы.NULL = Input is not valid.
TotalBytesTotalBytes Число байтов, необходимое для хранения данных и метаданных значения.Number of bytes required to hold both the metadata and data of the value. Эта информация может быть полезной при проверке максимального размера данных в столбце sql_variant.This information would be useful in checking the maximum side of data in a sql_variant column. Если значение превышает 900, создание индекса завершается сбоем.If the value is larger than 900, index creation fails. intintNULL = Введенные значения недопустимы.NULL = Input is not valid.
Параметры сортировкиCollation Представляет параметры сортировки конкретного значения sql_variant.Represents the collation of the particular sql_variant value. sysnamesysnameNULL = Введенные значения недопустимы.NULL = Input is not valid.
MaxLengthMaxLength Максимальная длина типа данных, в байтах.Maximum data type length, in bytes. Например, MaxLength nvarchar( 50 ) равно 100, а MaxLength int равно 4.For example, MaxLength of nvarchar( 50 ) is 100, MaxLength of int is 4. intintNULL = Введенные значения недопустимы.NULL = Input is not valid.

String типы данных

Ниже перечислены типы данных String в MySQL:

Синтаксис Максимальный размер Пояснение
CHAR(size) Размер 255 символов Где size — количество сохраняемых символов. Строки с фиксированной длиной. Пространство справа дополнено на равное количество символов.
VARCHAR(size) Размер 255 символов Где size — количество сохраняемых символов. Строка переменной длины.
TINYTEXT(size) Размер 255 символов Где size — количество сохраняемых символов.
TEXT(size) Размер 65535 символов Где size — количество сохраняемых символов.
MEDIUMTEXT(size) Размер 16777215 символов. Где size — количество сохраняемых символов.
LONGTEXT(size) Размер 4Гб или 4294967295 символов Где size — количество сохраняемых символов.
BINARY(size) Размер 255 символов Где size — количество двоичных символов для хранения. Строки с фиксированной длиной. Пространство справа дополнено на равное количество символов. (Представлено в MySQL 4.1.2)
VARBINARY(size) Размер 255 символов. Где size — количество сохраняемых символов. Строка переменной длины. (Представлено в MySQL 4.1.2)

MySQL INT with the ZEROFILL attribute

In addition to the display width attribute, MySQL provides a non-standard attribute. In this case, MySQL replaces spaces with zero. Consider the following example.

First, create a table named :

Second, insert a new row into the table.

Third, query data from the table.

The v2 column has a display with 3 including . Its value is 6 therefore, you see as the leading zeros.

The v3 column has the display width 5 with , while its value is 9, therefore MySQL pads at the beginning of the number in the output.

Note that if you use attribute for an integer column, MySQL will automatically add an  attribute to the column.

In this tutorial, you have learned how to use the MySQL data type for designing database tables.

  • Was this tutorial helpful?

Introduction to MySQL INT type

In MySQL, stands for the integer that is a whole number. An integer can be written without a fractional component e.g., 1, 100, 4, -10, and it cannot be 1.2, 5/3, etc. An integer can be zero, positive, and negative.

MySQL supports all standard SQL integer types or and . In addition, MySQL provides  , and as extensions to the SQL standard.

MySQL data type can be signed and unsigned. The following table illustrates the characteristics of each integer type including storage in bytes, minimum value, and maximum value.

Type Storage Minimum Value Maximum Value
(Bytes) (Signed/Unsigned) (Signed/Unsigned)
TINYINT 1 -128 127
255
SMALLINT 2 -32768 32767
65535
MEDIUMINT 3 -8388608 8388607
16777215
INT 4 -2147483648 2147483647
4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
18446744073709551615

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

Тип Описание
CHAR(size) Удерживает строку фиксированной длины (может содержать буквы, цифры и специальные символы). Фиксированный размер указан в скобках. Может хранить до 255 символов
VARCHAR(size) Удерживает строку переменной длины (может содержать буквы, цифры и специальные символы). Максимальный размер указан в скобках. Может хранить до 255 символов. Если вы ставите большее значение, чем 255, оно будет преобразовано в тип TEXT
TINYTEXT Удерживает строку длиной не более 255 символов
TEXT Удерживает строку с максимальной длиной 65535 символов
BLOB Для BLOB (Binary Large OBjects). Сохраняет до 65535 байт данных
MEDIUMTEXT Удерживает строку с максимальной длиной 16,777,215 символов
MEDIUMBLOB Для BLOB (Binary Large OBjects). Удерживает до 16 777 215 байт данных
LONGTEXT Удерживает строку с максимальной длиной 4 294 967 295 символов
LONGBLOB Для BLOB (Binary Large OBjects). Сохраняет до 4 294 967 295 байтов данных
ENUM(a,b,c,etc.)

Позвольте ввести список возможных значений. Вы можете перечислить до 65535 значений в списке ENUM. Если вставлено значение, которое отсутствует в списке, будет добавлено пустое значение.
Примечание. Значения сортируются в том порядке, в котором вы их вводите.

Вы вводите возможные значения в этом формате: ENUM (‘a’, ‘b’, ‘c’)

SET Подобно ENUM, за исключением того, что SET может содержать до 64 элементов списка и может хранить несколько вариантов
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *