MySQL: рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдкреНрд╕ рдХреЛ рддреЛрдбрд╝рдирд╛

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВ рдЕрдХреНрд╕рд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реНрдХреЛрдВ рдкрд░ рдЖрдирд╛ рд╢реБрд░реВ рд╣реБрдЖ рдХрд┐ MySQL рдЦрд░рд╛рдм рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдмреБрд░рд╛ рд╣реИ - рдХреНрдпреЛрдВрдХрд┐ ... рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╡рд┐рднрд┐рдиреНрди MySQL рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рд╣реИрдВ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдХреЛрдИ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЖрд╢реНрдЪрд░реНрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЧрд▓рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдХрд┐рд╕реА рдиреЗ myIsam рдЗрдВрдЬрди рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЗрди рдЖрдзрд╛рд░реЛрдВ рдкрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рд╣реИ рдХрд┐ MySQL рдмреЗрдХрд╛рд░ рд╣реИ - рдЬрд┐рд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ рд╣рд╛рдБ - рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдиреНрдп рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдФрд░ рдХрдо рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЫреЛрдЯрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ NULL рд╢реВрдиреНрдп рд╣реИред

NULL рдПрдХ рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрд╕реЗ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред MySQL рдореЗрдВ Oracle (рдЬреИрд╕реЗ NULL рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ) рдореЗрдВ рдРрд╕реА рдХреЛрдИ рд╡рд┐рдХреГрддрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВ, рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдардВрдбрд╛ рд╣реИред рдПрдХ рдУрд░, NULL рд╢реВрдиреНрдп рд╣реИред рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рддрд╛рд▓рд┐рдХрд╛ null_equals_zero рдФрд░ рдЗрд╕реЗ 4 рдХреЙрд▓рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдХреЙрд▓рдо рдирдВрдмрд░ 2 рдХреЗ рд╕рд╛рде рднрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рд╕рдореВрд╣ null_equals_zero ред
 create table null_equals_zero(int_value int, group_value int ) engine = innodb; insert into null_equals_zero values (null, 1), (0, 2), (NULL, 3), (0, 4); select distinct int_value from null_equals_zero group by group_value; 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпрд╣ рдХреНрд╡реЗрд░реА рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдХреЗ рдЕрдиреВрдареЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдУрд░ рд▓реМрдЯрд╛рдПрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ, рджреЛ: рд╢реВрдиреНрдп рдФрд░ рдкреВрд░реНрдг
рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реЛрдЧрд╛? 0, NULL, рдпрд╛ рджреЛрдиреЛрдВ?
 +-----------+ | int_value | +-----------+ | NULL | +-----------+ 1 row in set (0.00 sec) 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП NULL рд╣реИ рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ NULL рд╕рдорд╛рди рд╣реИрдВ

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ NULL рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд╛рдмрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ NULL рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдЖрдЗрдП рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ: least - рдЬреЛ рд╕реВрдЪреАрдмрджреНрдз рддрд░реНрдХреЛрдВ рд╕реЗ рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдФрд░ elt - рдЬреЛ рдкрд╣рд▓реЗ рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рдкрд░ рдореВрд▓реНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдирд╣реАрдВ рд╣реИ, рдЙрдирдХреЗ рдкрд╛рд╕ рд╕рд╡рд╛рд▓ рд╣реИ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рдпреЛрдЧ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо 2 рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗ:
 select least(1, null) cmp_res; +---------+ | cmp_res | +---------+ | NULL | +---------+ 1 row in set (0.00 sec) select elt(null, '   NULL') null_index_field; +------------------+ | null_index_field | +------------------+ | NULL | +------------------+ 1 row in set (0.00 sec) 

рдЬрдм рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ NULL рдПрдХ рддрд░рдл рдЕрддреБрд▓рдиреАрдп рд╣реИ, рдФрд░ NULL рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдХреЛрдИ рддрддреНрд╡ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдЗрдП рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕реБрдкрд░рдкреЛрдЬрд╝рд┐рд╢рди рдХрд┐рд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ?
 select elt(least(1, null), '1 < null') null_is_to_big; 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЪрддреБрд░ рдкрд╛рдардХ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рдЙрддреНрддрд░ рдХреНрдпрд╛ рд╣реЛрдЧрд╛
 +----------------+ | null_is_to_big | +----------------+ | 1 < null | +----------------+ 1 row in set (0.00 sec) 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ 2 рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВ, рдпрд╛ рддреЛ NULL 1 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ рдпрд╛ рдЖрдк NULL рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдПрдХ рдПрд▓реАрдореЗрдВрдЯ рддрддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ NULL рдХреА рддрд░рд╣ рд╣реИ, рдЬреЛ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ ...

