Sql Scholl
Распечатать страницу
Перейти на главную Карта сайта Отправить сообщение

Добавление данных

Добавление полных строк

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

     Вот пример:

INSERT INTO Customers VALUES('1000000006' ,
'Toy Land', '123 Any Street',
'New York' ,
'NY' ,
'11111 ,
'USA',
NULL, NULL);

     В этом примере в таблицу добавляются сведения о новом клиенте. Данные, которые должны быть сохранены в каждом столбце таблицы, указываются в условии VALUES, значения должны быть приведены для каждого столбца. Если для какого-то столбца не имеется соответствующего значения (например, как это произошло для столбцов cust^contact и cust_eraail в данном примере), следует использовать значение NULL (предполагается, что для данной таблицы разрешено не указывать значения в этих столбцах). Столбцы должны заполняться в порядке, в котором они появились в определении таблицы.

Ключевое слово INTO

В некоторых реализациях SQL вслед за оператором insert опционально указывается ключевое слово into. Однако хорошим тоном считается указание этого ключевого слова даже в случаях, когда это не является необходимым. Поступая таким образом, вы обеспечите переносимость своего кода между СУБД.

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

      Безопасный (и, к сожалению, более громоздкий) способ записи оператора INSERT таков:

INSERT INTO Customers(cust_id, cust_name,
cust_address,
cust_city, cust_state,
cust_ZIP,
cust_country,
cust_contact,
cust_email) VALUES('1000000006',
'Toy Land',
'123 Any Street1,
'New York',
'NY' ,
'11111', 'USA',
NULL,
NULL);

     В этом примере делается в точности то же самое, что и в предыдущем варианте применения оператора INSERT, но на этот раз имена столбцов явно указаны в круглых скобках, следующих после имени таблицы. Когда строка вводится в таблицу, СУБД устанавливает соответствие каждого предмета в списке столбцов с соответствующим значением в списке VALUES. Первое значение в списке VALUES соответствует первому указанному имени столбца, второе значение соответствует имени второго столбца и т.д.

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

     Следующий оператор INSERT заполняет все столбцы строки (так же, как и в предыдущем примере), но делает это в другом порядке. Поскольку имена столбцов указываются, добавление будет выполнено правильно:

INSERT INTO Customers(cust_id, cust_contact, cust_email, cust_name, cust_address, cust_city, cust_state, cust_ZIP,
VALUES('4000000006' , NULL, NULL,
'Toy Land', '123 Any Street', 'New York', 'NY' , '11111',

 

Всегда используйте список столбцов

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

Аккуратно используйте предложение VALUES

Независимо от синтаксиса, используемого для оператора insert, должны быть правильно указаны значения в предложении values. Если имена столбцов не указываются, должно быть указано значение для каждого столбца таблицы. Если имена столбцов указываются, должно наличествовать какое-то значение для каждого столбца, включенного в список. Если что-то не указано, будет сгенерировано сообщение об ошибке, и строка не будет вставлена.