кодесурса
«MYSQL

MySQL CONSTRAINT

script1adsense2code
script1adsense3code

CONSTRAINT

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

MySQL CONSTRAINTS используются для ограничения типа данных, которые могут быть вставлены в таблицу.

MySQL CONSTRAINTS можно разделить на два типа - уровень столбца и уровень таблицы.

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

MySQL CONSTRAINT объявляется во время создания таблицы.

КОНСТРУКТИВЫ MySQL:

  • НЕНУЛЕВОЙ
  • УНИКАЛЬНАЯ
  • ОСНОВНОЙ КЛЮЧ
  • ИНОСТРАННЫЙ КЛЮЧ
  • ПРОВЕРЯТЬ
  • ДЕФОЛТ
CONSTRAINT ОПИСАНИЕ
НЕНУЛЕВОЙ В MySQL ограничение NOT NULL позволяет указать, что столбец не может содержать никакого значения NULL. MySQL NOT NULL может использоваться для создания и изменения таблицы.
УНИКАЛЬНАЯ Ограничение UNIQUE в MySQL не позволяет вставлять повторяющиеся значения в столбец. Ограничение UNIQUE поддерживает уникальность столбца в таблице. В таблице можно использовать несколько столбцов UNIQUE.
ОСНОВНОЙ КЛЮЧ Ограничение PRIMARY KEY для таблицы заставляет таблицу принимать уникальные данные для определенного столбца, и это ограничение создает уникальный индекс для более быстрого доступа к таблице.
ИНОСТРАННЫЙ КЛЮЧ FOREIGN KEY в MySQL создает связь между двумя таблицами одним конкретным столбцом обеих таблиц. Указанный столбец в одной таблице должен быть ПЕРВИЧНЫМ КЛЮЧОМ и указываться столбцом другой таблицы, известной как FOREIGN KEY.
ПРОВЕРЯТЬ Ограничение CHECK контролирует значения в связанном столбце. Ограничение CHECK определяет, является ли значение допустимым или нет из логического выражения.
ДЕФОЛТ В таблице MySQL каждый столбец должен содержать значение (включая NULL). При вставке данных в таблицу, если в столбце не указано значение, столбец получает значение, установленное как DEFAULT.

Синтаксис:

 CREATE TABLE [имя таблицы]                                   
([имя столбца] [тип данных] ([размер]) [ограничение столбца]….
[ограничение таблицы] ([[имя столбца] ……]) ……); 

объяснение

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

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

Содержание:

MySQL CREATE TABLE с пустым ограничением

Используя значение по умолчанию NOT NULL, при создании таблицы MySQL может быть принудительно установлено, что столбцу в таблице не разрешено хранить значения NULL.

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

пример

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

CREATE TABLE IF NOT EXISTS newauthor
(aut_id varchar(8) NOT NULL,	   
aut_name varchar(50) NOT NULL,   
country varchar(25) NOT NULL,	   
home_city varchar(25) NOT NULL ); 

Здесь в приведенном выше операторе ограничение NOT NULL использовалось для исключения значения NULL.

На следующем рисунке показано, что столбцы не будут принимать значения NULL.

«MySQL

MySQL CREATE TABLE для проверки значений с помощью CHECK CONSTRAINT

Добавив CHECK CONSTRAINT в столбец таблицы, вы можете ограничить диапазон значений, разрешенных для хранения в этом столбце.

пример

Если вы хотите создать таблицу 'newbook_mast' с PRIMARY KEY для столбца 'book_id', уникальным ограничением для столбца 'isbn_no' и установить значение no_page таким образом, чтобы оно содержало значения только больше нуля, следующий оператор может быть использован.