рдЕрдм рдЧрдгрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реА рдХрдХреНрд╖рд╛ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдирдВрдмрд░ 0. рдХрд┐рд╕ рд╕рдВрдХреЗрдд рдкрд░ рд╣реИред рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓реЗрдВ, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╣реА рдкрддрд╛ рдЪрд▓ рдЧрдпрд╛ рдерд╛ рдХрд┐ MySQL рдбреЗрд╡рд▓рдкрд░реНрд╕ рднрдпрд╛рдирдХ рдЯреНрд░реЛрд▓ рд╣реИрдВред рдЖрдЗрдП рдЗрд╕реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдВрдЪреЗрдВред рдФрд░ рдРрд╕рд╛ рд╣реИред рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд╢реВрдиреНрдп рдХреЗ рдХрд░реАрдм рджреЛ рдорд╛рди рдбрд╛рд▓реЗрдВ - рд╕рдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХред
 create table signed_zero (float_value float); insert into signed_zero(float_value) values (-0.1), (0.1); select group_concat(round(float_value) separator '   ') signed_zero from signed_zero group by round(float_value); 

рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмрд╛рдХреА рд╣реИ рдХрд┐ MySQL рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рд╛рдЗрди рд╢реВрдиреНрдп рдкрд░ рдХреНрдпрд╛ рд╣реИ
 +----------------------+ | signed_zero | +----------------------+ | -0   0 | +----------------------+ 1 row in set (0.00 sec) 

рдЦреИрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рднреА рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдирд╣реАрдВ рд╣реИ - рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрднреА рддрдХ рдлреИрд╕рд▓рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ

рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдЧрдгрд┐рдд рд╕реЗ рдкрдЪрддреЗ рд╣реИрдВ рдФрд░ рдЕрд╕рдВрднрд╡ рд╡рд╕реНрддреБрдУрдВ рдХреА рдУрд░ рдмрдврд╝рддреЗ рд╣реИрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ MySQL рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдмрдирд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ (рдЙрджреНрдзрд░рдг рдХреЗ рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд)ред рдЖрдЗрдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЪрд▓реЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (рдПрдХ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдХреЗ рдмрд┐рдирд╛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛)ред
 create table `dictionary_one` (`dict_id` int(10) primary key) engine = innodb; create table `already_exists`( `pk_id` int(10) primary key, `ref_dict_one_id` int(10), constraint `Already_exists_ibfk_1` foreign key(`ref_dict_one_id`) references `dictionary_one`(`dict_id`) ); 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЬреИрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдм - рдПрдХ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрджрд░реНрднрд┐рдд рдПрдХ рдФрд░ рдХреЙрд▓рдо рдЬреЛрдбрд╝реЗрдВред
 create table `dictionary_two` (`dict_id` int(10) primary key) engine = innodb; alter table `already_exists` add column `ref_dict_two_id` int(10), add foreign key `Already_exists_ibfk_2`(`ref_dict_two_id`) references `dictionary_two`(`dict_id`); 

рдХреЛрдИ рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдкрдХреЛ рдирд┐рд░рд╛рд╢ рдХрд░реЗрдЧреА
 ERROR 1050 (42S01): Table './test/already_exists' already exists 1 row in set (0.00 sec) 

рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ? рдирд╛рдо рдЧрд▓рдд рд╣реИ, рдФрд░ рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЗрдиреЛрдмреА рдЗрдВрдЬрди рдХреА рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ
рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдмрд╛рдзрд╛ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рддреНрд░реБрдЯрд┐ `рдкрд░реАрдХреНрд╖рдг`ред` рдкрд╣рд▓реЗ рд╕реЗ рд╣реА \ _ред
рдирд╛рдо рдХрд╛ рдПрдХ рд╡рд┐рджреЗрд╢реА рдореБрдЦреНрдп рдЕрд╡рд░реЛрдз `рдЯреНрд░рд╛рдВрд╕`.` рдСрд▓рд░реЗрдбреА_рдПрдХреНрд╕рд┐рд╕реНрдЯ_рдЗрдмрдлреЗрдХ`` рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред (рдУрд╣ рдареАрдХ рд╣реИ! рдореИрдВрдиреЗ рдЕрдбрд╝рдЪрди рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Already_exists_ibfk_2 )
рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб: рдЕрдкрдиреЗ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдирд╛рдо рджреЗрдВред (рд╣рд╛рдВ рд╣рд╛рдВ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рд╕реАрдИрдкреА рд╕реЛрдИ рдирд╣реАрдВ рд╣реИ)
InnoDB: рдирд╛рдордХрд░рдг рддрд╛рд▓рд┐рдХрд╛ `test`.` # sql-37fc_3` to` test`.`already_exists` рд╡рд┐рдлрд▓!
рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ? рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдХрд╣реАрдВ рдЗрдВрдЬрди рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХрд╣реАрдВ рдирд╣реАрдВред рддреЛ рдпрд╣ рд╣рдорд╛рд░рд╛ рднрд╛рдЧреНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛ рд▓реА рдЬрд╛рдП рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рд╣реЛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ

рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рд╕рднреА рдордВрдЪреЛрдВ рдореЗрдВ рдЖрдИрдкреАрд╡реА 6 рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рде рд╣реА рд╕рд╡рд╛рд▓ рдЧрдбрд╝рдмрдбрд╝рд╛ рд░рд╣рд╛ рдерд╛ред IP рдкрддреЗ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ? рдЕрд▓рдЧ-рдЕрд▓рдЧ рдзрд╛рд░рдгрд╛рдПрдВ DECIMAL(39) 2bigint(20) DECIMAL(39) , 2bigint(20) , binary , 2bigint(20) ред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд╕рдордЭреМрддреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ bigint рдХреЗрд╡рд▓ 20 рд╡рд░реНрдгреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдХреИрд╕реЗ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛? рд╡реИрд╕реЗ рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдирд╛ рднреА рдЖрд╕рд╛рди рд╣реИред
 create table new_unlimited_table as select cast(substr(repeat(' ', 21848), 10) as signed integer) new_bigint_field; select column_type from information_schema.columns where table_name = 'new_unlimited_table' and table_schema = database() and column_name = 'new_bigint_field'; 


рдЦреИрд░, рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рддрдиреЗ рд╡рд░реНрдг рд╣реИрдВ
 +---------------+ | column_type | +---------------+ | bigint(65535) | +---------------+ 1 row in set (0.00 sec) 

рд╢рд╛рдВрдд? рдЕрдм рдЖрдк рдкреНрд░рддрд┐рдХреГрддрд┐ рдФрд░ рдмрд╛рдж рдХреЗ рд╕рднреА рдЙрджрд╛рд╕реАрдирддрд╛ рдХреЛ рдЕрд▓рд╡рд┐рджрд╛ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЬрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛ рдЙрддрдирд╛ рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИред рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирд╣реАрдВред рд╣рдо рдЖрд╕рд╛рди рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЪрд▓реЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ: рд╣рдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреЗрд╡рд▓ 2 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓рд┐рдЦреЗрдВрдЧреЗред рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╕реАрдзреЗ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ, рдлрд┐рд░ рд░рд┐рд╡рд░реНрд╕ рдореЗрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде 2 рдмрд╛рд░ рдЪреБрдирдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
 create table data_ordering (varchar_value varchar(10)); insert into data_ordering values (''), ('string'); select * from data_ordering where 'string' regexp varchar_value; +---------------+ | varchar_value | +---------------+ | string | +---------------+ 1 row in set (0.00 sec) 

рдЬрдмрдХрд┐ рд╕рдм рдХреБрдЫ рд╕рдЪ рд╣реИ рдФрд░ рдзреЛрдЦрд╛рдзрдбрд╝реА рдХреЗ рдмрд┐рдирд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣рдорд╛рд░реА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддреА рд╣реИред рдЕрдм рдЙрд▓реНрдЯреЗ рдХреНрд░рдо рдореЗрдВред
 delete from data_ordering; insert into data_ordering values ('string'), (''); select * from data_ordering where 'string' regexp varchar_value; 

рд╕рдорд╛рди рдкрдВрдХреНрддрд┐рдпрд╛рдБ - рд╕рдорд╛рди рдЕрдиреБрд░реЛрдз
рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмрд╛рдХреА рд╣реИ рдХрд┐ 2 рдХреА рдХрд┐рддрдиреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдПрдХ рд╣реА рдорд╛рдирджрдВрдб рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИрдВ
 +---------------+ | varchar_value | +---------------+ | string | | | +---------------+ 2 rows in set (0.00 sec) 

рдУрд╣! рдареАрдХ рджреЛ ... рдФрд░ рдкрд╣рд▓реА рдмрд╛рд░? ... рдПрдХ? рдореЗрдВ, рдЕрдм рдФрд░ рдирд╣реАрдВ рдПрдХ рдЕрд▓рдЧ рдЖрджреЗрд╢ рдкреБрдЯ рдореЗрдВ рдЖрд╣ рд╣рд╛рдБ рдореИрдВ рдПрдХ рд╣реА рдбреЗрдЯрд╛, рдЦреЗрдж ...


рддреЛ рдореИрдВ рдпрд╣ рд╕рдм рдХрд┐рд╕ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реВрдВ? рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдЪрд╛рд▓ рдХрд╣реАрдВ рд╕реЗ рднреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдпрд╣ рддрдереНрдп рдХрд┐ MySQL рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЬрдм рд╡рд┐рдкрд░реАрдд рд╕рдЪ рд╣реИ рддреЛ рдмрд╣реБрдд рдмреБрд░рд╛ред рдирдпрд╛ рд╕рд╛рд▓ рдореБрдмрд╛рд░рдХ рд╣реЛ!


Source: https://habr.com/ru/post/In164085/


All Articles