Nchar и nvarchar (transact-sql)nchar and nvarchar (transact-sql)
Содержание:
- SQL References
- Date/Time типы данных
- ПримерыExamples
- Типы данных MySQL
- Временные типы
- Типы числовых данных
- Типы данных времени
- RemarksRemarks
- Типы данных SQL Server
- Нормализация БД – дробление на подтаблицы (справочники) и определение связей
- Тип PLS_INTEGER
- АргументыArguments
- String типы данных
- MySQL INT with the ZEROFILL attribute
- Introduction to MySQL INT type
- Типы текстовых данных
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 | 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 | 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 | 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 элементов списка и может хранить несколько вариантов |