CREATE TABLE IF NOT EXISTS 
newbook_mast (book_id varchar(15) NOT NULL UNIQUE,          
book_name varchar(50)  ,           
isbn_no varchar(15)  NOT NULL UNIQUE  ,           
cate_id varchar(8)  ,             
aut_id varchar(8) ,             
pub_id varchar(8) ,            
dt_of_pub date ,             
pub_lang varchar(15) ,           
no_page decimal(5,0) 
CHECK(no_page>0) ,            
book_price decimal(8,2) ,             
PRIMARY KEY (book_id)               
);

Здесь в приведенном выше операторе MySQL создаст таблицу «newbook_mast» с PRIMARY KEY для столбца «book _id», уникальное ограничение для столбца «isbn_no» и добавление CHECK (no_page> 0) установит no_page таким образом, что он будет содержать значения больше нуля только.

MySQL CREATE TABLE с CHECK CONSTRAINT с использованием оператора IN

MySQL CHECK CONSTRAINT может быть применен к столбцу таблицы, чтобы установить предел для хранения значений в диапазоне вместе с оператором IN.

пример

Если вы хотите создать таблицу 'newauthor' с ПЕРВИЧНЫМ КЛЮЧОМ на комбинации из двух столбцов (aut_id, home_city) и проверить предельное значение для страны столбца, это 'USA', 'UK' и 'India', следующий оператор может быть использован.

CREATE TABLE IF NOT EXISTS
newauthor(aut_id varchar(8) NOT NULL , 
aut_name varchar(50) NOT NULL,
country varchar(25) NOT NULL CHECK (country IN ('USA','UK','India')), 
home_city varchar(25) NOT NULL, 
PRIMARY KEY (aut_id,home_city));

Здесь в вышеприведенном операторе MySQL будет создана таблица 'newauthor' с PRIMARY KEY по комбинации двух столбцов (aut_id, home_city) и значение для страны столбца было ограничено с помощью оператора IN.

MySQL CREATE TABLE с оператором CHECK CONSTRAINT и LIKE

MySQL CHECK CONSTRAINT может применяться к столбцу таблицы, чтобы установить предел для хранения значений в диапазоне вместе с оператором LIKE.

пример

Оператор MySQL, указанный ниже, создаст таблицу «newbook_mast» с PRIMARY KEY для столбца «book_id» и ограничением CHECK для ограничения значения, которое будет сохранено для столбца dt_of_pub вместе с оператором LIKE и другим ограничением CHECK для столбца no_page (без использования LIKE оператор).

CHECK (dt_of_pub LIKE '- / - / ----') проверяет, является ли формат сохраняемой даты столбцом dt_of_pub, похожим на '- / - / ----'.

Вот утверждение.

CREATE TABLE IF NOT EXISTS newbook_mast
( book_id	varchar(15) NOT NULL UNIQUE, 
book_name varchar(50) , 
isbn_no varchar(15) NOT NULL UNIQUE ,
cate_id varchar(8) , 
aut_id varchar(8) , 
pub_id varchar(8) ,
dt_of_pub date CHECK (dt_of_pub LIKE '--/--/----'), 
pub_lang varchar(15) ,
no_page decimal(5,0) CHECK(no_page>0) ,
book_price decimal(8,2) ,
PRIMARY KEY (book_id) );
 

MySQL CREATE TABLE с операторами И и ИЛИ и КОНТРОЛЬ ПРОВЕРКИ

MySQL CHECK CONSTRAINT может быть применен к столбцу таблицы, чтобы установить предел для хранения значений в диапазоне вместе с операторами AND и OR.

пример

Оператор MySQL, указанный ниже, создаст таблицу «newpublisher» с PRIMARY KEY для столбца «pub_id» и ограничением CHECK, а также с операторами «И» и «ИЛИ» для столбцов «страна» и «pub_city».

CHECK ((страна = 'Индия' И pub_city = 'Мумбаи') ИЛИ (страна = 'Индия' И pub_city = 'Нью-Дели')) проверяет, (i) страна ли это ИНДИЯ, а pub_city это Мумбаи ИЛИ (ii) страна это ИНДИЯ и pub_city - Нью-Дели.

