serial mysql что это

SERIAL data type allows you to automatically generate unique integer numbers (IDs, identity, auto-increment, sequence) for a column.

Quick Example:

Overview

PostgreSQL SERIAL data type:

Start Value Always 1 ALTER SEQUENCE RESTART WITH to change
Increment Always 1 ALTER SEQUENCE INCREMENT BY to change
How to Generate IDs Omit the SERIAL column in INSERT, or specify DEFAULT keyword
Explicit ID Insert
Multiple SERIAL per Table
Constraints NOT NULL Added automatically
Primary or unique key Not required and not added automatically
Retrieve Last ID LASTVAL() Returns the last ID inserted in the current session
CURRVAL(‘seq_name’) Returns the current ID for the specified sequence
INSERT … RETURNING serialcol returns ID immediately after INSERT statement
Gaps If a value is explicitly inserted, this has no effect on sequence generator
Restart (Reset) ALTER SEQUENCE tablename_serialcol_seq RESTART WITH new_current_id;
Alternatives BIGSERIAL 64-bit ID numbers
Using a sequence and DEFAULT NEXTVAL(‘seq_name’)
OID system column
Synonym SERIAL4

Version: PostgreSQL 9.1

PostgreSQL SERIAL Data Type Details

When you define a SERIAL column, PostgreSQL automatically changes column to NOT NULL, creates a sequence tablename_serialcol_seq and DEFAULT NEXTVAL to select ID values from the sequence only if they are not supplied in INSERT statement:

If you need a SERIAL column to be unique, you have to specify UNIQUE or PRIMARY KEY explicitly.

To generate a ID value, you can omit the SERIAL column in INSERT statement, or specify DEFAULT keyword:

Note that you cannot insert NULL, but can insert 0. In MySQL these 2 values force ID generation, but this is not applied to PostgerSQL:

id name
1 Tottenham Hotspur
2 Aston Villa
3 Manchester City
0 Reserved

PostgreSQL SERIAL data type does not provide options to set the start value and increment, but you can modify the sequence object assigned to SERIAL using ALTER SEQUENCE statement:

id name
3 Crystal Palace
6 Leeds United

There are several options to obtain the inserted ID value. You can use LASTVAL() function that returns the latest value for any sequence:

You can also obtain the current value from the sequence object directly using CURRVAL function. The sequence name is tablename_serialcol_seq:

Or you can use the RETURNING clause of INSERT statement to return ID:

How to Access Generated ID in Application

If you need to obtain ID in another PostgreSQL PL/pgSQL function, you can use INTO clause:

If you insert an ID value explicitly, it has no effect on the sequence generator, and its next value remains unchanged and will be used when you insert subsequent rows:

Note that the sequence generator may have conflicts with IDs that were already inserted using explicit values. You can get an error if there is an UNIQUE constraint, or duplicate IDs can be inserted:

id name
1 Tottenham Hotspur
2 Aston Villa
3 Manchester City
0 Reserved
4 Manchester United
5 Chelsea
6 Arsenal
8 Everton
7 Liverpool
9 Newcastle United

If you remove rows from a table, you can insert removed IDs explicitly, it will not have any effect on the sequence generator.

You can change the current value of a sequence generator using ALTER SEQUENCE statement:

PostgreSQL SERIAL in Other Databases

Serial (identity or auto-increment) columns in other databases:

Oracle:

Auto-increment or Identity Can be emulated using a sequence and trigger
IDENTITY(start, increment) Increment can be specified

MySQL:

AUTO_INCREMENT Column Option
Start Value
Increment Always 1
Generate ID NULL or 0 force ID generation
Last ID LAST_INSERT_ID() function
Restrictions UNIQUE or PRIMARY KEY constraint is required

PostgreSQL SERIAL Conversion to Other Databases

Converting PostgreSQL SERIAL columns:

Oracle:

Oracle does not support SERIAL (auto-increment, identity) columns, but this functionality can be implemented using a sequence and a trigger:

Note that a trigger is required as Oracle does not allow using NEXTVAL in DEFAULT clause for a column.

MySQL:

MySQL supports AUTO_INCREMENT column option that allows you to automatically generate IDs.

There is the table option AUTO_INCREMENT that allows you to define the start value, but you cannot define the increment, it is always 1:

Note that MySQL requires an unique or primary key constraint on AUTO_INCREMENT columns.

Источник

What is the difference between SERIAL and AUTO_INCREMENT in mysql

I have come across two ways to increment the ids in mysql automatically.

One is SERIAL and other is AUTOINCREMENT.

So Suppose i want to create a table myfriends. I can create it in two ways like:

3 Answers 3

SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.

So, be careful when creating a reference to a SERIAL PK, since that reference column has to be of this exact type.

AUTO_INCREMENT is an attribute of a specific column of any numeric type (int or float), both signed and unsigned. When rows are inserted it automatically assigns sequential numbers, so you don’t have to (e.g. by using LAST_INSERT_ID() ). See http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.

SERIAL DEFAULT VALUE in the definition of an integer column is an alias for NOT NULL AUTO_INCREMENT UNIQUE.

SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.

SERIAL DEFAULT VALUE in the definition of an integer column is an alias for NOT NULL AUTO_INCREMENT UNIQUE.

If no value is specified for the AUTO_INCREMENT column, MySQL assigned sequence numbers automatically. You can also explicitly assign NULL or 0 to the column to generate sequence numbers. MySQL doesn’t automatically decrease the autoincrement value when you delete a row. Reasons are:

Источник

Serial mysql что это

Answers were Sorted based on User’s Feedback

SERIAL is an alias for BIGINT UNSIGNED NOT NULL
AUTO_INCREMENT UNIQUE.
Reference Link :
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

Check for yourself in the official docs at:
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

This states:
SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.

SERIAL DEFAULT VALUE in the definition of an integer column is an alias for NOT NULL AUTO_INCREMENT UNIQUE.

How to create trigger in mysql workbench?

How to create a trigger in mysql?

Which mysql function is used to concatenate string?

What is the maximum length of a table name, database name, and fieldname in MySQL?

if we want to load data from a text file into a mysql table, but the columns in table are 1st: code(int) and 2nd: city(varchar), but in text file the format is 1st cityname and then code separeted by delimeters. how to load?

How do you know the version of your mysql server?

How do I set user privileges in mysql?

What does tee command do in MySQL?

What is the function of myisamchk?

What does tinyint mean?

What are MySQL transactions?

Business Management Interview Questions:: Banking Finance, Business Administration, Funding, Hotel Management, Human Resources, IT Management, Industrial Management, Infrastructure Management, Marketing Sales, Operations Management, Personnel Management, Supply Chain Management.

Engineering Interview Questions :: Aeronautical, Automobile, Bio, Chemical, Civil, Electrical, Electronics Communications, Industrial, Instrumentation, Marine, Mechanical, Mechatronics, Metallurgy, Power Plant.

Visa Interview Questions :: USA Visa, UK Visa, Australia Visa, Canada Visa, Germany Visa, New Zealand Visa.

Источник

MySQL serial vs auto-increment for id column

Disclaimer: I have only novice knowledge of and experience with databases.

I did find this for PostgreSQL, indicating SERIAL is old and outdated, but I couldn’t find an equivalent for MySQL and I’m unsure if the same applies to it.

1 Answer 1

I’m sure MySQL’s SERIAL type was implemented to make it easy for folks who were accustomed to PostgreSQL to have one set of CREATE TABLE statements that would work on both brands of database, and do more or less the same thing.

