Когда я выполняю операторы SELECT в PHP-коде, я всегда выбираю именованные столбцы, например:
SELECT id, name from users;
вместо использования:
SELECT * from users;
Это имеет то преимущество, что является более информативным и читаемым, а также позволяет избежать проблем в дальнейшем, если в таблицу будут добавлены новые столбцы.
Мне интересно, можно ли использовать ту же идею в инструкции INSERT? Я предполагаю, что это может быть что-то вроде этого:
INSERT into people values (id=1, name = "Fred");
Синтаксис, показанный в этом примере, не работает, но мне интересно, возможно ли что-то эквивалентное? Если нет, то кто-нибудь знает, почему нет? Это умышленное упущение?
Если у вас есть другой вопрос SQL, посмотрите здесь sqlzoo.net. Это мне очень помогло.






INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
INSERT INTO people (id, name)
VALUES (1, 'Fred');
INSERT into people(id,name) values (1, 'Fred');
это правильно, за исключением того, что вам нужны одинарные кавычки вместо двойных кавычек.
Спасибо, я вырезал и наклеил и не исправил эту часть. К тому же jmien опередила меня примерно на 10 секунд.
INSERT INTO table (column_1, column_2, column_3, ...)
VALUES (value_1, value_2, value_3, ...)
то, что ты хочешь, это
INSERT INTO PEOPLE ( id, name ) VALUES ( 1, 'FRED' )
Попробуйте так: ВСТАВИТЬ В люди (идентификатор, имя) ЗНАЧЕНИЯ (1, «Фред»);
Используйте INSERT INTO <table> (col1, col2) VALUES (1,2).
синтаксис для этого случая
INSERT into people (id, name) values (1, 'Fred');
по крайней мере, он работает в dbms, которые я использую (PostgreSQL)
Такой синтаксис возможен только в MySQL. Афайк, другие СУБД этого не допускают. Вот синтаксис:
INSERT INTO games SET yr = 2012, city = 'London';
Я бы хотел, чтобы PostgreSQL облегчил такой синтаксис вставки
Стандартный синтаксис ANSI, однако, будет
ВСТАВИТЬ в ценности людей (года, города) (2012, «Лондон»);
Другой метод, однако, - это стандартный SQL, переносимый на любую совместимую со стандартом СУБД.
@Harper: Это важный момент, но для меня версия только для MySQL подходит, так как я не пишу производственное программное обеспечение, а просто что-то для себя, и я буду использовать только MySQL ... Я думаю... :-)
Когда-нибудь в будущем вы будете ругать себя за то, что не делаете это стандартным способом SQL.
Он непереносимый, и я не вижу никаких преимуществ.
Даже команда PostgreSQL считает такой синтаксис более читабельным. Я не могу поверить, что отвечаю на вопрос добросовестно, без злого умысла или чего-то еще, но я получил отрицательный голос. Ну .. это жизнь ... здесь.
@ Майкл Буэн: Я согласен с вами. Я лично считаю, что ваш ответ был хорошим ответом. Я искал решение MySQL, и, на мой взгляд, предложенный вами ответ более читабелен, чем более стандартный. Жаль, что за вас проголосовали против.
Я предполагаю, что этот ответ - синдром разбитого окна. Я просто надеялся, что в будущем многие поставщики СУБД сочтут этот синтаксис более простым в использовании, чем стандартный. Что переменная и ее значение должны находиться в непосредственной близости друг от друга.
Используя стандартный синтаксис, вы можете вставить сразу несколько строк:
INSERT INTO Table (column1,...,columnN) VALUES
(r1v1, ..., r1vN),
(r2v1, ..., r2vN),
(r3v1, ..., r3vN).
Это МНОГО более быстрый способ импорта данных, чем по одной строке (особенно в MySQL)! Я не думаю, что вы можете сделать то же самое, используя
INSERT INTO Table SET column1 = r1v1, ..., columnN = r1vN
синтаксис.
(По личному опыту, вставка 300000 строк по одной строке за раз занимала несколько минут. Когда я изменил сценарий, чтобы использовать только несколько операторов вставки, каждый из которых вставлял несколько тысяч строк, потребовалось всего несколько секунд, чтобы импортировать все это, MySQL 5.0).
Ух ты! Я давно хотел сделать это, и оказалось, что это было легко, и что почти все, кроме меня, уже знали об этом. Я люблю Stackoverflow ...