В руководстве по MySQL говорится: «Предложение CHECK анализируется, но игнорируется всеми механизмами хранения».

Вот утверждение.

CREATE TABLE IF NOT EXISTS newpublisher
(pub_id varchar(8) ,
pub_name varchar(50),
pub_city varchar(25) ,          
country varchar(25) ,
country_office varchar(25) ,
no_of_branch int(3),          
estd date 
CHECK ((country='India' AND pub_city='Mumbai')            
OR (country='India' AND pub_city='New Delhi')) , 
PRIMARY KEY (pub_id) );

MySQL УНИКАЛЬНОЕ ОГРАНИЧЕНИЕ

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

пример

Оператор MySQL, указанный ниже, создаст таблицу «newauthor» со столбцом «aut_id», в котором будут храниться уникальные значения только с тех пор, как используется UNIQUE (aut_id).

CREATE TABLE IF NOT EXISTS 
newauthor(aut_id varchar(8) NOT NULL ,
aut_name varchar(50)
NOT NULL,
country varchar(25) NOT NULL,
home_city varchar(25)
NOT NULL, 
UNIQUE (aut_id)); 

На рисунке ниже показана структура таблицы.

«MySQL

Пример проверки уникального значения MySQL UNIQUE CONSTRAINT

Оператор MySQL, указанный ниже, создаст таблицу «newauthor» со столбцом «aut_id», который предназначен для хранения только уникальных значений. Обратите внимание, что в определении столбца используется UNIQUE

CREATE TABLE IF NOT EXISTS 
newauthor(aut_id varchar(8) NOT NULL UNIQUE ,
aut_name varchar(50) NOT NULL,
country varchar(25) 
NOT NULL,
home_city varchar(25) NOT NULL);

Следующая картинка показывает структуру таблицы

«MySQL

MySQL CREATE TABLE с ограничением по умолчанию

При создании таблицы MySQL позволяет назначать столбцы DEFAULT CONSTRAINTS. DEFAULT используется для установки значения по умолчанию для столбца и применяется с помощью DEFAULT default_value; где default_value - это значение по умолчанию, установленное для столбца.

пример

Приведенный ниже оператор MySQL создаст таблицу «newpublisher» с PRIMARY KEY для столбца «pub_id», ограничением CHECK с логическими операторами для столбцов страны и города-паба и значением по умолчанию для столбцов pub_id, pub_name, pub_city и country.

Оператор MySQL также устанавливает пустое пространство по умолчанию для столбцов pub_id, pub_name, pub_city и «India» в качестве значения по умолчанию для столбца страны.

Вот утверждение ниже.

CREATE TABLE IF NOT EXISTS newpublisher
(pub_id varchar(8) NOT NULL UNIQUE DEFAULT '' ,           
pub_name varchar(50) NOT NULL  DEFAULT '' ,          
pub_city varchar(25) NOT NULL  DEFAULT '' ,          
country varchar(25) NOT NULL DEFAULT 'India',          
country_office varchar(25) , 
no_of_branch int(3),        
estd date
CHECK ((country='India' AND pub_city='Mumbai')
OR (country='India' AND pub_city='New Delhi')) ,
PRIMARY KEY (pub_id));

MySQL CREATE TABLE с автоматическим увеличением

MySQL позволяет вам установить AUTO_INCREMENT для столбца. Это автоматически увеличит значение этого столбца на 1 при каждом добавлении новой записи.

пример

Оператор MySQL, указанный ниже, создаст таблицу 'newauthor' с PRIMARY KEY для столбца 'id', а столбец 'id' - это поле с автоматическим приращением.

CREATE TABLE IF NOT EXISTS newauthor
(id int NOT NULL AUTO_INCREMENT,
aut_id varchar(8),   
aut_name varchar(50),
country varchar(25),
home_city varchar(25) NOT NULL,
PRIMARY KEY (id));
 

MySQL PRIMARY KEY CONSTRAINT