In an old version of the MySQL manual, it was stated that SERIAL is a compatibility feature (without naming the brand it was intended to be compatible with). The language about compatibility was removed (see https://bugs.mysql.com/bug.php?id=7978).

Now that even PostgreSQL has changed its recommended practice and they use IDENTITY columns instead of SERIAL, the MySQL feature is really unnecessary.

There is no advantage to using SERIAL in MySQL. On the contrary, if you do use it in a CREATE TABLE statement, you will see that the syntax isn’t saved. It is just an alias for the BIGINT UNSIGNED AUTO_INCREMENT UNIQUE, as documented.

I find that it’s actually wasteful to do this, because I typically declare the auto-increment column as a PRIMARY KEY anyway, and this makes the UNIQUE redundant. So you end up with two unique indexes for no reason.

Источник

зМБЧБ 12. фЙРЩ ДБООЩИ

пРЙУБОЙС ФЙРБ ДБООЩИ ЙУРПМШЪХАФ ЬФЙ УПЗМБЫЕОЙС:

12.1. лТБФЛЙК ПВЪПТ ФЙРПЧ ДБООЩИ

12.1.1. лТБФЛЙК ПВЪПТ ЮЙУМПЧЩИ ФЙРПЧ

дМС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ П УЧПКУФЧБИ Й ФТЕВПЧБОЙСИ ИТБОЕОЙС ЮЙУМПЧЩИ ФЙРПЧ УН. ТБЪДЕМЩ 12.2 Й 12.8.

M ХЛБЪЩЧБЕФ ОБ НБЛУЙНБМШОХА ЫЙТЙОХ ПФПВТБЦЕОЙС ДМС ФЙРПЧ ГЕМПЗП ЮЙУМБ. нБЛУЙНБМШОБС ЫЙТЙОБ 255. ыЙТЙОБ ОЕ УЧСЪБОБ У ДЙБРБЪПОПН ЪОБЮЕОЙК, ЛПФПТЩЕ ФЙР НПЦЕФ УПДЕТЦБФШ, ЛБЛ ПРЙУБОП Ч ТБЪДЕМЕ 12.2. дМС ЮЙУЕМ У РМБЧБАЭЕК ЪБРСФПК Й ФЙРПЧ ЖЙЛУЙТПЧБООПК ФПЮЛЙ M ПВЭЕЕ ЛПМЙЮЕУФЧП ГЙЖТ, ЛПФПТЩЕ НПЗХФ ВЩФШ УПИТБОЕОЩ.

еУМЙ чЩ ПРТЕДЕМСЕФЕ ZEROFILL ДМС ЮЙУМПЧПЗП УФПМВГБ, MySQL БЧФПНБФЙЮЕУЛЙ ДПВБЧМСЕФ UNSIGNED УФПМВГХ.

оЕЛПФПТЩЕ ЧЕЭЙ чЩ ДПМЦОЩ ЪОБФШ ПФОПУЙФЕМШОП УФПМВГПЧ BIGINT :

MySQL НПЦЕФ ПВТБВПФБФШ BIGINT Ч УМЕДХАЭЙИ УМХЮБСИ:

M ПВЭЕЕ ЛПМЙЮЕУФЧП ГЙЖТ Й D ЮЙУМП ГЙЖТ РПУМЕ ДЕУСФЙЮОПК ЪБРСФПК. еУМЙ M Й D ПРХЭЕОЩ, ЪОБЮЕОЙС УПИТБОЕОЩ Л РТЕДЕМБН, ТБЪТЕЫЕООЩН БРРБТБФОЩНЙ УТЕДУФЧБНЙ. юЙУМП ПДЙОБТОПК ФПЮОПУФЙ У РМБЧБАЭЕК ЪБРСФПК ЙНЕЕФ РТЙВМЙЪЙФЕМШОП 7 ДЕУСФЙЮОЩИ ТБЪТСДПЧ.

M ПВЭЕЕ ЛПМЙЮЕУФЧП ГЙЖТ Й D ЮЙУМП ГЙЖТ РПУМЕ ДЕУСФЙЮОПК ЪБРСФПК. еУМЙ M Й D ПРХЭЕОЩ, ЪОБЮЕОЙС УПИТБОЕОЩ Л РТЕДЕМБН, ТБЪТЕЫЕООЩН БРРБТБФОЩНЙ УТЕДУФЧБНЙ. юЙУМП ДЧПКОПК ФПЮОПУФЙ У РМБЧБАЭЕК ЪБРСФПК ЙНЕЕФ РТЙВМЙЪЙФЕМШОП 15 ДЕУСФЙЮОЩИ ТБЪТСДПЧ.

уЙОФБЛУЙУ FLOAT( p ) РТЕДХУНПФТЕО ДМС УПЧНЕУФЙНПУФЙ У ODBC.

12.1.2. лТБФЛЙК ПВЪПТ ФЙРПЧ ДБФЩ Й ЧТЕНЕОЙ

дМС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ П УЧПКУФЧБИ Й ФТЕВПЧБОЙСИ ИТБОЕОЙС ЧТЕНЕООЩИ ФЙРПЧ УН. ТБЪДЕМЩ 12.3 Й 12.8. дМС ПРЙУБОЙК ЖХОЛГЙК, ЛПФПТЩЕ ЧПЪДЕКУФЧХАФ ОБ ЧТЕНЕООЩЕ ЪОБЮЕОЙС УН. ТБЪДЕМ 13.7.

дМС ПРЙУБОЙС ДЙБРБЪПОБ DATE Й DATETIME «РПДДЕТЦЙЧБЕФУС» ПЪОБЮБЕФ, ЮФП, ИПФС ВПМЕЕ ТБООЙЕ ЪОБЮЕОЙС НПЗМЙ ВЩ ТБВПФБФШ, ОЕФ ОЙЛБЛПК ЗБТБОФЙЙ.

мАВПК УФПМВЕГ TIMESTAMP ЙМЙ DATETIME Ч ФБВМЙГЕ НПЦЕФ ЙНЕФШ БЧФПНБФЙЮЕУЛХА ЙОЙГЙБМЙЪБГЙА Й УЧПКУФЧБ ПВОПЧМЕОЙС.

дПРПМОЙФЕМШОПЕ ЪОБЮЕОЙЕ fsp Ч ДЙБРБЪПОЕ ПФ 0 ДП 6 НПЦЕФ ВЩФШ ДБОП, ЮФПВЩ ПРТЕДЕМЙФШ ДТПВОХА ФПЮОПУФШ УЕЛХОД. ъОБЮЕОЙЕ 0 РПЛБЪЩЧБЕФ, ЮФП ОЕФ ОЙЛБЛПК ДТПВОПК ЮБУФЙ. еУМЙ ПРХЭЕОП, ФПЮОПУФШ ЪОБЮЕОЙС РП ХНПМЮБОЙА 0.

Читайте также:  Что значит сабы в ютубе

дПРПМОЙФЕМШОПЕ ЪОБЮЕОЙЕ fsp Ч ДЙБРБЪПОЕ ПФ 0 ДП 6 НПЦЕФ ВЩФШ ДБОП, ЮФПВЩ ПРТЕДЕМЙФШ ДТПВОХА ФПЮОПУФШ УЕЛХОД. ъОБЮЕОЙЕ 0 РПЛБЪЩЧБЕФ, ЮФП ОЕФ ОЙЛБЛПК ДТПВОПК ЮБУФЙ. еУМЙ ПРХЭЕОП, ФПЮОПУФШ ЪОБЮЕОЙС РП ХНПМЮБОЙА 0.

лБЛ УЕТЧЕТ ПВТБВБФЩЧБЕФ ПРТЕДЕМЕОЙС TIMESTAMP ЪБЧЙУЙФ ПФ ЪОБЮЕОЙС РЕТЕНЕООПК explicit_defaults_for_timestamp (УН. ТБЪДЕМ 6.1.5). рП ХНПМЮБОЙА explicit_defaults_for_timestamp ПФЛМАЮЕОБ, Й УЕТЧЕТ ПВТБВБФЩЧБЕФ TIMESTAMP УМЕДХАЭЙН ПВТБЪПН:

дМС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ П ЖПТНБФЕ Й ЙОФЕТРТЕФБГЙЙ ЧИПДОЩИ ЪОБЮЕОЙК YEAR УН. ТБЪДЕМ 12.3.3.

уПЧПЛХРОЩЕ ЖХОЛГЙЙ SUM() Й AVG() ОЕ ТБВПФБАФ У ЧТЕНЕООЩНЙ ЪОБЮЕОЙСНЙ. пОЙ РТЕПВТБЪПЧЩЧБАФ ЪОБЮЕОЙС Ч ЮЙУМБ, ФЕТСС ЧУЕ РПУМЕ РЕТЧПЗП ОЕЮЙУМПЧПЗП УЙНЧПМБ. юФПВЩ ПВПКФЙ ЬФХ РТПВМЕНХ, РТЕПВТБЪХКФЕ Ч ЮЙУМПЧЩЕ НПДХМЙ, ЧЩРПМОЙФЕ УПЧПЛХРОХА ТБВПФХ Й РТЕПВТБЪХКФЕ ОБЪБД ЧП ЧТЕНЕООПЕ ЪОБЮЕОЙЕ. рТЙНЕТЩ:

12.1.3. лТБФЛЙК ПВЪПТ УФТПЛ

рТЙЪОБЛ CHARACTER SET ПРТЕДЕМСЕФ ОБВПТ УЙНЧПМПЧ, Б COLLATE ПРТЕДЕМСЕФ УПРПУФБЧМЕОЙЕ ДМС ОБВПТБ УЙНЧПМПЧ. оБРТЙНЕТ:

[NATIONAL] CHAR[( M )] [CHARACTER SET charset_name ] [COLLATE collation_name ]

уФТПЛБ ЖЙЛУЙТПЧБООПК ДМЙОЩ, ЛПФПТБС ЧУЕЗДБ ДПРПМОЕОБ УРТБЧБ РТПВЕМБНЙ ДП ХЛБЪБООПК ДМЙОЩ, ЛПЗДБ УПИТБОЕОБ. M РТЕДУФБЧМСЕФ ДМЙОХ УФПМВГБ Ч УЙНЧПМБИ. дЙБРБЪПО M ПФ 0 ДП 255. еУМЙ M ПРХЭЕО, ДМЙОБ 1.

лПОЕЮОЩЕ РТПВЕМЩ ХДБМЕОЩ, ЛПЗДБ ЪОБЮЕОЙС CHAR РПМХЮЕОЩ, ЕУМЙ ТЕЦЙН SQL PAD_CHAR_TO_FULL_LENGTH ЧЩЛМАЮЕО.

MySQL ИТБОЙФ ЪОБЮЕОЙС VARCHAR ЛБЛ РТЕЖЙЛУ Ч 1 ЙМЙ 2 ВБКФБ РМАУ ДБООЩЕ. рТЕЖЙЛУ ДМЙОЩ ХЛБЪЩЧБЕФ ОБ ЮЙУМП ВБКФПЧ Ч ЪОБЮЕОЙЙ. уФПМВЕГ VARCHAR ЙУРПМШЪХЕФ ПДЙО ВБКФ ДМЙОЩ, ЕУМЙ ЪОБЮЕОЙС ФТЕВХАФ ОЕ ВПМШЫЕ 255 ВБКФПЧ, ДЧБ ВБКФБ ДМЙОЩ, ЕУМЙ ЪОБЮЕОЙС НПЗХФ РПФТЕВПЧБФШ ВПМШЫЕ, ЮЕН 255 ВБКФПЧ.

х УФПМВГБ SET НПЦЕФ ВЩФШ НБЛУЙНХН 64 ПФМЙЮОЩИ ХЮБУФОЙЛБ.

12.2. юЙУМПЧЩЕ ФЙРЩ

дМС ЙОЖПТНБГЙЙ П ФПН, ЛБЛ MySQL ПВТБВБФЩЧБЕФ ОБЪОБЮЕОЙЕ ЪОБЮЕОЙК ЙЪ ДЙБРБЪПОБ УФПМВГБН Й РЕТЕРПМОЕОЙЕ ЧП ЧТЕНС ПГЕОЛЙ ЧЩТБЦЕОЙС УН. ТБЪДЕМ 12.2.6.

дМС ЙОЖПТНБГЙЙ П ЮЙУМПЧЩИ ФТЕВПЧБОЙСИ ИТБОЕОЙС ФЙРБ УН. ТБЪДЕМ 12.8.

фЙР ДБООЩИ, ЙУРПМШЪХЕНЩК ДМС ТЕЪХМШФБФБ ЧЩЮЙУМЕОЙС ОБ ЮЙУМПЧЩИ ПРЕТБОДБИ, ЪБЧЙУЙФ ПФ ФЙРПЧ ПРЕТБОДПЧ Й ПРЕТБГЙК, ЧЩРПМОЕООЩИ ОБ ОЙИ. дМС РПМХЮЕОЙС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ УН. ТБЪДЕМ 13.6.1.

12.2.1. фЙРЩ ГЕМПЗП ЮЙУМБ (ФПЮОПЕ ЪОБЮЕОЙЕ) INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT

фЙР нЕУФП нЙОЙНХН нБЛУЙНХН
(ВБКФПЧ) (Signed/Unsigned) (Signed/Unsigned)
TINYINT 1 -128 127
0 255
SMALLINT 2 -32768 32767
0 65535
MEDIUMINT 3 -8388608 8388607
0 16777215
INT 4 -2147483648 2147483647
0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
0 18446744073709551615

12.2.2. фЙРЩ У ЖЙЛУЙТПЧБООПК ФПЮЛПК (ФПЮОПЕ ЪОБЮЕОЙЕ) DECIMAL, NUMERIC

MySQL ИТБОЙФ ЪОБЮЕОЙС DECIMAL Ч ДЧПЙЮОПН ЖПТНБФЕ. уН. ТБЪДЕМ 13.20.

ч ПРТЕДЕМЕОЙЙ УФПМВГБ DECIMAL НПЗХФ ВЩФШ ПРТЕДЕМЕОЩ ФПЮОПУФШ Й НБУЫФБВ (ПВЩЮОП ФБЛ Й ВЩЧБЕФ), ОБРТЙНЕТ:

ч ЬФПН РТЙНЕТЕ 5 ФПЮОПУФШ Й 2 НБУЫФБВ. фПЮОПУФШ РТЕДУФБЧМСЕФ ЮЙУМП УХЭЕУФЧЕООЩИ ГЙЖТ, ЛПФПТЩЕ УПИТБОЕОЩ ДМС ЪОБЮЕОЙК, Б НБУЫФБВ РТЕДУФБЧМСЕФ ЮЙУМП ГЙЖТ, ЛПФПТЩЕ НПЗХФ ВЩФШ УПИТБОЕОЩ РПУМЕ ДЕУСФЙЮОПК ЪБРСФПК.

еУМЙ НБУЫФБВ 0, ЪОБЮЕОЙС DECIMAL ОЕ УПДЕТЦБФ ДЕУСФЙЮОПК ЪБРСФПК ЙМЙ ДТПВОПК ЮБУФЙ.

нБЛУЙНБМШОПЕ ЛПМЙЮЕУФЧП ГЙЖТ ДМС DECIMAL 65, ОП ЖБЛФЙЮЕУЛЙК ДЙБРБЪПО ДМС ДБООПЗП УФПМВГБ DECIMAL НПЦЕФ ВЩФШ ПЗТБОЙЮЕО ФПЮОПУФША ЙМЙ НБУЫФБВПН ДМС ДБООПЗП УФПМВГБ. лПЗДБ ФБЛПНХ УФПМВГХ ОБЪОБЮБАФ ЪОБЮЕОЙЕ У ВПМШЫЙН ЛПМЙЮЕУФЧПН ГЙЖТ РПУМЕ ДЕУСФЙЮОПК ЪБРСФПК, ЮЕН ТБЪТЕЫЕОП ХЛБЪБООЩН НБУЫФБВПН, ЪОБЮЕОЙЕ РТЕПВТБЪПЧБОП Ч ФПФ НБУЫФБВ. фПЮОПЕ РПЧЕДЕОЙЕ ТБВПФБЕФ Ч ЪБЧЙУЙНПУФЙ ПФ УЙУФЕНЩ, ОП ЧППВЭЕ ЬЖЖЕЛФПН ВХДЕФ ХУЕЮЕОЙЕ Л ДПРХУФЙНПНХ ЮЙУМХ ГЙЖТ.

12.2.3. фЙРЩ У РМБЧБАЭЕК ЪБРСФПК (РТЙВМЙЪЙФЕМШОБС ФПЮОПУФШ) FLOAT, DOUBLE

фЙРЩ FLOAT Й DOUBLE РТЕДУФБЧМСАФ РТЙВМЙЪЙФЕМШОЩЕ ЪОБЮЕОЙС ЮЙУМПЧЩИ ДБООЩИ. MySQL ЙУРПМШЪХЕФ ЮЕФЩТЕ ВБКФБ ДМС ЪОБЮЕОЙК ПДЙОБТОПК ФПЮОПУФЙ Й ЧПУЕНШ ВБКФПЧ ДМС ЪОБЮЕОЙК ДЧПКОПК ФПЮОПУФЙ.

дМС FLOAT УФБОДБТФ SQL ТБЪТЕЫБЕФ ДПРПМОЙФЕМШОХА УРЕГЙЖЙЛБГЙА ФПЮОПУФЙ (ОП ОЕ ДЙБРБЪПО ЬЛУРПОЕОФЩ) Ч ВЙФБИ РПУМЕ ЛМАЮЕЧПЗП УМПЧБ FLOAT Ч ЛТХЗМЩИ УЛПВЛБИ. MySQL ФБЛЦЕ РПДДЕТЦЙЧБЕФ ЬФХ ДПРПМОЙФЕМШОХА УРЕГЙЖЙЛБГЙА ФПЮОПУФЙ, ОП ЪОБЮЕОЙЕ ФПЮОПУФЙ ЙУРПМШЪХЕФУС ФПМШЛП, ЮФПВЩ ПРТЕДЕМЙФШ ТБЪНЕТ ИТБОЕОЙС. тЕЪХМШФБФЩ ФПЮОПУФША ПФ 0 ДП 23 ИТБОСФУС Ч 4-ВБКФПЧПН УФПМВГЕ FLOAT ПДЙОБТОПК ФПЮОПУФЙ. тЕЪХМШФБФЩ ФПЮОПУФША ПФ 24 ДП 53 ИТБОСФУС Ч 8-ВБКФПЧПН УФПМВГЕ DOUBLE ДЧПКОПК ФПЮОПУФЙ.

рПУЛПМШЛХ ЪОБЮЕОЙС У РМБЧБАЭЕК ЪБРСФПК РТЙВМЙЪЙФЕМШОЩ Й ОЕ УПИТБОЕОЩ ЛБЛ ФПЮОЩЕ ЪОБЮЕОЙС, РПРЩФЛЙ ПВТБВПФБФШ ЙИ ЛБЛ ФПЮОЩЕ Ч УТБЧОЕОЙСИ НПЗХФ РТЙЧЕУФЙ Л РТПВМЕНБН. пОЙ ФБЛЦЕ РПДЧЕТЗБАФУС ЪБЧЙУЙНПУФСН ПФ ЧЩРПМОЕОЙС ЙМЙ РМБФЖПТНЩ. дМС РПМХЮЕОЙС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ УН. ТБЪДЕМ B.5.4.8.

дМС НБЛУЙНБМШОПК НПВЙМШОПУФЙ ИТБОЕОЙС ЛПД, ФТЕВХАЭЙК РТЙВМЙЪЙФЕМШОЩИ ЪОБЮЕОЙК ЮЙУМПЧЩИ ДБООЩИ, ДПМЦЕО ЙУРПМШЪПЧБФШ FLOAT ЙМЙ DOUBLE PRECISION ВЕЪ УРЕГЙЖЙЛБГЙЙ ФПЮОПУФЙ ЙМЙ ЮЙУМБ ГЙЖТ.

12.2.4. фЙР ВЙФПЧПЗП ЪОБЮЕОЙС BIT

12.2.5. юЙУМПЧЩЕ РТЙЪОБЛЙ ФЙРБ

MySQL РПДДЕТЦЙЧБЕФ ТБУЫЙТЕОЙЕ ДМС ФПЗП, ЮФПВЩ РТПЙЪЧПМШОП ПРТЕДЕМЙФШ ЫЙТЙОХ ФЙРПЧ ДБООЩИ ГЕМПЗП ЮЙУМБ Ч ЛТХЗМЩИ УЛПВЛБИ РПУМЕ ПУОПЧОПЗП ЛМАЮЕЧПЗП УМПЧБ ДМС ФЙРБ. оБРТЙНЕТ, INT(4) ПРТЕДЕМСЕФ INT У ЫЙТЙОПК ПФПВТБЦЕОЙС ЮЕФЩТЕ ГЙЖТЩ. ьФБ ДПРПМОЙФЕМШОБС ЫЙТЙОБ НПЦЕФ ЙУРПМШЪПЧБФШУС РТЙМПЦЕОЙСНЙ, ЮФПВЩ ЧЩЧЕУФЙ ОБ ЬЛТБО ГЕМПЮЙУМЕООЩЕ ЪОБЮЕОЙС, ЙНЕАЭЙЕ ЫЙТЙОХ НЕОШЫЕ ЫЙТЙОЩ, ПРТЕДЕМЕООПК ДМС УФПМВГБ, ДПРПМОСС ЙИ УМЕЧБ РТПВЕМБНЙ. фБЛЙН ПВТБЪПН, ЬФБ ЫЙТЙОБ РТЙУХФУФЧХЕФ Ч НЕФБДБООЩИ, ЧПЪЧТБЭЕООЩИ У ОБВПТБНЙ ТЕЪХМШФБФПЧ. йУРПМШЪХЕФУС МЙ ЬФП ЙМЙ ОЕФ, ЪБЧЙУЙФ ПФ РТЙМПЦЕОЙС.

ч MySQL 8.0 ПФТЙГБФЕМШОЩЕ ЧЕМЙЮЙОЩ ДМС УФПМВГПЧ AUTO_INCREMENT ОЕ РПДДЕТЦБОЩ.

12.2.6. пВТБВПФЛБ РЕТЕРПМОЕОЙС Й ЧЩИПДБ ЙЪ ДЙБРБЪПОБ

лПЗДБ MySQL УПИТБОСЕФ ЪОБЮЕОЙЕ Ч ЮЙУМПЧПН УФПМВГЕ, ЛПФПТПЕ ЧОЕ ДПРХУФЙНПЗП ДЙБРБЪПОБ ФЙРБ ДБООЩИ УФПМВГБ, ТЕЪХМШФБФ ЪБЧЙУЙФ ПФ ТЕЦЙНБ SQL Ч ЬФП ЧТЕНС:

лПЗДБ УФПМВГХ У РМБЧБАЭЕК ЪБРСФПК ЙМЙ УФПМВГХ ЖЙЛУЙТПЧБООПК ФПЮЛЙ ОБЪОБЮБАФ ЪОБЮЕОЙЕ, ЛПФПТПЕ РТЕЧЩЫБЕФ ДЙБРБЪПО, РПДТБЪХНЕЧБЕНЩК ХЛБЪБООЩНЙ (ЙМЙ ЪОБЮЕОЙЕН РП ХНПМЮБОЙА) ФПЮОПУФША Й НБУЫФБВПН, MySQL УПИТБОЙФ ЪОБЮЕОЙЕ, РТЕДУФБЧМСАЭЕЕ УППФЧЕФУФЧХАЭХА ЛПОЕЮОХА ФПЮЛХ ФПЗП ДЙБРБЪПОБ.

рЕТЕРПМОЕОЙЕ ЧП ЧТЕНС ЮЙУМПЧПК ПГЕОЛЙ ЧЩТБЦЕОЙС РТЙЧПДЙФ Л ПЫЙВЛЕ. оБРТЙНЕТ, УБНПЕ ВПМШЫПЕ ЪОБЮЕОЙЕ BIGINT УП ЪОБЛПН 9223372036854775807, ФБЛЙН ПВТБЪПН, УМЕДХАЭЕЕ ЧЩТБЦЕОЙЕ РТПЙЪЧПДЙФ ПЫЙВЛХ:

юФПВЩ РПЪЧПМЙФШ ТБВПФЕ РТЕХУРЕФШ Ч ЬФПН УМХЮБЕ, РТЕПВТБЪХКФЕ ЪОБЮЕОЙЕ Ч ВЕЪЪОБЛПЧПЕ;

рТПЙУИПДЙФ МЙ РЕТЕРПМОЕОЙЕ, ЪБЧЙУЙФ ПФ ДЙБРБЪПОБ ПРЕТБОДПЧ, ФБЛЙН ПВТБЪПН, ДТХЗПК УРПУПВ ПВТБВПФБФШ РТЕДЩДХЭЕЕ ЧЩТБЦЕОЙЕ УПУФПЙФ Ч ФПН, ЮФПВЩ ЙУРПМШЪПЧБФШ БТЙЖНЕФЙЛХ ФПЮОПЗП ЪОБЮЕОЙС, РПФПНХ ЮФП ЪОБЮЕОЙС DECIMAL ЙНЕАФ ВПМШЫЙК ДЙБРБЪПО, ЮЕН ГЕМЩЕ ЮЙУМБ:

еУМЙ ТЕЦЙН SQL NO_UNSIGNED_SUBTRACTION ЧЛМАЮЕО, ТЕЪХМШФБФ ПФТЙГБФЕМЕО:

12.3. фЙРЩ ДБФЩ Й ЧТЕНЕОЙ

йНЕКФЕ Ч ЧЙДХ ЬФЙ ПВЭЙЕ УППВТБЦЕОЙС, ТБВПФБС У ФЙРБНЙ ЧТЕНЕОЙ Й ДБФПК:

фЙР ДБООЩИ оХМЕЧПЕ ЪОБЮЕОЙЕ
DATE ‘0000-00-00’
TIME ’00:00:00′
DATETIME ‘0000-00-00 00:00:00’
TIMESTAMP ‘0000-00-00 00:00:00’
YEAR 0000

12.3.1. фЙРЩ DATE, DATETIME Й TIMESTAMP

фЙР TIMESTAMP ЙУРПМШЪХЕФУС ДМС ЪОБЮЕОЙК, ЛПФПТЩЕ УПДЕТЦБФ ЮБУФЙ ДБФЩ Й ЧТЕНЕОЙ. TIMESTAMP ЙНЕЕФ ДЙБРБЪПО ПФ ‘1970-01-01 00:00:01’ UTC ДП ‘2038-01-19 03:14:07’ UTC.

фЙРЩ ДБООЩИ TIMESTAMP Й DATETIME РТЕДМБЗБАФ БЧФПНБФЙЮЕУЛХА ЙОЙГЙБМЙЪБГЙА Й ПВОПЧМЕОЙЕ Л ФЕЛХЭЕК ДБФЕ Й ЧТЕНЕОЙ. дМС РПМХЮЕОЙС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ УН. ТБЪДЕМ 12.3.5.

ъОБКФЕ ПВ ПРТЕДЕМЕООЩИ УЧПКУФЧБИ ЙОФЕТРТЕФБГЙЙ ЪОБЮЕОЙС ДБФЩ Ч MySQL:

12.3.2. фЙР TIME

еДЙОУФЧЕООЩК ТБЪДЕМЙФЕМШ, РТЙЪОБООЩК НЕЦДХ ЮБУФША ЧТЕНЕОЙ Й ДТПВОПК ЮБУФША УЕЛХОД, СЧМСЕФУС ДЕУСФЙЮОПК ЪБРСФПК.

12.3.3. фЙР YEAR

фЙР YEAR 1-ВБКФПЧЩК ФЙР, ЙУРПМШЪХЕНЩК, ЮФПВЩ РТЕДУФБЧЙФШ ЪОБЮЕОЙС ЗПДБ. ьФП НПЦЕФ ВЩФШ ПВЯСЧМЕОП ЛБЛ YEAR ЙМЙ YEAR(4) Й ЙНЕЕФ ЫЙТЙОХ ЮЕФЩТЕ УЙНЧПМБ.

чЩ НПЦЕФЕ ПРТЕДЕМЙФШ ЪОБЮЕОЙС YEAR ЧП НОПЦЕУФЧЕ ЖПТНБФПЧ:

12.3.4. нЙЗТБГЙС УФПМВГПЧ ЙЪ YEAR(2) Ч YEAR(4)

хДБМЕОЙЕ РПДДЕТЦЛЙ YEAR(2) Ч MySQL 8.0

MySQL 8.0 ПВТБВБФЩЧБЕФ УФПМВГЩ YEAR(2) УМЕДХАЭЙН ПВТБЪПН:

нЙЗТБГЙС У YEAR(2) ОБ YEAR(4)

рТЕПВТБЪПЧБФШ УФПМВГЩ YEAR(2) Ч YEAR(4) чЩ НПЦЕФЕ УДЕМБФШ ЧТХЮОХА Ч МАВПЕ ЧТЕНС ВЕЪ ПВОПЧМЕОЙС. бМШФЕТОБФЙЧОП чЩ НПЦЕФЕ ПВОПЧЙФШУС ДП ЧЕТУЙЙ MySQL У ХНЕОШЫЕООПК ЙМЙ ХДБМЕООПК РПДДЕТЦЛПК YEAR(2) (MySQL 5.6.6 ЙМЙ РПЪЦЕ), ЪБФЕН УДЕМБФШ, ЮФПВЩ MySQL РТЕПВТБЪПЧБМ УФПМВГЩ YEAR(2) БЧФПНБФЙЮЕУЛЙ. ч РПУМЕДОЕН УМХЮБЕ ЙЪВЕЗБКФЕ ПВОПЧМЕОЙС, ЧЩЧПДС Й РЕТЕЪБЗТХЦБС чБЫЙ ДБООЩЕ, РПФПНХ ЮФП ЬФП НПЦЕФ ЙЪНЕОЙФШ ЪОБЮЕОЙС ДБООЩИ. лТПНЕ ФПЗП, ЕУМЙ чЩ ЙУРПМШЪХЕФЕ ТЕРМЙЛБГЙА, ЕУФШ УППВТБЦЕОЙС ПВОПЧМЕОЙС, ЛПФПТЩЕ чЩ ДПМЦОЩ РТЙОСФШ ЧП ЧОЙНБОЙЕ.

йЪНЕОЙФЕ ЙУРПМШЪПЧБОЙЕ УФПМВГБ ALTER TABLE УМЕДХАЭЙН ПВТБЪПН:

пВОПЧМЕОЙС УЕТЧЕТПЧ ТЕРМЙЛБГЙЙ ПВЩЮОП ПВОПЧМСАФ Л ВПМЕЕ ОПЧПК ЧЕТУЙЙ MySQL ЧЕДПНЩЕ ХУФТПКУФЧБ, ЪБФЕН ПВОПЧМСС ЧЕДХЭЕЕ ХУФТПКУФЧП. оБРТЙНЕТ, ЕУМЙ ЧЕДХЭЕЕ Й ЧЕДПНПЕ ХУФТПКУФЧБ ПВБ ЧЩРПМОСАФ MySQL 5.5, ФЙРЙЮОБС РПУМЕДПЧБФЕМШОПУФШ ПВОПЧМЕОЙС ЧПЧМЕЛБЕФ ПВОПЧМЕОЙЕ ЧЕДПНПЗП ХУФТПКУФЧБ ДП 5.6, Б ХЦЕ ЪБФЕН ЧЕДХЭЕЕ ХУФТПКУФЧП ПВОПЧМСЕФУС ДП 5.6. пФОПУЙФЕМШОП ДТХЗПЗП ПФОПЫЕОЙС YEAR(2) Ч MySQL 5.6.6, РПУМЕДПЧБФЕМШОПУФШ ПВОПЧМЕОЙС РТЙЧПДЙФ Л РТПВМЕНЕ: РТЕДРПМПЦЙФЕ, ЮФП ЧЕДПНПЕ ХУФТПКУФЧП ВЩМП ПВОПЧМЕОП, ОП ЧЕДХЭЕЕ РПЛБ ОЕФ. фПЗДБ УПУФБЧМЕОЙЕ ФБВМЙГЩ, УПДЕТЦБЭЕК УФПМВЕГ YEAR(2) ОБ ЧЕДХЭЕН ХУФТПКУФЧЕ РТЙЧПДЙФ Л ФБВМЙГЕ, УПДЕТЦБЭЕК УФПМВЕГ YEAR(4) ОБ ЧЕДПНПН. уМЕДПЧБФЕМШОП, Х ЬФЙИ ПРЕТБГЙК ВХДЕФ ТБЪМЙЮОЩК ТЕЪХМШФБФ ОБ ЧЕДХЭЕН Й ЧЕДПНПН ХУФТПКУФЧБИ, ЕУМЙ чЩ ВХДЕФЕ ЙУРПМШЪПЧБФШ ПУОПЧБООХА ОБ ЪБРТПУЕ ТЕРМЙЛБГЙА:

рЕТЕНЕЭЕОЙЕ ПФ YEAR(2) Л YEAR(4) ДПМЦОП ФБЛЦЕ ЧПЧМЕЮШ ЛПД РТПЗТБННЩ ДМС ЧПЪНПЦОПУФЙ ЙЪНЕОЕООПЗП ЙУУМЕДПЧБОЙС РПЧЕДЕОЙС РТЙ ХУМПЧЙСИ:

12.3.5. бЧФПНБФЙЮЕУЛБС ЙОЙГЙБМЙЪБГЙС Й ПВОПЧМЕОЙЕ ДМС TIMESTAMP Й DATETIME

уФПМВГЩ TIMESTAMP Й DATETIME НПЗХФ ВЩФШ БЧФПНБФЙЮЕУЛЙ ЙОЙГЙБМЙЪЙТПЧБОЩ Й ПВОПЧМЕОЩ Л ФЕЛХЭЕК ДБФЕ Й ЧТЕНЕОЙ (ФП ЕУФШ, timestamp).

дМС МАВПЗП УФПМВГБ TIMESTAMP ЙМЙ DATETIME Ч ФБВМЙГЕ чЩ НПЦЕФЕ ОБЪОБЮЙФШ ФЕЛХЭЙК timestamp Ч ЛБЮЕУФЧЕ ЪОБЮЕОЙС РП ХНПМЮБОЙА, ЪОБЮЕОЙС БЧФППВОПЧМЕОЙС ЙМЙ ПВПЙИ:

пРТЕДЕМЕОЙС УФПМВГПЧ TIMESTAMP ЙМЙ DATETIME НПЗХФ ПРТЕДЕМЙФШ ФЕЛХЭЙК timestamp ДМС ПВПЙИ ЪОБЮЕОЙК (РП ХНПМЮБОЙА Й БЧФППВОПЧМЕОЙС), ДМС ПДОПЗП, ОП ОЕ ДТХЗПЗП, ЙМЙ ОЙ ДМС ПДОПЗП. х ТБЪМЙЮОЩИ УФПМВГПЧ НПЗХФ ВЩФШ ТБЪМЙЮОЩЕ ЛПНВЙОБГЙЙ БЧФПНБФЙЮЕУЛЙИ УЧПКУФЧ. уМЕДХАЭЙЕ РТБЧЙМБ ПРЙУЩЧБАФ ЧПЪНПЦОПУФЙ:

ъОБЮЕОЙЕ РП ХНПМЮБОЙА ЪБЧЙУЙФ ПФ ФПЗП, ПРТЕДЕМСЕФ МЙ DEFAULT CURRENT_TIMESTAMP ЙМЙ РПУФПСООХА ЧЕМЙЮЙОХ. у CURRENT_TIMESTAMP ЪОБЮЕОЙЕ РП ХНПМЮБОЙА ВХДЕФ ФЕЛХЭЙН timestamp.

тБУУНПФТЙФЕ ЬФЙ ФБВМЙЮОЩЕ ПРТЕДЕМЕОЙС:

х ФБВМЙГ ЕУФШ ЬФЙ УЧПКУФЧБ:

еУМЙ ПРТЕДЕМЕОЙЕ УФПМВГБ TIMESTAMP ЙМЙ DATETIME ЧЛМАЮБЕФ СЧОПЕ ДТПВОПЕ ЪОБЮЕОЙЕ ФПЮОПУФЙ УЕЛХОД ЗДЕ ХЗПДОП, ФП ЦЕ УБНПЕ ЪОБЮЕОЙЕ ДПМЦОП ЙУРПМШЪПЧБФШУС ЧУАДХ РП ПРТЕДЕМЕОЙА УФПМВГБ. ьФП ТБЪТЕЫЕОП:

йОЙГЙБМЙЪБГЙС TIMESTAMP Й БФТЙВХФ NULL

хУФБОПЧЙФШ УФПМВЕГ TIMESTAMP Ч МАВПК ФБВМЙГЕ Л ФЕЛХЭЕНХ timestamp ЧП ЧТЕНС ЧУФБЧЛЙ НПЦОП, СЧОП ОБЪОБЮЙЧ ФБЛПЕ ЪОБЮЕОЙЕ. оБРТЙНЕТ:

12.3.6. дТПВОЩЕ ДПМЙ УЕЛХОД ЧП ЧТЕНЕООЩИ ЪОБЮЕОЙСИ

12.3.7. рТЕПВТБЪПЧБОЙЕ НЕЦДХ ФЙРБНЙ ДБФЩ Й ЧТЕНЕОЙ

рТЕПВТБЪПЧБОЙЕ TIME Й DATETIME Л ЮЙУМПЧПК ЖПТНЕ (ОБРТЙНЕТ, ДПВБЧМСС +0 ) ЪБЧЙУЙФ ПФ ФПЗП, УПДЕТЦЙФ МЙ ЪОБЮЕОЙЕ ДТПВОХА ЮБУФШ УЕЛХОД. TIME( N ) ЙМЙ DATETIME( N ) РТЕПВТБЪПЧБО Ч ГЕМПЕ ЮЙУМП, ЛПЗДБ N = 0 (ЙМЙ ПРХЭЕОП) Й Ч DECIMAL У N ДЕУСФЙЮОЩИ ГЙЖТ, ЛПЗДБ N ВПМШЫЕ 0:

12.3.8. зПДЩ У ДЧХНС ГЙЖТБНЙ Ч ДБФБИ

ъОБЮЕОЙС ДБФЩ У ЗПДБНЙ У ДЧХНС ГЙЖТБНЙ ОЕПДОПЪОБЮОЩ, РПФПНХ ЮФП УФПМЕФЙЕ ОЕЙЪЧЕУФОП. фБЛЙЕ ЪОБЮЕОЙС ДПМЦОЩ ЙОФЕТРТЕФЙТПЧБФШУС Ч ЖПТНХ У ЮЕФЩТШНС ГЙЖТБНЙ, РПФПНХ ЮФП MySQL ИТБОЙФ ЗПДЩ, ЧОХФТЕООЕ ЙУРПМШЪХС ЮЕФЩТЕ ГЙЖТЩ.

рПНОЙФЕ, ЮФП ЬФЙ РТБЧЙМБ ФПМШЛП ЬЧТЙУФЙЛБ, ЛПФПТБС ПВЕУРЕЮЙЧБЕФ ТБЪХНОЩЕ РТЕДРПМПЦЕОЙС ПФОПУЙФЕМШОП ФПЗП, ЮФП ПЪОБЮБАФ чБЫЙ ЪОБЮЕОЙС ДБООЩИ. еУМЙ РТБЧЙМБ, ЙУРПМШЪХЕНЩЕ MySQL, ОЕ РТПЙЪЧПДСФ ЪОБЮЕОЙС, ЛПФПТЩЕ чЩ ФТЕВХЕФЕ, чЩ ДПМЦОЩ ПВЕУРЕЮЙФШ ПДОПЪОБЮОЩК ЧЧПД, УПДЕТЦБЭЙК ЪОБЮЕОЙС ЗПДБ ЙЪ ЮЕФЩТЕИ ЪОБЛПЧ.

жХОЛГЙЙ ЧТПДЕ MIN() Й MAX() ЛПОЧЕТФЙТХЕФ YEAR Л ЮЙУМХ. ьФП ПЪОБЮБЕФ, ЮФП ЪОБЮЕОЙЕ У ЗПДПН У ДЧХНС ГЙЖТБНЙ ОЕ ТБВПФБЕФ ДПМЦОЩН ПВТБЪПН У ЬФЙНЙ ЖХОЛГЙСНЙ. ъБФТХДОЙФЕМШОПЕ РПМПЦЕОЙЕ Ч ЬФПН УМХЮБЕ ДПМЦОП РТЕПВТБЪПЧБФШ YEAR Л ЖПТНБФХ ЗПДБ ЙЪ ЮЕФЩТЕИ ЪОБЛПЧ.

12.4. уФТПЛПЧЩЕ ФЙРЩ

12.4.1. фЙРЩ CHAR Й VARCHAR

фЙРЩ CHAR Й VARCHAR РПДПВОЩ, ОП ПФМЙЮБАФУС РП УРПУПВХ, ЛПФПТЩН ПОЙ УПИТБОЕОЩ Й РПМХЮЕОЩ. пОЙ ФБЛЦЕ ПФМЙЮБАФУС РП НБЛУЙНБМШОПК ДМЙОЕ Й РП ФПНХ, УПИТБОЕОЩ МЙ ЛПОЕЮОЩЕ РТПВЕМЩ.

фЙРЩ CHAR Й VARCHAR ПВЯСЧМЕОЩ У ДМЙОПК, ЛПФПТБС ХЛБЪЩЧБЕФ ОБ НБЛУЙНБМШОПЕ ЛПМЙЮЕУФЧП УЙНЧПМПЧ, ЛПФПТЩЕ чЩ ИПФЙФЕ УПИТБОЙФШ. оБРТЙНЕТ, CHAR(30) НПЦЕФ УПДЕТЦБФШ ДП 30 УЙНЧПМПЧ.

дМС VARCHAR ЛПОЕЮОЩЕ РТПВЕМЩ УЧЕТИ ДМЙОЩ УФПМВГБ ХУЕЮЕОЩ ДП ЧУФБЧЛЙ, Й РТЕДХРТЕЦДЕОЙЕ РТПЙЪЧЕДЕОП, ОЕЪБЧЙУЙНП ПФ ТЕЦЙНБ SQL. дМС CHAR ХУЕЮЕОЙЕ МЙЫОЙИ ЛПОЕЮОЩИ РТПВЕМПЧ ЧУФБЧМЕООЩИ ЪОБЮЕОЙК ЧЩРПМОЕОП ФЙИП, ОЕЪБЧЙУЙНП ПФ ТЕЦЙНБ SQL.

VARCHAR ОЕ ДПРПМОЕОЩ, ЛПЗДБ ПОЙ УПИТБОЕОЩ. лПОЕЮОЩЕ РТПВЕМЩ УПИТБОЕОЩ, ЛПЗДБ ЪОБЮЕОЙС УПИТБОЕОЩ Й РПМХЮЕОЩ, Ч УППФЧЕФУФЧЙЙ УП УФБОДБТФОЩН SQL.

ъОБЮЕОЙЕ CHAR(4) оЕПВИПДЙНПЕ НЕУФП VARCHAR(4) оЕПВИПДЙНПЕ НЕУФП
» » 4 ВБКФБ » 1 ВБКФ
‘ab’ ‘ab’ 4 ВБКФБ ‘ab’ 3 ВБКФБ
‘abcd’ ‘abcd’ 4 ВБКФБ ‘abcd’ 5 ВБКФ
‘abcdefgh’ ‘abcd’ 4 ВБКФБ ‘abcd’ 5 ВБКФ

ъОБЮЕОЙС Ч CHAR Й VARCHAR ПФУПТФЙТПЧБОЩ Й УТБЧОЕОЩ УПЗМБУОП УПРПУФБЧМЕОЙА ОБВПТБ УЙНЧПМПЧ, ОБЪОБЮЕООПНХ ОБ УФПМВЕГ.

ьФП ЙУФЙОБ ДМС ЧУЕИ ЧЕТУЙК MySQL, Й ОЕ ЪБФТПОХФП ТЕЦЙНПН SQL.

дМС ФЕИ УМХЮБЕЧ, ЗДЕ УЙНЧПМЩ-ЪБРПМОЙФЕМЙ ПВТЕЪБОЩ ЙМЙ УТБЧОЕОЙС ЙЗОПТЙТХАФ ЙИ, ЕУМЙ Х УФПМВГБ ВХДЕФ ЙОДЕЛУЙТПЧБОЙЕ, ЛПФПТПЕ ФТЕВХЕФ ХОЙЛБМШОЩИ ЪОБЮЕОЙК, ЧУФБЧМСС Ч ЪОБЮЕОЙС УФПМВГПЧ, ЛПФПТЩЕ ПФМЙЮБАФУС ФПМШЛП РП ЮЙУМХ УЙНЧПМПЧ-ЪБРПМОЙФЕМЕК, ФП РТЙЧЕДЕФ Л ПЫЙВЛЕ ДХВМЙТПЧБОЙС ЛМАЮБ.

12.4.2. фЙРЩ BINARY Й VARBINARY

еУМЙ РПМХЮЕООПЕ ЪОБЮЕОЙЕ ДПМЦОП ВЩФШ ФЕН ЦЕ УБНЩН, ЛБЛ ЪОБЮЕОЙЕ, ПРТЕДЕМЕООПЕ ДМС ИТБОЕОЙС ВЕЪ ДПРПМОЕОЙС, НПЦЕФ ВЩФШ РТЕДРПЮФЙФЕМШОП ЙУРПМШЪПЧБФШ VARBINARY ЙМЙ ПДЙО ЙЪ ФЙРПЧ ДБООЩИ BLOB ЧНЕУФП ЬФПЗП.

12.4.3. фЙРЩ BLOB Й TEXT

хУЕЮЕОЙЕ МЙЫОЙИ ЛПОЕЮОЩИ РТПВЕМПЧ ПФ ЪОБЮЕОЙК, ЛПФПТЩЕ ВХДХФ ЧУФБЧМЕОЩ Ч УФПМВГЩ TEXT ЧУЕЗДБ РТПЙЪЧПДЙФ РТЕДХРТЕЦДЕОЙЕ, ОЕЪБЧЙУЙНП ПФ ТЕЦЙНБ SQL.

дМС УФПМВГПЧ TEXT Й BLOB ОЕФ ОЙЛБЛПЗП ДПРПМОЕОЙС РТЙ ЧУФБЧЛЕ, Й ОЙЛБЛЙЕ ВБКФЩ ОЕ ПФТЕЪБОЩ РТЙ ЧЩВПТЛЕ.

фБЛ ЛБЛ BLOB Й TEXT НПЗХФ ВЩФШ ЮТЕЪЧЩЮБКОП ДМЙООЩНЙ, чЩ НПЦЕФЕ УФПМЛОХФШУС У ОЕЛПФПТЩНЙ ПЗТБОЙЮЕОЙСНЙ Ч ЙИ ЙУРПМШЪПЧБОЙЙ:

лБЦДПЕ ЪОБЮЕОЙЕ BLOB ЙМЙ TEXT РТЕДУФБЧМЕОП ЧОХФТЕООЕ ПФДЕМШОП ЧЩДЕМЕООЩН ПВЯЕЛФПН. ьФП ПФМЙЮЙЕ ПФ ЧУЕИ ДТХЗЙИ ФЙРПЧ ДБООЩИ, ДМС ЛПФПТЩИ ИТБОЕОЙЕ ЧЩДЕМЕОП ПДОБЦДЩ ОБ УФПМВЕГ, ЛПЗДБ ФБВМЙГБ ПФЛТЩФБ.

12.4.4. фЙР ENUM

ENUM УФТПЛПЧЩК ПВЯЕЛФ УП ЪОБЮЕОЙЕН, ЧЩВТБООЩН ЙЪ УРЙУЛБ ТБЪТЕЫЕООЩИ ЪОБЮЕОЙК, ЛПФПТЩЕ РЕТЕЮЙУМЕОЩ СЧОП Ч УРЕГЙЖЙЛБГЙЙ УФПМВГБ РТЙ УПЪДБОЙЙ ФБВМЙГЩ. х ЬФПЗП ЕУФШ РТЕЙНХЭЕУФЧБ:

пВТБФЙФЕ ЧОЙНБОЙЕ ОБ УМЕДХАЭЕЕ:

уПЪДБОЙЕ Й РТЙНЕОЕОЙЕ ENUM

ъОБЮЕОЙЕ РЕТЕЮЙУМЕОЙС ДПМЦОП ВЩФШ ЪБЛМАЮЕООПК Ч ЛБЧЩЮЛЙ ВХЛЧБМШОПК УФТПЛПК. оБРТЙНЕТ, чЩ НПЦЕФЕ УПУФБЧЙФШ ФБВМЙГХ У ENUM ФБЛ:

ъОБЮЕОЙС ЙОДЕЛУБ ДМС МЙФЕТБМПЧ РЕТЕЮЙУМЕОЙС

х ЛБЦДПЗП ЪОБЮЕОЙС РЕТЕЮЙУМЕОЙС ЕУФШ ЙОДЕЛУ:

оБРТЙНЕТ, УФПМВЕГ, ПРТЕДЕМЕООЩК ЛБЛ ENUM(‘Mercury’, ‘Venus’, ‘Earth’) НПЦЕФ ЙНЕФШ МАВПЕ ЙЪ ЪОБЮЕОЙК, РПЛБЪБООЩИ ЪДЕУШ. йОДЕЛУ ЛБЦДПЗП ЪОБЮЕОЙС ФБЛЦЕ РПЛБЪЩЧБАФ.

ъОБЮЕОЙЕValue йОДЕЛУ
NULL NULL
» 0
‘Mercury’ 1
‘Venus’ 2
‘Earth’ 3

х УФПМВГБ ENUM НПЦЕФ ВЩФШ НБЛУЙНХН 65535 ТБЪМЙЮОЩИ ЬМЕНЕОФПЧ.

еУМЙ чЩ РПМХЮБЕФЕ ЪОБЮЕОЙЕ ENUM Ч ЮЙУМПЧПН ЛПОФЕЛУФЕ, ЧПЪЧТБЭБЕФУС ЙОДЕЛУ ЪОБЮЕОЙС УФПМВГБ. оБРТЙНЕТ, чЩ НПЦЕФЕ РПМХЮЙФШ ЮЙУМПЧЩЕ ЪОБЮЕОЙС ЙЪ ENUM ФБЛ:

пВТБВПФЛБ МЙФЕТБМПЧ РЕТЕЮЙУМЕОЙС

лПОЕЮОЩЕ РТПВЕМЩ БЧФПНБФЙЮЕУЛЙ ХДБМЕОЩ ЙЪ ЮМЕОПЧ ЪОБЮЕОЙС ENUM Ч ФБВМЙЮОПН ПРТЕДЕМЕОЙЙ, ЛПЗДБ ФБВМЙГБ УПУФБЧМЕОБ.

пРТЕДЕМЙФШ ЧУЕ ЧПЪНПЦОЩЕ ЪОБЮЕОЙС ДМС УФПМВГБ ENUM НПЦОП У РПНПЭША SHOW COLUMNS FROM tbl_name LIKE ‘ enum_col ‘ Й РТПУНПФТБ ПРТЕДЕМЕОЙС ENUM Ч УФПМВГЕ Type ЧЩЧПДБ.

ч C API ЪОБЮЕОЙС ENUM ЧПЪЧТБЭЕОЩ ЛБЛ УФТПЛЙ. дМС ЙОЖПТНБГЙЙ ПВ ЙУРПМШЪПЧБОЙЙ НЕФБДБООЩИ П ОБВПТЕ ТЕЪХМШФБФПЧ, ЮФПВЩ ПФМЙЮЙФШ ЙИ ПФ ДТХЗЙИ УФТПЛ, УН. ТБЪДЕМ 25.8.5.

рХУФЩЕ ЙМЙ NULL ЪОБЮЕОЙС РЕТЕЮЙУМЕОЙС

ъОБЮЕОЙЕ РЕТЕЮЙУМЕОЙС НПЦЕФ ФБЛЦЕ ВЩФШ РХУФПК УФТПЛПК ( » ) ЙМЙ NULL РТЙ ПРТЕДЕМЕООЩИ ПВУФПСФЕМШУФЧБИ:

еУМЙ чЩ ЧУФБЧМСЕФЕ ОЕДПРХУФЙНПЕ ЪОБЮЕОЙЕ Ч ENUM (ФП ЕУФШ, УФТПЛХ, ОЕ УХЭЕУФЧХАЭХА Ч УРЙУЛЕ ТБЪТЕЫЕООЩИ ЪОБЮЕОЙК), РХУФБС УФТПЛБ ЧУФБЧМЕОБ ЧНЕУФП ЬФПЗП ЛБЛ УРЕГЙБМШОПЕ ПЫЙВПЮОПЕ ЪОБЮЕОЙЕ. ьФХ УФТПЛХ НПЦОП ПФМЙЮЙФШ ПФ ОПТНБМШОПК РХУФПК УФТПЛЙ ЖБЛФ, ЮФП Х ЬФПК УФТПЛЙ ЕУФШ ЮЙУМПЧПЕ ЪОБЮЕОЙЕ 0.

уПТФЙТПЧЛБ РЕТЕЮЙУМЕОЙС

рТЕДПФЧТБФЙФШ ОЕПЦЙДБООЩЕ ТЕЪХМШФБФЩ, ЙУРПМШЪХС ORDER BY ОБ УФПМВГЕ ENUM НПЦОП ФБЛ:

пЗТБОЙЮЕОЙС РЕТЕЮЙУМЕОЙС

ъОБЮЕОЙЕ РЕТЕЮЙУМЕОЙС ОЕ НПЦЕФ ВЩФШ ЧЩТБЦЕОЙЕН, ДБЦЕ ФП, ЛПФПТПЕ ПГЕОЙЧБЕФУС ЛБЛ УФТПЛПЧПЕ ЪОБЮЕОЙЕ.

оБРТЙНЕТ, CREATE TABLE ое ТБВПФБЕФ, РПФПНХ ЮФП CONCAT ОЕ НПЦЕФ ЙУРПМШЪПЧБФШУС, ЮФПВЩ УПЪДБФШ ЪОБЮЕОЙЕ РЕТЕЮЙУМЕОЙС:

чЩ ФБЛЦЕ ОЕ НПЦЕФЕ ЙУРПМШЪПЧБФШ РПМШЪПЧБФЕМШУЛХА РЕТЕНЕООХА ЛБЛ ЪОБЮЕОЙЕ РЕТЕЮЙУМЕОЙС. ьФБ РБТБ ЪБРТПУПЧ ое ТБВПФБЕФ:

дЧПКОЩЕ ЪОБЮЕОЙС Ч ПРТЕДЕМЕОЙЙ ЧЩЪЩЧБАФ РТЕДХРТЕЦДЕОЙЕ ЙМЙ ПЫЙВЛХ, ЕУМЙ УФТПЗЙК ТЕЦЙН SQL ЧЛМАЮЕО.

12.4.5. фЙР SET

оБРТЙНЕТ, УФПМВЕГ, ПРТЕДЕМЕООЩК ЛБЛ SET(‘one’, ‘two’) NOT NULL НПЦЕФ ЙНЕФШ МАВПЕ ЙЪ ЬФЙИ ЪОБЮЕОЙК:

х УФПМВГБ SET НПЦЕФ ВЩФШ НБЛУЙНХН 64 ТБЪМЙЮОЩИ ХЮБУФОЙЛБ.

дЧПКОЩЕ ЪОБЮЕОЙС Ч ПРТЕДЕМЕОЙЙ ЧЩЪЩЧБАФ РТЕДХРТЕЦДЕОЙЕ ЙМЙ ПЫЙВЛХ, ЕУМЙ УФТПЗЙК ТЕЦЙН SQL ЧЛМАЮЕО.

лПОЕЮОЩЕ РТПВЕМЩ БЧФПНБФЙЮЕУЛЙ ХДБМЕОЩ ЙЪ ЮМЕОПЧ SET Ч ФБВМЙЮОПН ПРТЕДЕМЕОЙЙ, ЛПЗДБ ФБВМЙГБ УПУФБЧМЕОБ.

MySQL ИТБОЙФ ЪОБЮЕОЙС SET Ч ГЙЖТПЧПК ЖПТНЕ, У ВЙФПН НМБДЫЕЗП ТБЪТСДБ ИТБОЙНПЗП ЪОБЮЕОЙС, УППФЧЕФУФЧХАЭЕЗП РЕТЧПНХ ХЮБУФОЙЛХ ОБВПТБ. еУМЙ чЩ РПМХЮБЕФЕ ЪОБЮЕОЙЕ SET Ч ЮЙУМПЧПН ЛПОФЕЛУФЕ, РПМХЮЕООПЕ ЪОБЮЕОЙЕ ЕУФШ ОБВПТ ВЙФПЧ, УППФЧЕФУФЧХАЭЙК ХЮБУФОЙЛБН ОБВПТБ, ЛПФПТЩЕ УПУФБЧМСАФ ЪОБЮЕОЙЕ УФПМВГБ. оБРТЙНЕТ, чЩ НПЦЕФЕ РПМХЮЙФШ ЮЙУМПЧЩЕ ЪОБЮЕОЙС ЙЪ SET ФБЛ:

юМЕО SET дЕУСФЙЮОПЕ ЪОБЮЕОЙЕ дЧПЙЮОПЕ ЪОБЮЕОЙЕ
‘a’ 1 0001
‘b’ 2 0010
‘c’ 4 0100
‘d’ 8 1000

фПЗДБ ЧУЕ ЬФЙ ЪОБЮЕОЙС РПСЧМСАФУС ЛБЛ ‘a,d’ :

еУМЙ чЩ ХУФБОБЧМЙЧБЕФЕ УФПМВЕГ SET Л ОЕРПДДЕТЦБООПНХ ЪОБЮЕОЙА, ЪОБЮЕОЙЕ РТПЙЗОПТЙТПЧБОП, Й РТЕДХРТЕЦДЕОЙЕ УПЪДБОП:

еУМЙ УФТПЗЙК ТЕЦЙН SQL ЧЛМАЮЕО, РПРЩФЛЙ ЧУФБЧЙФШ ОЕДПРХУФЙНПЕ ЪОБЮЕОЙЕ SET РТЙЧПДСФ Л ПЫЙВЛЕ.

уМЕДХАЭЙЕ ЪБРТПУЩ ФБЛЦЕ ТБЪТЕЫЕОЩ:

пРТЕДЕМЙФШ ЧУЕ ЧПЪНПЦОЩЕ ЪОБЮЕОЙС ДМС SET НПЦОП, РТЙНЕОЙЧ SHOW COLUMNS FROM tbl_name LIKE set_col Й ЙЪХЮЙЧ ПРТЕДЕМЕОЙЕ SET Ч УФПМВГЕ Type ЧЩЧПДБ.

ч C API ЪОБЮЕОЙС SET ЧПЪЧТБЭЕОЩ ЛБЛ УФТПЛЙ. дМС ЙОЖПТНБГЙЙ ПВ ЙУРПМШЪПЧБОЙЙ НЕФБДБООЩИ П ОБВПТЕ ТЕЪХМШФБФПЧ, ЮФПВЩ ПФМЙЮЙФШ ЙИ ПФ ДТХЗЙИ УФТПЛ, УН. ТБЪДЕМ 25.8.5.

12.5. тБУЫЙТЕОЙС ДМС РТПУФТБОУФЧЕООЩИ ДБООЩИ

Open Geospatial Consortium (OGC) СЧМСЕФУС НЕЦДХОБТПДОЩН ЛПОУПТГЙХНПН ВПМЕЕ 250 ЛПНРБОЙК, БЗЕОФУФЧ Й ХОЙЧЕТУЙФЕФПЧ, ХЮБУФЧХАЭЙИ Ч ТБЪЧЙФЙЙ РХВМЙЮОП ДПУФХРОЩИ ЛПОГЕРФХБМШОЩИ ТЕЫЕОЙК, ЛПФПТЩЕ НПЗХФ ВЩФШ РПМЕЪОЩНЙ УП ЧУЕНЙ ЧЙДБНЙ РТЙМПЦЕОЙК, ЛПФПТЩЕ ХРТБЧМСАФ РТПУФТБОУФЧЕООЩНЙ ДБООЩНЙ.

рТПУФТБОУФЧЕООЩЕ ТБУЫЙТЕОЙС MySQL ЧЛМАЮБАФ РТПЙЪЧПДУФЧП, ИТБОЕОЙЕ Й БОБМЙЪ ЗЕПЗТБЖЙЮЕУЛЙИ ПУПВЕООПУФЕК:

зЕПЗТБЖЙЮЕУЛБС ПУПВЕООПУФШ ЬФП ЮФП-МЙВП Ч НЙТЕ, Х ЮЕЗП ЕУФШ НЕУФПРПМПЦЕОЙЕ. пУПВЕООПУФШ НПЦЕФ ВЩФШ:

зЕПНЕФТЙС ДТХЗПЕ УМПЧП, ЛПФПТПЕ ПВПЪОБЮБЕФ ЗЕПЗТБЖЙЮЕУЛХА ПУПВЕООПУФШ. рЕТЧПОБЮБМШОП УМПЧП «ЗЕПНЕФТЙС» ПЪОБЮБМП ЙЪНЕТЕОЙЕ ЪЕНМЙ. дТХЗПЕ ЪОБЮЕОЙЕ РТЙВЩЧБЕФ ЙЪ ЛБТФПЗТБЖЙЙ, ПВТБЭБСУШ Л ЗЕПНЕФТЙЮЕУЛЙН ЖХОЛГЙСН, ЛПФПТЩЕ ЛБТФПЗТБЖЩ ЙУРПМШЪХАФ, ЮФПВЩ ПФПВТБЪЙФШ НЙТ.

уМЕДХАЭЙК НБФЕТЙБМ ЪБФТБЗЙЧБЕФ ЬФЙ ФЕНЩ:

уППФЧЕФУФЧЙЕ Й УПЧНЕУФЙНПУФШ MySQL GIS

MySQL ОЕ ТЕБМЙЪХЕФ УМЕДХАЭЙЕ ПРГЙЙ GIS:

дПРПМОЙФЕМШОЩЕ РТЕДУФБЧМЕОЙС НЕФБДБООЩИ.

дПРПМОЙФЕМШОЩЕ ТЕУХТУЩ

12.5.1. рТПУФТБОУФЧЕООЩЕ ФЙРЩ ДБООЩИ

х MySQL ЕУФШ ФЙРЩ ДБООЩИ, ЛПФПТЩЕ УППФЧЕФУФЧХАФ ЛМБУУБН OpenGIS. оЕЛПФПТЩЕ ЙЪ ЬФЙИ ФЙРПЧ УПДЕТЦБФ ЕДЙОУФЧЕООЩЕ ЪОБЮЕОЙС ЗЕПНЕФТЙЙ:

дТХЗЙЕ ФЙРЩ ДБООЩИ УПДЕТЦБФ ОБВПТЩ ЪОБЮЕОЙК:

х РТПУФТБОУФЧЕООЩИ ФЙРПЧ ДБООЩИ MySQL ЕУФШ УЧПС ПУОПЧБ Ч НПДЕМЙ ЗЕПНЕФТЙЙ OpenGIS, ПРЙУБООПК Ч ТБЪДЕМЕ 12.5.2. дМС РТЙНЕТПЧ, РПЛБЪЩЧБАЭЙИ, ЛБЛ ЙУРПМШЪПЧБФШ РТПУФТБОУФЧЕООЩЕ ФЙРЩ ДБООЩИ Ч MySQL, УН. ТБЪДЕМ 12.5.3.

12.5.2. нПДЕМШ ЗЕПНЕФТЙЙ OpenGIS

12.5.2.1. йЕТБТИЙС ЛМБУУПЧ ЗЕПНЕФТЙЙ

лМБУУЩ ЗЕПНЕФТЙЙ ПРТЕДЕМСАФ ЙЕТБТИЙА УМЕДХАЭЙН ПВТБЪПН:

оЕЧПЪНПЦОП УПЪДБФШ ПВЯЕЛФЩ Ч noninstantiable ЛМБУУБИ. чПЪНПЦОП УПЪДБФШ ПВЯЕЛФЩ Ч instantiable ЛМБУУБИ. х ЧУЕИ ЛМБУУПЧ ЕУФШ УЧПКУФЧБ, Х instantiable ЛМБУУПЧ НПЗХФ ФБЛЦЕ ВЩФШ ХФЧЕТЦДЕОЙС (РТБЧЙМБ, ЛПФПТЩЕ ПРТЕДЕМСАФ ДПРХУФЙНЩЕ ЬЛЪЕНРМСТЩ ЛМБУУБ).

Geometry ВБЪПЧЩК ЛМБУУ. ьФП БВУФТБЛФОЩК ЛМБУУ. instantiable РПДЛМБУУЩ Geometry ПЗТБОЙЮЕОЩ 0, 1 Й 2-НЕТОЩНЙ ЗЕПНЕФТЙЮЕУЛЙНЙ ПВЯЕЛФБНЙ, ЛПФПТЩЕ УХЭЕУФЧХАФ Ч ДЧХНЕТОПН ЛППТДЙОБФОПН РТПУФТБОУФЧЕ. чУЕ instantiable ЛМБУУЩ ЗЕПНЕФТЙЙ ПРТЕДЕМЕОЩ ФБЛ, ЮФПВЩ ДПРХУФЙНЩЕ ЬЛЪЕНРМСТЩ ЛМБУУБ ЗЕПНЕФТЙЙ ВЩМЙ ФПРПМПЗЙЮЕУЛЙ ЪБЛТЩФЩ (ФП ЕУФШ, ЧУЕ ПРТЕДЕМЕООЩЕ ЛПОЖЙЗХТБГЙЙ ЧЛМАЮБАФ УЧПА ЗТБОЙГХ).

12.5.2.2. лМБУУ ЗЕПНЕФТЙЙ

уЧПКУФЧБ ЗЕПНЕФТЙЙ

х ЪОБЮЕОЙС ЗЕПНЕФТЙЙ ЕУФШ УМЕДХАЭЙЕ УЧПКУФЧБ:

12.5.2.3. лМБУУ Point

Point ЗЕПНЕФТЙС, ЛПФПТБС РТЕДУФБЧМСЕФ ЕДЙОУФЧЕООПЕ НЕУФПРПМПЦЕОЙЕ Ч ЛППТДЙОБФОПН РТПУФТБОУФЧЕ.

12.5.2.4. лМБУУ Curve

Curve ПДОПНЕТОБС ЗЕПНЕФТЙС, ПВЩЮОП РТЕДУФБЧМСЕНБС РПУМЕДПЧБФЕМШОПУФША РХОЛФПЧ. пУПВЩЕ РПДЛМБУУЩ Curve ПРТЕДЕМСАФ ФЙР ЙОФЕТРПМСГЙЙ НЕЦДХ РХОЛФБНЙ. Curve noninstantiable ЛМБУУ.

12.5.2.5. лМБУУ LineString

LineString ЬФП Curve У МЙОЕКОПК ЙОФЕТРПМСГЙЕК НЕЦДХ РХОЛФБНЙ.

12.5.2.6. лМБУУ Surface

12.5.2.7. лМБУУ Polygon

оБ ЛБТФЕ ПВМБУФЙ ПВЯЕЛФЩ Polygon НПЗХФ РТЕДУФБЧЙФШ МЕУБ, ТБКПОЩ Й ФБЛ ДБМЕЕ.

рТЕДЩДХЭЙЕ ХФЧЕТЦДЕОЙС ДЕМБАФ Polygon РТПУФПК ЗЕПНЕФТЙЕК.

12.5.2.8. лМБУУ GeometryCollection

GeometryCollection ЗЕПНЕФТЙС, ЛПФПТБС СЧМСЕФУС ОБВПТПН ЙЪ ПДОПК ЙМЙ ВПМЕЕ ЛПОЖЙЗХТБГЙК МАВПЗП ЛМБУУБ.

12.5.2.9. лМБУУ MultiPoint

12.5.2.10. лМБУУ MultiCurve

12.5.2.11. лМБУУ MultiLineString

оБ ЛБТФЕ ПВМБУФЙ MultiLineString НПЦЕФ РТЕДУФБЧЙФШ ТЕЮОХА ЙМЙ НБЗЙУФТБМШОХА УЙУФЕНХ.

12.5.2.12. лМБУУ MultiSurface

12.5.2.13. лМБУУ MultiPolygon

оБ ЛБТФЕ ПВМБУФЙ MultiPolygon НПЦЕФ РТЕДУФБЧЙФШ УЙУФЕНХ ПЪЕТ.

12.5.3. йУРПМШЪПЧБОЙЕ РТПУФТБОУФЧЕООЩИ ДБООЩИ

ьФПФ ТБЪДЕМ ПРЙУЩЧБЕФ, ЛБЛ УПУФБЧЙФШ ФБВМЙГЩ, ЛПФПТЩЕ ЧЛМАЮБАФ УФПМВГЩ У ФЙРБНЙ РТПУФТБОУФЧЕООЩИ ДБООЩИ, Й ЛБЛ ХРТБЧМСФШ РТПУФТБОУФЧЕООПК ЙОЖПТНБГЙЕК.

12.5.3.1. рПДДЕТЦБООЩЕ РТПУФТБОУФЧЕООЩЕ ЖПТНБФЩ ДБООЩИ/h4>

дЧБ УФБОДБТФОЩИ РТПУФТБОУФЧЕООЩИ ЖПТНБФБ ДБООЩИ ЙУРПМШЪХАФУС, ЮФПВЩ РТЕДУФБЧЙФШ ПВЯЕЛФЩ ЗЕПНЕФТЙЙ Ч ЪБРТПУБИ:

чОХФТЕООЕ MySQL ИТБОЙФ ЪОБЮЕОЙС ЗЕПНЕФТЙЙ Ч ЖПТНБФЕ, ЛПФПТЩК ОЕ ЙДЕОФЙЮЕО ОЙ ПДОПНХ ЙЪ ОЙИ.

еУФШ ЖХОЛГЙЙ, ДПУФХРОЩЕ, ЮФПВЩ РТЕПВТБЪПЧБФШ НЕЦДХ ТБЪМЙЮОЩНЙ ЖПТНБФБНЙ ДБООЩИ, УН. ТБЪДЕМ 13.15.6.

12.5.3.1.1. жПТНБФ Well-Known Text (WKT)

Well-Known Text (WKT) ТБЪТБВПФБО ДМС ФПЗП, ЮФПВЩ ПВНЕОСФШУС ЙОЖПТНБГЙСНЙ ЗЕПНЕФТЙЙ Ч ЖПТНЕ ASCII. уРЕГЙЖЙЛБГЙС OpenGIS ПВЕУРЕЮЙЧБЕФ ЗТБННБФЙЛХ Backus-Naur, ЛПФПТБС ПРТЕДЕМСЕФ ЖПТНБМШОЩЕ РТПЙЪЧПДУФЧЕООЩЕ РТБЧЙМБ ДМС ФПЗП, ЮФПВЩ ОБРЙУБФШ ЪОБЮЕОЙС WKT (УН. ТБЪДЕМ 12.5).

рТЙНЕТЩ РТЕДУФБЧМЕОЙК WKT ПВЯЕЛФПЧ ЗЕПНЕФТЙЙ:

LineString У ЮЕФЩТШНС РХОЛФБНЙ:

12.5.3.1.2. жПТНБФ Well-Known Binary (WKB)

WKB ЙУРПМШЪХЕФ 1-ВБКФПЧЩЕ unsigned integer, 4-ВБКФПЧЩЕ unsigned integer Й 8-ВБКФПЧЩЕ ЮЙУМБ ДЧПКОПК ФПЮОПУФЙ (ЖПТНБФ IEEE 754). вБКФ УПУФБЧМСЕФ ЧПУЕНШ ВЙФПЧ.

оБРТЙНЕТ, ЪОБЮЕОЙЕ WKB, ЛПФПТПЕ УППФЧЕФУФЧХЕФ POINT(1 1) УПУФПЙФ ЙЪ ЬФПК РПУМЕДПЧБФЕМШОПУФЙ 21 ВБКФБ, ЛБЦДЩК РТЕДУФБЧМЕО ДЧХНС ЫЕУФОБДГБФЕТЙЮОЩНЙ ГЙЖТБНЙ:

рПУМЕДПЧБФЕМШОПУФШ УПУФПЙФ ЙЪ ЬФЙИ ЛПНРПОЕОФПЧ:

уПУФБЧМСАЭЕЕ РТЕДУФБЧМЕОЙЕ УМЕДХАЭЙЕ:

х ЪОБЮЕОЙК WKB ДМС ВПМЕЕ УМПЦОЩИ ЪОБЮЕОЙК ЗЕПНЕФТЙЙ ЕУФШ ВПМЕЕ УМПЦОЩЕ УФТХЛФХТЩ ДБООЩИ, ЛБЛ ДЕФБМЙЪЙТПЧБОП Ч УРЕГЙЖЙЛБГЙЙ OpenGIS.

12.5.3.2. уПЪДБОЙЕ РТПУФТБОУФЧЕООЩИ УФПМВГПЧ

12.5.3.3. ъБРПМОЕОЙЕ РТПУФТБОУФЧЕООЩИ УФПМВГПЧ

рПУМЕ ФПЗП, ЛБЛ чЩ УПЪДБМЙ РТПУФТБОУФЧЕООЩЕ УФПМВГЩ, чЩ НПЦЕФЕ ЪБРПМОЙФШ ЙИ РТПУФТБОУФЧЕООЩНЙ ДБООЩНЙ.

ъОБЮЕОЙС ДПМЦОЩ ВЩФШ УПИТБОЕОЩ ЧП ЧОХФТЕООЕН ЖПТНБФЕ ЗЕПНЕФТЙЙ, ОП чЩ НПЦЕФЕ РТЕПВТБЪПЧБФШ ЙИ Ч ЬФПФ ЖПТНБФ ЙЪ Well-Known Text (WKT) ЙМЙ Well-Known Binary (WKB). уМЕДХАЭЙЕ РТЙНЕТЩ ДЕНПОУФТЙТХАФ, ЛБЛ ЧУФБЧЙФШ ЪОБЮЕОЙС ЗЕПНЕФТЙЙ Ч ФБВМЙГХ, РТЕПВТБЪПЧЩЧБС ЪОБЮЕОЙС WKT ЧП ЧОХФТЕООЙК ЖПТНБФ ЗЕПНЕФТЙЙ:

уМЕДХАЭЙЕ РТЙНЕТЩ ЧУФБЧМСАФ ВПМЕЕ УМПЦОЩЕ ЛПОЖЙЗХТБГЙЙ Ч ФБВМЙГХ:

рТПЗТБННБ РТЙМПЦЕОЙС-ЛМЙЕОФБ, ЛПФПТБС ИПЮЕФ ЙУРПМШЪПЧБФШ РТЕДУФБЧМЕОЙС ЪОБЮЕОЙК ЗЕПНЕФТЙЙ WKB, ПФЧЕФУФЧЕООБ ЪБ РПУЩМЛХ РТБЧЙМШОП УЖПТНЙТПЧБООЩИ WKB Ч ЪБРТПУБИ Л УЕТЧЕТХ. еУФШ ОЕУЛПМШЛП УРПУПВПЧ ХДПЧМЕФЧПТЙФШ ЬФП ФТЕВПЧБОЙЕ. оБРТЙНЕТ:

12.5.3.4. хУФБОПЧЛБ РТПУФТБОУФЧЕООЩИ ДБООЩИ

ъОБЮЕОЙС ЗЕПНЕФТЙЙ, УПИТБОЕООЩЕ Ч ФБВМЙГЕ, НПЗХФ ВЩФШ РПМХЮЕОЩ ЧП ЧОХФТЕООЕН ЖПТНБФЕ. чЩ НПЦЕФЕ ФБЛЦЕ РТЕПВТБЪПЧБФШ ЙИ Ч ЖПТНБФ WKB ЙМЙ WKT.

хУФБОПЧЛБ РТПУФТБОУФЧЕООЩИ ДБООЩИ ЧП ЧОХФТЕООЕН ЖПТНБФЕ:

12.5.3.5. пРФЙНЙЪБГЙС РТПУФТБОУФЧЕООПЗП БОБМЙЪБ

MySQL ЙУРПМШЪХЕФ R-Trees У ЛЧБДТБФОЩН ТБЪДЕМЕОЙЕН ДМС ЙОДЕЛУПЧ SPATIAL ОБ РТПУФТБОУФЧЕООЩИ УФПМВГБИ. йОДЕЛУ SPATIAL УПЪДБО, ЙУРПМШЪХС НЙОЙНБМШОЩК ПЗТБОЙЮЙФЕМШОЩК РТСНПХЗПМШОЙЛ (MBR) ЗЕПНЕФТЙЙ. дМС ВПМШЫЙОУФЧБ ЛПОЖЙЗХТБГЙК MBR НЙОЙНБМШОЩК РТСНПХЗПМШОЙЛ, ЛПФПТЩК ПЛТХЦБЕФ ЛПОЖЙЗХТБГЙЙ. дМС ЗПТЙЪПОФБМШОПЗП ЙМЙ ЧЕТФЙЛБМШОПЗП linestring MBR РТСНПХЗПМШОЙЛ, ДЕЗТБДЙТПЧБЧЫЙК Ч linestring. дМС point MBR РТСНПХЗПМШОЙЛ, ДЕЗТБДЙТПЧБЧЫЙК Ч point.

12.5.3.6. рТПУФТБОУФЧЕООПЕ УПЪДБОЙЕ ЙОДЕЛУПЧ

SPATIAL INDEX УПЪДБЕФ R-ДЕТЕЧП. дМС НЕИБОЙЪНПЧ ИТБОЕОЙС, ЛПФПТЩЕ РПДДЕТЦЙЧБАФ ОЕРТПУФТБОУФЧЕООХА ЙОДЕЛУБГЙА РТПУФТБОУФЧЕООЩИ УФПМВГПЧ, НЕИБОЙЪН УПЪДБЕФ B-ДЕТЕЧП. B-ДЕТЕЧП ЙОДЕЛУБ ОБ РТПУФТБОУФЧЕООЩИ ЪОБЮЕОЙСИ РПМЕЪОП ДМС РПЙУЛПЧ ФПЮОПЗП ЪОБЮЕОЙС, ОП ОЕ ДМС РТПУНПФТПЧ ДЙБРБЪПОБ.

юФПВЩ ХДБМЙФШ РТПУФТБОУФЧЕООЩК ЙОДЕЛУ, ОБДП ЙУРПМШЪПЧБФШ ALTER TABLE ЙМЙ DROP INDEX :

12.5.3.7. йУРПМШЪПЧБОЙЕ РТПУФТБОУФЧЕООПЗП ЙОДЕЛУБ

рТПЧЕТШФЕ ФП, ЮФП РТПЙЪПЫМП ВЩ ВЕЪ РТПУФТБОУФЧЕООПЗП ЙОДЕЛУБ:

чЩРПМОЕОЙЕ SELECT ВЕЪ РТПУФТБОУФЧЕООПЗП ЙОДЕЛУБ ЧЩДБУФ ФПФ ЦЕ УБНЩК ТЕЪХМШФБФ, ОП ЧТЕНС ЧЩРПМОЕОЙС РПЧЩЫБЕФУС У 0.00 ДП 0.46 УЕЛХОДЩ:

12.6. фЙР ДБООЩИ JSON

уФПМВГЩ JSON ОЕ НПЗХФ ЙНЕФШ ЪОБЮЕОЙС РП ХНПМЮБОЙА.

пРФЙНЙЪБФПТ MySQL ФБЛЦЕ ЙЭЕФ УПЧНЕУФЙНЩК ЙОДЕЛУ ОБ ЧЙТФХБМШОЩИ УФПМВГБИ У ЧЩТБЦЕОЙЕН JSON.

уМЕДХАЭЕЕ ПВУХЦДЕОЙЕ ЪБФТБЗЙЧБЕФ ЬФЙ ФЕНЩ:

оБТСДХ У ФЙРПН ДБООЩИ, ТСД ЖХОЛГЙК SQL ДПУФХРЕО, ЮФПВЩ ЧЛМАЮЙФШ ПРЕТБГЙЙ ОБ ЪОБЮЕОЙСИ JSON ФБЛЙИ, ЛБЛ УПЪДБОЙЕ, НБОЙРХМСГЙС Й РПЙУЛ. рПУМЕДХАЭЕЕ ПВУХЦДЕОЙЕ РПЛБЪЩЧБЕФ РТЙНЕТЩ ЬФЙИ ПРЕТБГЙК. дМС ДЕФБМЕК ПВ ПФДЕМШОЩИ ЖХОЛГЙСИ УН. ТБЪДЕМ 13.16.

тСД РТПУФТБОУФЧЕООЩИ ЖХОЛГЙК ДМС ФПЗП, ЮФПВЩ ЧПЪДЕКУФЧПЧБФШ ОБ ЪОБЮЕОЙС GeoJSON ФБЛЦЕ ДПУФХРЕО. уН. ТБЪДЕМ 13.15.11.

уПЪДБОЙЕ ЪОБЮЕОЙК JSON

нБУУЙЧ JSON УПДЕТЦЙФ УРЙУПЛ ЪОБЮЕОЙК, ПФДЕМЕООЩИ ЪБРСФЩНЙ Й РТЙМПЦЕООЩК Ч РТЕДЕМБИ УЙНЧПМПЧ [ Й ] :

пВЯЕЛФ JSON УПДЕТЦЙФ ТСД РБТ ЛМАЮБ/ЪОБЮЕОЙС, ПФДЕМЕООЩИ ЪБРСФЩНЙ Й РТЙМПЦЕООЩК Ч РТЕДЕМБИ УЙНЧПМПЧ < Й >:

нБУУЙЧЩ Й ПВЯЕЛФЩ JSON НПЗХФ УПДЕТЦБФШ УЛБМСТОЩЕ ЪОБЮЕОЙС, ЛПФПТЩЕ СЧМСАФУС УФТПЛБНЙ ЙМЙ ЮЙУМБНЙ, МЙФЕТБМПН JSON null ЙМЙ МЙФЕТБМБНЙ JSON boolean true ЙМЙ false. лМАЮЙ Ч ПВЯЕЛФБИ JSON ДПМЦОЩ ВЩФШ УФТПЛБНЙ. чТЕНЕООЩЕ (date, time ЙМЙ datetime) УЛБМСТОЩЕ ЪОБЮЕОЙС ФБЛЦЕ ТБЪТЕЫЕОЩ:

чМПЦЕОЙЕ ТБЪТЕЫЕОП Ч РТЕДЕМБИ ЬМЕНЕОФПЧ НБУУЙЧБ Й ЪОБЮЕОЙК ЛМАЮБ ПВЯЕЛФБ JSON:

ч MySQL ЪОБЮЕОЙС JSON ОБРЙУБОЩ ЛБЛ УФТПЛЙ. MySQL ТБЪВЙТБЕФ МАВХА УФТПЛХ, ЙУРПМШЪХЕНХА Ч ЛПОФЕЛУФЕ, ЛПФПТЩК ФТЕВХЕФ ЪОБЮЕОЙС JSON, Й РТПЙЪЧПДЙФ ПЫЙВЛХ, ЕУМЙ ЬФП ОЕ ДПРХУФЙНП ЛБЛ JSON. ьФЙ ЛПОФЕЛУФЩ ЧЛМАЮБАФ ЧУФБЧЛХ ЪОБЮЕОЙС Ч УФПМВЕГ, ЛПФПТЩК ЙНЕЕФ ФЙР JSON Й РТПИПЦДЕОЙЕ РБТБНЕФТБ Ч ЖХОЛГЙА, ЛПФПТБС ПЦЙДБЕФ ЪОБЮЕОЙЕ JSON, ЛБЛ УМЕДХАЭЙЕ РТЙНЕТЩ ДЕНПОУФТЙТХАФ:

рПРЩФЛБ ЧУФБЧЙФШ ЪОБЮЕОЙЕ Ч УФПМВЕГ JSON РТЕХУРЕЧБЕФ, ЕУМЙ ЪОБЮЕОЙЕ ДПРХУФЙНПЕ ЪОБЮЕОЙЕ JSON, ОП ФЕТРЙФ ОЕХДБЮХ, ЕУМЙ ЬФП ОЕ ФБЛ:

лБЛ БМШФЕТОБФЙЧБ ОБРЙУБОЙА ЪОБЮЕОЙК JSON, ЙУРПМШЪХС ВХЛЧБМШОЩЕ УФТПЛЙ, УХЭЕУФЧХАФ ЖХОЛГЙЙ ДМС ФПЗП, ЮФПВЩ УПУФБЧЙФШ ЪОБЮЕОЙС JSON ЙЪ УПУФБЧМСАЭЙИ ЬМЕНЕОФПЧ. JSON_ARRAY() ВЕТЕФ (ЧПЪНПЦОП РХУФПК) УРЙУПЛ ЪОБЮЕОЙК Й ЧПЪЧТБЭБЕФ НБУУЙЧ JSON, УПДЕТЦБЭЙК ФЕ ЪОБЮЕОЙС:

JSON_OBJECT() ВЕТЕФ (ЧПЪНПЦОП РХУФПК) УРЙУПЛ РБТ ЛМАЮБ/ЪОБЮЕОЙС Й ЧПЪЧТБЭБЕФ ПВЯЕЛФ JSON, УПДЕТЦБЭЙК ФЕ РБТЩ:

JSON_MERGE() ВЕТЕФ ДЧБ ЙМЙ ВПМШЫЕ ДПЛХНЕОФБ JSON Й ЧПЪЧТБЭБЕФ ПВЯЕДЙОЕООЩК ТЕЪХМШФБФ:

ъОБЮЕОЙС JSON НПЗХФ ВЩФШ ОБЪОБЮЕОЩ ОБ ПРТЕДЕМСЕНЩЕ РПМШЪПЧБФЕМЕН РЕТЕНЕООЩЕ:

х УФТПЛ, РТПЙЪЧЕДЕООЩИ, РТЕПВТБЪПЧЩЧБС ЪОБЮЕОЙС JSON, ЕУФШ ОБВПТ УЙНЧПМПЧ utf8mb4 Й УПРПУФБЧМЕОЙЕ utf8mb4_bin :

рПУЛПМШЛХ utf8mb4_bin ДЧПЙЮОПЕ УПРПУФБЧМЕОЙЕ, УТБЧОЕОЙЕ ЪОБЮЕОЙК JSON СЧМСЕФУС ЮХЧУФЧЙФЕМШОЩН Л ТЕЗЙУФТХ.

оПТНБМЙЪБГЙС, УМЙСОЙЕ Й БЧФППВЕТФЩЧБОЙЕ ЪОБЮЕОЙК JSON

оПТНБМЙЪБГЙС, ЧЩРПМОЕООБС MySQL, ФБЛЦЕ УПТФЙТХЕФ ЛМАЮЙ ПВЯЕЛФБ JSON (У ГЕМША УПЪДБОЙС ВПМЕЕ ЬЖЖЕЛФЙЧОЩИ РПЙУЛПЧ). тЕЪХМШФБФ ЬФПЗП ХРПТСДПЮЙЧБОЙС РПДЧЕТЦЕО ЙЪНЕОЕОЙСН Й ОЕ ЗБТБОФЙТХЕФУС, ЮФП ВХДЕФ РПУМЕДПЧБФЕМШОЩН. лТПНЕ ФПЗП, ПФ ДПРПМОЙФЕМШОЩИ РТПВЕМПЧ НЕЦДХ ЛМАЮБНЙ, ЪОБЮЕОЙСНЙ ЙМЙ ЬМЕНЕОФБНЙ Ч ПТЙЗЙОБМЕ ДПЛХНЕОФБ ПФЛБЪЩЧБАФУС.

жХОЛГЙЙ MySQL, ЛПФПТЩЕ РТПЙЪЧПДСФ ЪОБЮЕОЙС JSON (УН. ТБЪДЕМ 13.16.2) ЧУЕЗДБ ЧПЪЧТБЭБАФ ОПТНБМЙЪПЧБООЩЕ ЪОБЮЕОЙС.

ч ЛПОФЕЛУФБИ, ЛПФПТЩЕ ЛПНВЙОЙТХАФ НОПЗПЛТБФОЩЕ НБУУЙЧЩ, НБУУЙЧЩ УМЙФЩ Ч ЕДЙОУФЧЕООЩК НБУУЙЧ, ДПВБЧМСС НБУУЙЧЩ, ОБЪЧБООЩЕ РПЪЦЕ, Ч ЛПОЕГ РЕТЧПЗП НБУУЙЧБ. ч УМЕДХАЭЕН РТЙНЕТЕ JSON_MERGE() УМЙЧБЕФ РБТБНЕФТЩ Ч ЕДЙОУФЧЕООЩК НБУУЙЧ:

нОПЗП ПВЯЕЛФЩ ЛПЗДБ УМЙФЩ РТПЙЪЧПДСФ ЕДЙОУФЧЕООЩК ПВЯЕЛФ. еУМЙ Х НОПЗЙИ ПВЯЕЛФПЧ ЕУФШ ФПФ ЦЕ УБНЩК ЛМАЮ, ЪОБЮЕОЙЕ ДМС ФПЗП ЛМАЮБ Ч РПМХЮБАЭЕНУС УМЙФПН ПВЯЕЛФЕ СЧМСЕФУС НБУУЙЧПН, УПДЕТЦБЭЙН ЪОБЮЕОЙС ЛМАЮБ:

ъОБЮЕОЙС НБУУЙЧБ Й ПВЯЕЛФБ УМЙФЩ, БЧФППВЕТФЩЧБС ПВЯЕЛФ ЛБЛ НБУУЙЧ Й УМЙЧБС ДЧБ НБУУЙЧБ:

рПЙУЛ Й НПДЙЖЙЛБГЙС ЪОБЮЕОЙК JSON

чЩТБЦЕОЙЕ РХФЙ JSON ЧЩВЙТБЕФ ЪОБЮЕОЙЕ Ч РТЕДЕМБИ ДПЛХНЕОФБ JSON.

чЩТБЦЕОЙС РХФЙ РПМЕЪОЩ У ЖХОЛГЙСНЙ, ЛПФПТЩЕ ЙЪЧМЕЛБАФ ЮБУФЙ ЙМЙ ЙЪНЕОСАФ ДПЛХНЕОФ JSON, ЮФПВЩ ПРТЕДЕМЙФШ, ЗДЕ ТБВПФБФШ Ч РТЕДЕМБИ ЬФПЗП ДПЛХНЕОФБ. оБРТЙНЕТ, УМЕДХАЭЙК ЪБРТПУ ЙЪЧМЕЛБЕФ ЙЪ ДПЛХНЕОФБ JSON ЪОБЮЕОЙЕ ХЮБУФОЙЛБ У ЛМАЮПН name :

$ УУЩМБЕФУС ОБ ЬФПФ НБУУЙЧ JSON У ФТЕНС ЬМЕНЕОФБНЙ:

лМАЮЙ УПДЕТЦБФ РТПВЕМ Й ДПМЦОЩ ВЩФШ ЪБЛМАЮЕОЩ Ч ЛБЧЩЮЛЙ:

рХФЙ, ЛПФПТЩЕ ЙУРПМШЪХАФ РПДУФБОПЧПЮОЩЕ ЪОБЛЙ, ПГЕОЙЧБАФУС Л НБУУЙЧХ, ЛПФПТЩК НПЦЕФ УПДЕТЦБФШ НОПЗП ЪОБЮЕОЙК:

тБУУНПФТЙФЕ ЬФПФ ДПЛХНЕОФ:

JSON_SET() ЪБНЕОСЕФ ЪОБЮЕОЙС ДМС РХФЕК, ЛПФПТЩЕ УХЭЕУФЧХАФ Й ДПВБЧМСЕФ ЪОБЮЕОЙС ДМС РХФЕК, ЛПФПТЩЕ ОЕ УХЭЕУФЧХАФ:

JSON_INSERT() ДПВБЧМСЕФ ОПЧЩЕ ЪОБЮЕОЙС, ОП ОЕ ЪБНЕОСЕФ УХЭЕУФЧХАЭЙЕ:

JSON_REPLACE() ЪБНЕОСЕФ УХЭЕУФЧХАЭЙЕ ЪОБЮЕОЙС Й ЙЗОПТЙТХЕФ ОПЧЩЕ:

рБТЩ РХФЙ/ЪОБЮЕОЙС ПГЕОЕОЩ УМЕЧБ ОБРТБЧП. дПЛХНЕОФ, РТЕДУФБЧМЕООЩК, ПГЕОЙЧБС ПДОХ РБТХ, УФБОПЧЙФУС ОПЧЩН ЪОБЮЕОЙЕН, РТПФЙЧ ЛПФПТПЗП ПГЕОЕОБ УМЕДХАЭБС РБТБ.

JSON_REMOVE() ВЕТЕФ ДПЛХНЕОФ JSON Й ПДЙО ЙМЙ ВПМЕЕ РХФЕК, ЛПФПТЩЕ ПРТЕДЕМСАФ ЪОБЮЕОЙС, ЛПФПТЩЕ ВХДХФ ХДБМЕОЩ ЙЪ ДПЛХНЕОФБ. чПЪЧТБЭБЕНПЕ ЪОБЮЕОЙЕ: ПТЙЗЙОБМ ДПЛХНЕОФБ НЙОХУ ЪОБЮЕОЙС, ЧЩВТБООЩЕ РХФСНЙ, ЛПФПТЩЕ УХЭЕУФЧХАФ Ч РТЕДЕМБИ ДПЛХНЕОФБ:

рХФЙ ЙНЕАФ ЬФЙ ЬЖЖЕЛФЩ:

уТБЧОЕОЙЕ Й ХРПТСДПЮЙЧБОЙЕ ЪОБЮЕОЙК JSON

уМЕДХАЭЙЕ ПРЕТБФПТЩ УТБЧОЕОЙС Й ЖХОЛГЙЙ ЕЭЕ ОЕ РПДДЕТЦБОЩ УП ЪОБЮЕОЙСНЙ JSON:

пВИПД ДМС ПРЕТБФПТПЧ УТБЧОЕОЙС Й ЖХОЛГЙК: ЛПОЧЕТФЙТПЧБФШ ЪОБЮЕОЙС JSON Ч ЮЙУМБ MySQL ЙМЙ РТЕДУФБЧЙФШ ФЙР ДБООЩИ Ч ЧЙДЕ УФТПЛЙ, ФБЛЙН ПВТБЪПН, Х ОЙИ ЕУФШ РПУМЕДПЧБФЕМШОЩК ОЕ-JSON УЛБМСТОЩК ФЙР.

уТБЧОЕОЙЕ ЪОБЮЕОЙК JSON ЙНЕЕФ НЕУФП ОБ ДЧХИ ХТПЧОСИ. рЕТЧЩК ХТПЧЕОШ УТБЧОЕОЙС ПУОПЧБО ОБ ФЙРБИ JSON УТБЧОЕООЩИ ЪОБЮЕОЙК. еУМЙ ФЙРЩ ПФМЙЮБАФУС, ТЕЪХМШФБФ УТБЧОЕОЙС ПРТЕДЕМЕО ЙУЛМАЮЙФЕМШОП ФЕН, Х ЛБЛПЗП ФЙРБ ЕУФШ ВПМЕЕ ЧЩУПЛЙК РТЙПТЙФЕФ. еУМЙ ДЧБ ЪОБЮЕОЙС ЙНЕАФ ФПФ ЦЕ УБНЩК ФЙР JSON, ЧФПТПК ХТПЧЕОШ УТБЧОЕОЙС РТПЙУИПДЙФ, ЙУРПМШЪХС ПРТЕДЕМЕООЩЕ ДМС ФЙРБ РТБЧЙМБ.

дМС ЪОБЮЕОЙК JSON ФПЗП ЦЕ УБНПЗП РТЙПТЙФЕФБ РТБЧЙМБ УТБЧОЕОЙС ПРТЕДЕМЕОЩ ДМС ФЙРБ:

дЧБ НБУУЙЧБ JSON ТБЧОЩ, ЕУМЙ Х ОЙИ ЕУФШ ФБ ЦЕ УБНБС ДМЙОБ, Й ЪОБЮЕОЙС Ч УППФЧЕФУФЧХАЭЙИ РПЪЙГЙСИ Ч НБУУЙЧБИ ТБЧОЩ.

еУМЙ НБУУЙЧЩ ОЕ ТБЧОЩ, ЙИ РПТСДПЛ ПРТЕДЕМЕО ЬМЕНЕОФБНЙ Ч РЕТЧПК РПЪЙГЙЙ, ЗДЕ ЕУФШ ТБЪМЙЮЙЕ. нБУУЙЧ У НЕОШЫЙН ЪОБЮЕОЙЕН Ч ЬФПК РПЪЙГЙЙ УПТФЙТХЕФУС РЕТЧЩН. еУМЙ ЧУЕ ЪОБЮЕОЙС Ч ВПМЕЕ ЛПТПФЛПН НБУУЙЧЕ ТБЧОЩ УППФЧЕФУФЧХАЭЙН ЪОБЮЕОЙСН Ч ВПМЕЕ ДМЙООПН НБУУЙЧЕ, ВПМЕЕ ЛПТПФЛЙК НБУУЙЧ УПТФЙТХЕФУС РЕТЧЩН.

дЧБ ПВЯЕЛФБ JSON ТБЧОЩ, ЕУМЙ Х ОЙИ ЕУФШ ФПФ ЦЕ УБНЩК ОБВПТ ЛМАЮЕК, Й Х ЛБЦДПЗП ЛМАЮБ ЕУФШ ФП ЦЕ УБНПЕ ЪОБЮЕОЙЕ Ч ПВПЙИ ПВЯЕЛФБИ.

уФТПЛЙ ХРПТСДПЮЕОЩ МЕЛУЙЮЕУЛЙ ОБ РЕТЧЩИ N ВБКФБИ РТЕДУФБЧМЕОЙС utf8mb4 ДЧХИ УТБЧОЙЧБЕНЩИ УФТПЛ, ЗДЕ N ДМЙОБ ВПМЕЕ ЛПТПФЛПК УФТПЛЙ. еУМЙ РЕТЧЩЕ N ВБКФ ДЧХИ УФТПЛ ЙДЕОФЙЮОЩ, ВПМЕЕ ЛПТПФЛХА УФТПЛХ УЮЙФБАФ НЕОШЫЕК ЮЕН ВПМЕЕ ДМЙООБС УФТПЛБ.

ъОБЮЕОЙС JSON НПЗХФ УПДЕТЦБФШ ЮЙУМБ ФПЮОПЗП ЪОБЮЕОЙС Й ЮЙУМБ РТЙВМЙЪЙФЕМШОПК ФПЮОПУФЙ. дМС ПВЭЕЗП ПВУХЦДЕОЙС ЬФЙИ ФЙРПЧ ЮЙУЕМ УН. ТБЪДЕМ 10.1.2.

рТБЧЙМБ ДМС ФПЗП, ЮФПВЩ УТБЧОЙФШ ЮЙУМПЧЩЕ ФЙРЩ MySQL ПВУХЦДЕОЩ Ч ТБЪДЕМЕ 13.2, ОП РТБЧЙМБ ДМС ФПЗП, ЮФПВЩ УТБЧОЙФШ ЮЙУМБ Ч РТЕДЕМБИ ЪОБЮЕОЙК JSON ОЕУЛПМШЛП ПФМЙЮБАФУС:

еУМЙ УТБЧОЕОЙС JSON ЙУРПМШЪХАФ ЮЙУМПЧЩЕ РТБЧЙМБ УТБЧОЕОЙС ОЕ-JSON, ОЕРПУМЕДПЧБФЕМШОПЕ ХРПТСДПЮЙЧБОЙЕ НПЗМП РТПЙЪПКФЙ. пВЩЮОЩЕ РТБЧЙМБ УТБЧОЕОЙС MySQL ДМС ЮЙУЕМ РТЙЧПДСФ Л ЬФЙН ХРПТСДПЮЙЧБОЙСН:

дМС УТБЧОЕОЙС МАВЩИ JSON Й ОЕ-JSON ЪОБЮЕОЙК, ОЕ-JSON РТЕПВТБЪПЧБОП Ч JSON УПЗМБУОП РТБЧЙМБН Ч УМЕДХАЭЕК ФБВМЙГЕ, ФПЗДБ ЪОБЮЕОЙС УТБЧОЕОЩ ЛБЛ ПРЙУБОП ТБОЕЕ.

рТЕПВТБЪПЧБОЙЕ НЕЦДХ ЪОБЮЕОЙСНЙ JSON Й ОЕ-JSON. уМЕДХАЭБС ФБВМЙГБ ПВЕУРЕЮЙЧБЕФ ТЕЪАНЕ РТБЧЙМ, ЛПФПТЩН MySQL УМЕДХЕФ, УТБЧОЙЧБС ЪОБЮЕОЙС JSON Й ДТХЗЙИ ФЙРПЧ:

фБВМЙГБ 12.1. рТБЧЙМБ ЛПОЧЕТФБГЙЙ JSON

ORDER BY Й GROUP BY ДМС JSON ТБВПФБАФ УПЗМБУОП ЬФЙН РТЙОГЙРБН:

дМС ФПЗП, ЮФПВЩ УПТФЙТПЧБФШ, НПЦЕФ ВЩФШ ЧЩЗПДОП, РТЕПВТБЪПЧБФШ УЛБМСТ JSON Л ОЕЛПФПТПНХ ДТХЗПНХ ФЙРХ MySQL. оБРТЙНЕТ, ЕУМЙ УФПМВЕГ jdoc УПДЕТЦЙФ ПВЯЕЛФЩ JSON, ЙНЕАЭЙЕ ХЮБУФОЙЛБ, УПУФПСЭЕЗП ЙЪ ЛМАЮБ id Й ОЕПФТЙГБФЕМШОПЗП ЪОБЮЕОЙС, ЙУРПМШЪХКФЕ ЬФП ЧЩТБЦЕОЙЕ ДМС УПТФЙТПЧЛЙ РП ЪОБЮЕОЙСН id :

бЗТЕЗЙТПЧБОЙЕ ЪОБЮЕОЙК JSON

12.7. ъОБЮЕОЙС РП ХНПМЮБОЙА

рТЕДРПМПЦЙФЕ ЮФП ФБВМЙГБ t ПРТЕДЕМЕОБ УМЕДХАЭЙН ПВТБЪПН:

ч ЬФПН УМХЮБЕ i ОЕ ЙНЕЕФ ОЙЛБЛПЗП СЧОПЗП ЪОБЮЕОЙС РП ХНПМЮБОЙА, ФБЛЙН ПВТБЪПН, Ч УФТПЗПН ТЕЦЙНЕ ЛБЦДЩК ЙЪ УМЕДХАЭЙИ ЪБРТПУПЧ РТПЙЪЧПДЙФ ПЫЙВЛХ, Й ОЙЛБЛБС УФТПЛБ ОЕ ЧУФБЧМЕОБ. еУМЙ ОЕ ЙУРПМШЪХЕФУС УФТПЗЙК ТЕЦЙН, ФПМШЛП ФТЕФЙК ЪБРТПУ РТПЙЪЧПДЙФ ПЫЙВЛХ: ОЕСЧОПЕ ЪОБЮЕОЙЕ РП ХНПМЮБОЙА ЧУФБЧМЕОП ДМС РЕТЧЩИ ДЧХИ ЪБРТПУПЧ, ОП ФТЕФЙК ФЕТРЙФ ОЕХДБЮХ, РПФПНХ ЮФП DEFAULT(i) ОЕ НПЦЕФ РТПЙЪЧЕУФЙ ЪОБЮЕОЙЕ:

оЕСЧОЩЕ ЪОБЮЕОЙС РП ХНПМЮБОЙА ПРТЕДЕМЕОЩ УМЕДХАЭЙН ПВТБЪПН:

12.8. фТЕВПЧБОЙС ИТБОЕОЙС ФЙРПЧ ДБООЩИ

фТЕВПЧБОЙС ИТБОЕОЙС ДМС ФБВМЙЮОЩИ ДБООЩИ ЪБЧЙУСФ ПФ ОЕУЛПМШЛЙИ ЖБЛФПТПЧ. тБЪМЙЮОЩЕ НЕИБОЙЪНЩ ИТБОЕОЙС РТЕДУФБЧМСАФ ФЙРЩ ДБООЩИ Й ИТБОСФ ОЕПВТБВПФБООЩЕ ДБООЩЕ РП-ДТХЗПНХ. фБВМЙЮОЩЕ ДБООЩЕ НПЗМЙ ВЩ ВЩФШ УЦБФЩ ДМС УФПМВГБ ЙМЙ ДМС ЧУЕК УФТПЛЙ, ХУМПЦОСС ЧЩЮЙУМЕОЙЕ ФТЕВПЧБОЙК ИТБОЕОЙС ДМС ФБВМЙГЩ ЙМЙ УФПМВГБ.

оЕУНПФТС ОБ ТБЪМЙЮЙС Ч ТБУРПМПЦЕОЙЙ ИТБОЕОЙС ОБ ДЙУЛЕ, ЧОХФТЕООЙЕ MySQL API, ЛПФПТЩЕ УППВЭБАФ Й ПВНЕОЙЧБАФУС ЙОЖПТНБГЙЕК П УФТПЛБИ ФБВМЙГЩ, ЙУРПМШЪХАФ РПУМЕДПЧБФЕМШОХА УФТХЛФХТХ ДБООЩИ, ЛПФПТБС РТЙНЕОСЕФУС ЧУЕНЙ НЕИБОЙЪНБНЙ ИТБОЕОЙС.

ьФПФ ТБЪДЕМ ЧЛМАЮБЕФ ЙОЖПТНБГЙА ДМС ФТЕВПЧБОЙК ИТБОЕОЙС ДМС ЛБЦДПЗП ФЙРБ ДБООЩИ, РПДДЕТЦБООПЗП MySQL, ЧЛМАЮБС ЧОХФТЕООЙК ЖПТНБФ Й ТБЪНЕТ ДМС НЕИБОЙЪНПЧ ИТБОЕОЙС, ЛПФПТЩЕ ЙУРПМШЪХАФ РТЕДУФБЧМЕОЙЕ ЖЙЛУЙТПЧБООПЗП ТБЪНЕТБ ДМС ФЙРПЧ ДБООЩИ. йОЖПТНБГЙС РЕТЕЮЙУМЕОБ РП ЛБФЕЗПТЙСН ЙМЙ НЕИБОЙЪНБН ИТБОЕОЙС.

фТЕВПЧБОЙС ИТБОЕОЙС ДМС ФБВМЙГ InnoDB

фТЕВПЧБОЙС ИТБОЕОЙС ДМС ЮЙУМПЧЩИ ФЙРПЧ

ъОБЮЕОЙС ДМС УФПМВГПЧ DECIMAL (Й NUMERIC ) РТЕДУФБЧМЕОЩ, ЙУРПМШЪХС ДЧПЙЮОЩК ЖПТНБФ, ЛПФПТЩК ХРБЛПЧЩЧБЕФ 9 ДЕУСФЙЮОЩИ ГЙЖТ Ч ЮЕФЩТЕ ВБКФБ. иТБОЕОЙЕ ДМС ГЕМПЗП ЮЙУМБ Й ДТПВОЩИ ЮБУФЕК ЛБЦДПЗП ЪОБЮЕОЙС ПРТЕДЕМЕОП ПФДЕМШОП. лБЦДЩЕ 9 ГЙЖТ ФТЕВХАФ ЮЕФЩТЕИ ВБКФПЧ, Й ЛТБКОЙЕ УМЕЧБ ГЙЖТЩ ФТЕВХАФ ЛБЛПК-ФП ЮБУФЙ ЮЕФЩТЕИ ВБКФПЧ. иТБОЕОЙЕ, ФТЕВХЕНПЕ ДМС ЬФЙИ МЙЫОЙИ ГЙЖТ, ДБОП УМЕДХАЭЕК ФБВМЙГЕК.

лТБКОЙЕ УМЕЧБ ГЙЖТЩ юЙУМП ВБКФ
0 0
1 1
2 1
3 2
4 2
5 3
6 3
7 4
8 4

фТЕВПЧБОЙС ИТБОЕОЙС ДМС ФЙРПЧ ДБФЩ Й ЧТЕНЕОЙ

фЙР ДБООЩИ уЛПМШЛП ОБДП НЕУФБ ДП MySQL 5.6.4 уЛПМШЛП ОБДП НЕУФБ Ч MySQL 5.6.4 Й ЧЩЫЕ
YEAR 1 byte 1 ВБКФ
DATE 3 bytes 3 ВБКФБ
TIME 3 bytes 3 ВБКФБ + ДТПВОПЕ ИТБОЕОЙЕ УЕЛХОД
DATETIME 8 bytes 5 ВБКФ + ДТПВОПЕ ИТБОЕОЙЕ УЕЛХОД
TIMESTAMP 4 bytes 4 ВБКФБ + ДТПВОПЕ ИТБОЕОЙЕ УЕЛХОД
фПЮОПУФЙ ДТПВОПК ЮБУФЙ УЕЛХОД уЛПМШЛП ОБДП НЕУФБ
0 оЕ ОБДП
1, 2 1 ВБКФ
3, 4 2 ВБКФБ
5, 6 3 ВБКФБ

дМС ДЕФБМЕК П ЧОХФТЕООЕН РТЕДУФБЧМЕОЙЙ ЧТЕНЕООЩИ ЪОБЮЕОЙК УН. MySQL Internals: Important Algorithms and Structures.

фТЕВПЧБОЙС ИТБОЕОЙС ДМС УФТПЛПЧЩИ ФЙРПЧ

ч УМЕДХАЭЕК ФБВМЙГЕ M РТЕДУФБЧМСЕФ ЪБСЧМЕООХА ДМЙОХ УФПМВГБ Ч УЙНЧПМБИ ДМС ОЕДЧПЙЮОЩИ УФТПЛПЧЩИ ФЙРПЧ Й Ч ВБКФБИ ДМС ДЧПЙЮОЩИ УФТПЛПЧЩИ ФЙРПЧ. L РТЕДУФБЧМСЕФ ЖБЛФЙЮЕУЛХА ДМЙОХ Ч ВБКФБИ ДБООПЗП УФТПЛПЧПЗП ЪОБЮЕОЙС.

уФТПЛПЧЩЕ ФЙРЩ РЕТЕНЕООПК ДМЙОЩ УПИТБОЕОЩ, ЙУРПМШЪХС РТЙУФБЧЛХ ДМЙОЩ РМАУ ДБООЩЕ. рТЙУФБЧЛБ ДМЙОЩ ФТЕВХЕФ ПФ ПДОПЗП ДП ЮЕФЩТЕИ ВБКФПЧ Ч ЪБЧЙУЙНПУФЙ ПФ ФЙРБ ДБООЩИ, Й ЪОБЮЕОЙЕ РТЙУФБЧЛЙ L (ВБКФ ДМЙОЩ УФТПЛЙ). оБРТЙНЕТ, ИТБОЕОЙЕ ДМС MEDIUMTEXT ФТЕВХЕФ L ВБКФ, ЮФПВЩ УПИТБОЙФШ ЪОБЮЕОЙЕ РМАУ ФТЙ ВБКФБ, ЮФПВЩ УПИТБОЙФШ ДМЙОХ ЪОБЮЕОЙС.

тБЪНЕТ ПВЯЕЛФБ ENUM ПРТЕДЕМЕО ЮЙУМПН ТБЪМЙЮОЩИ ЪОБЮЕОЙК РЕТЕЮЙУМЕОЙС. пДЙО ВБКФ ЙУРПМШЪХЕФУС ДМС РЕТЕЮЙУМЕОЙК У 255 ЧПЪНПЦОЩНЙ ЪОБЮЕОЙСНЙ. дЧБ ВБКФБ ЙУРПМШЪХАФУС ДМС ОБМЙЮЙС РЕТЕЮЙУМЕОЙК НЕЦДХ 256 Й 65535 ЧПЪНПЦОЩНЙ ЪОБЮЕОЙСНЙ. уН. ТБЪДЕМ 12.4.4.

12.9. чЩВПТ РТБЧЙМШОПЗП ФЙРБ ДМС УФПМВГБ

PROCEDURE ANALYSE НПЦЕФ ЙУРПМШЪПЧБФШУС, ЮФПВЩ РПМХЮЙФШ РТЕДМПЦЕОЙС ДМС ПРФЙНБМШОЩИ ФЙРПЧ ДБООЩИ УФПМВГБ. дМС РПМХЮЕОЙС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ УН. ТБЪДЕМ 9.4.2.4.

12.10. рТЙНЕОЕОЙЕ ФЙРПЧ ДБООЩИ ЙЪ ДТХЗЙИ ВБЪ ДБООЩИ

юФПВЩ ПВМЕЗЮЙФШ ЙУРПМШЪПЧБОЙЕ ЛПДБ, ОБРЙУБООПЗП ДМС ЧЩРПМОЕОЙС SQL ДТХЗЙИ РТПЙЪЧПДЙФЕМЕК, MySQL ПФПВТБЦБЕФ ФЙРЩ ДБООЩИ ЛБЛ РПЛБЪБОП Ч УМЕДХАЭЕК ФБВМЙГЕ. ьФЙ ПФПВТБЦЕОЙС ПВМЕЗЮБАФ ЙНРПТФ ФБВМЙЮОЩИ ПРТЕДЕМЕОЙК ЙЪ ДТХЗЙИ УЙУФЕН ВБЪ ДБООЩИ Ч MySQL.

фЙР ЙЪ ДТХЗПК ухвд фЙР Ч MySQL
BOOL TINYINT
BOOLEAN TINYINT
CHARACTER VARYING( M ) VARCHAR( M )
FIXED DECIMAL
FLOAT4 FLOAT
FLOAT8 DOUBLE
INT1 TINYINT
INT2 SMALLINT
INT3 MEDIUMINT
INT4 INT
INT8 BIGINT
LONG VARBINARY MEDIUMBLOB
LONG VARCHAR MEDIUMTEXT
LONG MEDIUMTEXT
MIDDLEINT MEDIUMINT
NUMERIC DECIMAL
оБКДЙ УЧПЙИ ЛПММЕЗ!

чЩ НПЦЕФЕ ОБРТБЧЙФШ РЙУШНП БДНЙОЙУФТБФПТХ ЬФПК УФТБОЙЮЛЙ, бМЕЛУЕА рБХФПЧХ.

Источник

Читайте также:  У собаки обломился коготь что делать
Обучающий онлайн портал