Как правило, таблица имеет столбец или комбинацию столбцов, которые содержат значения, используемые для уникальной идентификации каждой строки в таблице. Этот столбец или комбинация столбцов называется PRIMARY KEY и может быть создан с помощью определения PRIMARY KEY CONSTRAINT при создании таблицы. Таблица может иметь только один ПЕРВИЧНЫЙ КЛЮЧ. Столбец PRIMARY KEY не может содержать значения NULL.

пример

Оператор MySQL, указанный ниже, создаст таблицу 'newauthor', в которой PRIMARY KEY установлен в столбец aut_id.

CREATE TABLE IF NOT EXISTS
newauthor(aut_id varchar(8) NOT NULL ,   
aut_name varchar(50) NOT NULL, 
country varchar(25) NOT NULL,
home_city varchar(25) NOT NULL,         
PRIMARY KEY (aut_id)); 

MySQL CREATE TABLE PRIMARY KEY CONSTRAINT для одного столбца

В этом разделе мы обсудили, как установить ПЕРВИЧНОЕ КЛЮЧЕВОЕ КЛЮЧЕВОЕ НА столбце таблицы.

пример

Оператор MySQL, указанный ниже, создаст таблицу 'newauthor', в которой PRIMARY KEY установлен в столбец aut_id. Обратите внимание, что здесь ключевое слово PRIMARY KEY используется в определении столбца.

CREATE TABLE IF NOT EXISTS 
newauthor(aut_id varchar(8) NOT NULL  PRIMARY KEY,	   
aut_name varchar(50) NOT NULL, 
country varchar(25) 
NOT NULL, 
home_city varchar(25) NOT NULL);

MySQL CREATE TABLE PRIMARY KEY UNIQUE CONSTRAINT

В этом разделе мы обсудили, как установить PRIMARY KEY, а также ограничения UNIQUE для столбцов таблицы при создании таблицы с помощью команды CREATE TABLE.

пример

Оператор MySQL, указанный ниже, создаст таблицу 'newauthor', в которой PRIMARY KEY установлен в столбец aut_id, а UNIQUE - в столбец home_city.

CREATE TABLE IF NOT EXISTS
newauthor(aut_id varchar(8) NOT NULL  PRIMARY KEY,
aut_name varchar(50) NOT NULL,
country varchar(25) NOT NULL, 
home_city varchar(25) NOT NULL UNIQUE); 

MySQL CREATE TABLE PRIMARY KEY на нескольких столбцах

MySQL позволяет вам установить PRIMARY KEY для нескольких столбцов таблицы. Это позволяет вам работать с несколькими столбцами как с одной сущностью, установленной в качестве PRIMARY KEY для таблицы.

пример

Оператор MySQL, указанный ниже, создаст таблицу 'newauthor', в которой PRIMARY KEY устанавливается с комбинацией столбцов aut_id и home_city.

CREATE TABLE IF NOT EXISTS 
newauthor(aut_id varchar(8) NOT NULL ,
aut_name varchar(50) NOT NULL,
country varchar(25) NOT NULL,   
home_city varchar(25) NOT NULL, 
PRIMARY KEY (aut_id, home_city)); 

MySQL создает таблицу с FOREIGN KEY CONSTRAINT

При создании (или изменении) таблицы MySQL вы можете установить FOREIGN KEY CONSTRAINT для столбца таблицы. Внешний ключ - это столбец или комбинация столбцов, которые можно использовать для установления связи между данными в двух таблицах. Первичный ключ таблицы связан с внешним ключом другой таблицы для повышения целостности данных.

Синтаксис:

 FOREIGN KEY [список столбцов] ССЫЛКИ [таблица первичных ключей] ([список столбцов]); 

аргументы

название Описание
список столбцов Список столбцов, для которых должен быть установлен FOREIGN KEY.
РЕКОМЕНДАЦИИ Ключевое слово.
таблица первичных ключей Имя таблицы, которая содержит ПЕРВИЧНЫЙ КЛЮЧ.
список столбцов Список столбцов, для которых PRIMARY KEY установлен в таблице первичного ключа.

пример

Если вы хотите выполнить следующие задачи:

Будет создана новая таблица 'newbook_mast'.

ПЕРВИЧНЫЙ КЛЮЧ для этой таблицы «newbook_mast» - «book_id».

КЛЮЧЕВОЙ КЛЮЧ для таблицы «newbook_mast» - «aut_id».

'Aut_id' - это ПЕРВИЧНЫЙ КЛЮЧ для таблицы 'newauthor'.

КЛЮЧЕВОЙ КЛЮЧ «aut_id» для таблицы «newbook_mast» указывает на ПЕРВИЧНЫЙ КЛЮЧ «aut_id» таблицы «newauthor».

Это означает, что 'aut_id', которые присутствуют в таблице 'newauthor', только те авторы, которые придут в таблицу 'newbook_mast'.

Вот инструкция MySQL ниже для вышеупомянутых задач.

CREATE TABLE IF NOT EXISTS newbook_mast 
(book_id varchar(15) NOT NULL PRIMARY KEY,
book_name varchar(50)  ,
isbn_no varchar(15)  NOT NULL  ,
cate_id varchar(8)  , 
aut_id varchar(8) , 
pub_id varchar(8) ,          
dt_of_pub date ,
pub_lang varchar(15) ,
no_page decimal(5,0) ,         
book_price decimal(8,2) ,
FOREIGN KEY (aut_id) REFERENCES newauthor(aut_id));

MySQL CREATE TABLE с FOREIGN KEY CONSTRAINT на нескольких столбцах

MySQL позволяет назначать FOREIGN KEY CONSTRAINTS для нескольких столбцов таблицы. При этом для нескольких столбцов таблицы устанавливаются первичные ключи, на которые ссылаются FOREIGN KEY CONSTRAINT, принадлежащие разным таблицам.

пример

Если вы хотите выполнить следующие задачи:

Будет создана новая таблица 'newpurchase'.
Первичным ключом для этой таблицы 'newpurchase' является 'invoice_no'.
Единый FOREIGN KEY для таблицы «newpurchase» представляет собой комбинацию «ord_no» и «book_id».
Другой ключ FOREIGN для таблицы 'newpurchase' - это 'cate_id'.
Комбинация 'ord_no' и 'book_id' является ПЕРВИЧНЫМ КЛЮЧОМ для таблицы 'neworder'.
'Cate_id' является ПЕРВИЧНЫМ КЛЮЧОМ для таблицы 'category'.
Комбинация FOREIGN KEY 'ord_no' и 'book_id' для таблицы 'newpurchase', которая указывает на комбинацию PRIMARY KEY 'ord_no' и 'book_id' таблицы 'neworder'.
Это означает, что отдельная комбинация ("ord_no" и "book_id"), присутствующая в таблице "neworder", будет содержать только те уникальные комбинации "номер заказа" и "идентификатор книги", которые появятся в таблице "newpurchase".

Другой FOREIGN KEY 'cate_id' для таблицы 'newpurchase', который указывает на ПЕРВИЧНЫЙ КЛЮЧ 'cate_id' таблицы 'category'. Это означает, что 'cate_id', которые присутствуют в таблице 'category', только те 'category' появятся в таблице 'newpurchase'.

Вот инструкция MySQL ниже для вышеупомянутых задач.

CREATE TABLE IF NOT EXISTS newpurchase
(invoice_no varchar(12) NOT NULL UNIQUE PRIMARY KEY,
invoice_dt date ,
ord_no varchar(25) ,
ord_date date ,
receive_dt date ,
book_id varchar(8) ,
book_name varchar(50) ,
pub_lang varchar(8) ,
cate_id varchar(8) ,
receive_qty int(5) ,
purch_price decimal(12,2) ,
total_cost decimal(12,2) ,
INDEX (ord_no,book_id),
FOREIGN KEY(ord_no,book_id) REFERENCES  neworder(ord_no,book_id),   
INDEX (cate_id),
FOREIGN KEY(cate_id) REFERENCES  category(cate_id));

MySQL CREATE TABLE с FOREIGN KEY CONSTRAINT для нескольких таблиц

MySQL позволяет назначать FOREIGN KEY CONSTRAINTS для нескольких таблиц. При этом для нескольких столбцов таблицы устанавливается FOREIGN KEY CONSTRAINT, на которую ссылаются PRIMARY KEY, принадлежащие разным таблицам.

пример

Если вы хотите выполнить следующие задачи:

Будет создана новая таблица 'newbook_mast'.
ПЕРВИЧНЫЙ КЛЮЧ для этой таблицы «newbook_mast» - «book_id».
Единственный FOREIGN KEY для таблицы 'newbook_mast' - это 'aut_id'.
Другой ключ FOREIGN для таблицы 'newbook_mast' - это pub_id.
'Aut_id' - это ПЕРВИЧНЫЙ КЛЮЧ для таблицы 'newauthor'.
'Pub_id' - это ПЕРВИЧНЫЙ КЛЮЧ для таблицы 'newpublisher'.
КЛЮЧЕВОЙ КЛЮЧ «aut_id» для таблицы «newbook_mast», который указывает на ПЕРВИЧНЫЙ КЛЮЧ «aut_id» таблицы «newauthor».
Это означает, что «aut_id», присутствующие в таблице «nuwauthor», будут доступны только тем авторам, которые находятся в таблице «newbook_mast».
Другой FOREIGN KEY 'pub_id' для таблицы 'newbook_mast', который указывает на PRIMARY KEY 'pub_id' таблицы 'newpublisher'.
Это означает, что «pub_id», присутствующий в таблице «newpublisher», только те издатели, которые попадают в таблицу «newbook_mast».

Вот инструкция MySQL ниже для вышеупомянутых задач.

CREATE TABLE IF NOT EXISTS 
newbook_mast (book_id varchar(15) NOT NULL PRIMARY KEY,          
book_name varchar(50)  , 
isbn_no varchar(15)  NOT NULL  , 
cate_id varchar(8), 
aut_id varchar(8) ,
pub_id varchar(8) , 
dt_of_pub date , 
pub_lang varchar(15) ,           
no_page decimal(5,0) , 
book_price decimal(8,2) ,
INDEX (aut_id), 
FOREIGN KEY(aut_id) REFERENCES newauthor(aut_id), 
INDEX(pub_id),
FOREIGN KEY(pub_id) REFERENCES newpublisher(pub_id) );

MySQL CREATE TABLE с каскадом и ограничением

MySQL позволяет создавать таблицы с опциями CASCADE и RESTRICT.

Опция CASCADE удаляет или обновляет строку из родительской таблицы (содержащей PRIMARY KEYs) и автоматически удаляет или обновляет совпадающие строки в дочерней таблице (содержащей FOREIGN KEYs).

Опция RESTRICT запрещает удаление (т. Е. Удаление) или изменение (т. Е. Обновление) строк из родительской таблицы.

пример

Если вы хотите выполнить следующие задачи:

Будет создана новая таблица 'newpurchase'.
Первичным ключом для этой таблицы 'newpurchase' является 'invoice_no'.
Единый FOREIGN KEY для таблицы «newpurchase» представляет собой комбинацию «ord_no» и «book_id».
Другой ключ FOREIGN для таблицы 'newpurchase' - это 'cate_id'.
Комбинация 'ord_no' и 'book_id' является ПЕРВИЧНЫМ КЛЮЧОМ для таблицы 'neworder'.
'Cate_id' является ПЕРВИЧНЫМ КЛЮЧОМ для таблицы 'category'.
Комбинация FOREIGN KEY 'ord_no' и 'book_id' для таблицы 'newpurchase', которая указывает на комбинацию PRIMARY KEY 'ord_no' и 'book_id' таблицы 'neworder'. Это означает, что отдельная комбинация (ord_no и book_id), присутствующая в таблице «neworder», будет содержать только те уникальные комбинации «номер заказа» и «идентификатор книги», которые появятся в таблице «newpurchase».
Другой FOREIGN KEY 'cate_id' для таблицы 'newpurchase', который указывает на ПЕРВИЧНЫЙ КЛЮЧ 'cate_id' таблицы 'category'. Это означает, что 'cate_id', которые присутствуют в таблице 'category', только те 'category' появятся в таблице 'newpurchase'.
ON UPDATE CASCADE гарантирует, что записи внутри дочерней таблицы «newpurchase» всегда указывают на ПЕРВИЧНЫЙ КЛЮЧ внутри родительской таблицы «neworder».
Если какая-либо запись удаляется / обновляется из таблицы «neworder», MySQL обрабатывает удаление / обновление записей из таблицы «newpurchase».
ON DELETE RESTRICT предотвращает удаление или изменение записи в родительской таблице «neworder», если на нее все еще ссылаются из дочерней таблицы «newpurchase».

Вот инструкция MySQL ниже для вышеупомянутых задач.

CREATE TABLE IF NOT EXISTS newpurchase
(invoice_no varchar(12) NOT NULL UNIQUE PRIMARY KEY,     
invoice_dt date ,  
ord_no varchar(25) ,    
ord_date date ,    
receive_dt date ,      
book_id varchar(8) , 
book_name varchar(50) ,
pub_lang varchar(8) , 
cate_id varchar(8) , 
receive_qty int(5) , 
purch_price decimal(12,2) ,
total_cost decimal(12,2) , 
INDEX (ord_no,book_id),
FOREIGN KEY(ord_no,book_id) REFERENCES         
neworder(ord_no,book_id)
ON UPDATE CASCADE ON DELETE RESTRICT,  
INDEX (cate_id),
FOREIGN KEY(cate_id) REFERENCES category(cate_id))

MySQL CREATE TABLE с SET NULL

MySQL позволяет вам создать таблицу с опцией SET NULL. Это приведет к удалению или обновлению строки из родительской таблицы, а также к столбцу или столбцам внешнего ключа в дочерней таблице равным NULL.

Вы можете использовать SET NULL для DELETE, а также UPDATE.

Если используется SET NULL, вы не должны устанавливать опции NOT NULL для столбцов дочерней таблицы (содержащей FOREIGN KEYS).

пример

Если вы хотите выполнить следующие задачи:

Будет создана новая таблица «newpurchase».
Первичным ключом для этой таблицы 'newpurchase' является 'invoice_no'.
Единый FOREIGN KEY для таблицы «newpurchase» представляет собой комбинацию «ord_no» и «book_id».
Другой ключ FOREIGN для таблицы 'newpurchase' - это 'cate_id'.
Комбинация 'ord_no' и 'book_id' является ПЕРВИЧНЫМ КЛЮЧОМ для таблицы 'neworder'.
'Cate_id' является ПЕРВИЧНЫМ КЛЮЧОМ для таблицы 'category'.
Комбинация FOREIGN KEY 'ord_no' и 'book_id' для таблицы 'newpurchase', которая указывает на комбинацию PRIMARY KEY 'ord_no' и 'book_id' таблицы 'neworder'. Это означает, что отдельная комбинация (ord_no и book_id), присутствующая в таблице «neworder», будет содержать только те уникальные комбинации «номер заказа» и «идентификатор книги», которые появятся в таблице «newpurchase».

Другой FOREIGN KEY 'cate_id' для таблицы 'newpurchase', который указывает на ПЕРВИЧНЫЙ КЛЮЧ 'cate_id' таблицы 'category'. Это означает, что 'cate_id', которые присутствуют в таблице 'category', только те 'category' появятся в таблице 'newpurchase'.
ON UPDATE SET NULL рекурсивно обновляет таблицу 'newpurchase', которую он уже обновил во время каскада, он действует как RESTRICT. Это предотвращает бесконечные циклы, возникающие в результате каскадных обновлений.

Вот инструкция MySQL ниже для вышеупомянутых задач.

CREATE TABLE IF NOT EXISTS newpurchase
(invoice_no varchar(12) NOT NULL UNIQUE PRIMARY KEY,       
invoice_dt date , 
ord_no varchar(25) ,
ord_date date ,
receive_dt date ,      
book_id varchar(8) ,
book_name varchar(50) ,
pub_lang varchar(8) ,     
cate_id varchar(8) , 
receive_qty int(5) , 
purch_price decimal(12,2) ,   
total_cost decimal(12,2) , 
INDEX (ord_no,book_id),
FOREIGN KEY(ord_no,book_id) REFERENCES neworder
(ord_no,book_id)
ON UPDATE CASCADE ON DELETE 
SET NULL,
INDEX (cate_id),
FOREIGN KEY(cate_id) REFERENCES category(cate_id));

MySQL CREATE TABLE без каких-либо действий

НЕТ ДЕЙСТВИЯ в MySQL эквивалентно ОГРАНИЧЕНИЮ.

пример

Если вы хотите выполнить следующие задачи:

Будет создана новая таблица «newpurchase».
Первичным ключом для этой таблицы 'newpurchase' является 'invoice_no'.
Единый FOREIGN KEY для таблицы «newpurchase» представляет собой комбинацию «ord_no» и «book_id».
Другой ключ FOREIGN для таблицы 'newpurchase' - это 'cate_id'.
Комбинация 'ord_no' и 'book_id' является ПЕРВИЧНЫМ КЛЮЧОМ для таблицы 'neworder'.
'Cate_id' является ПЕРВИЧНЫМ КЛЮЧОМ для таблицы 'category'.
Комбинация FOREIGN KEY 'ord_no' и 'book_id' для таблицы 'newpurchase', которая указывает на комбинацию PRIMARY KEY 'ord_no' и 'book_id' таблицы 'neworder'. Это означает, что отдельная комбинация (ord_no и book_id), присутствующая в таблице «neworder», будет содержать только те уникальные комбинации «номер заказа» и «идентификатор книги», которые появятся в таблице «newpurchase».
Другой FOREIGN KEY 'cate_id' для таблицы 'newpurchase', который указывает на ПЕРВИЧНЫЙ КЛЮЧ 'cate_id' таблицы 'category'. Это означает, что 'cate_id', которые присутствуют в таблице 'category', только те 'category' появятся в таблице 'newpurchase'.
ON DELETE NO ACTION предотвращает удаление или изменение записи в родительском 'neworder', когда на нее все еще ссылаются из дочерней таблицы 'newpurchase'.

Вот инструкция MySQL ниже для вышеупомянутых задач.

CREATE TABLE IF NOT EXISTS 
newpurchase (invoice_no varchar(12) NOT NULL UNIQUE PRIMARY KEY,        
invoice_dt date ,
ord_no varchar(25) ,
ord_date date ,
receive_dt date ,       
book_id varchar(8) ,
book_name varchar(50) , 
pub_lang varchar(8) ,
cate_id varchar(8) , 
receive_qty int(5) , 
purch_price decimal(12,2) ,
total_cost decimal(12,2) ,
INDEX (ord_no,book_id),
FOREIGN KEY(ord_no,book_id) REFERENCES         
neworder(ord_no,book_id)
ON UPDATE CASCADE ON DELETE NO ACTION,       
INDEX (cate_id),
FOREIGN KEY(cate_id) REFERENCES category(cate_id));

Предыдущий: Загрузка данных в таблицу и использование ограничителя строки
Далее: MySQL CREATE INDEX

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code