Как вставить данные в таблицу с помощью SQL?

0

Вставьте в таблицу App.settings следующие значения:

(99, DEFAULT, "horizontal", "2015-09-15 04:01:04")

У меня есть DATABASE под названием App с таблицей настроек. Я пытаюсь вставить в таблицу, но я не могу понять, что это правильно.

Мое выражение:

INSERT INTO App.settings
    VALUES(99, DEFAULT, "horizontal", "2015-09-15 04:01:04");

Правильно ли я это делаю? В нем говорится, что мой ответ неправильный.

mysql> DESC App.settings;
+-----------------+---------------------+------+-----+---------+-------+
| Field           | Type                | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| user_id         | int(7)              | NO   |     | NULL    |       |
| email_frequency | tinyint(2) unsigned | YES  |     | NULL    |       |
| layout          | varchar(70)         | YES  |     | NULL    |       |
| updated_at      | datetime            | YES  |     | NULL    |       |
+-----------------+---------------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
  • 0
    В стандартном SQL строки заключаются в одинарные кавычки: (99, DEFAULT, 'horizontal', '2015-09-15 04:01:04') . Имена объектов заключены в двойные кавычки: "App"."settings"
  • 0
    Какие столбцы есть в App.settings ? Можете ли вы использовать DESC App.settings и показать нам результат? Кроме того, какую СУБД вы используете? (MySQL, Oracle, MSSQL, MongoDB, ...)
Теги:

3 ответа

2

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

Поэтому я ожидаю увидеть:

INSERT INTO App.settings (col1, col3, col4)  -- your real column names here
    VALUES (99, 'horizontal', '2015-09-15 04:01:04');

Обратите внимание, что col2 был удален из INSERT и VALUES потому что вам кажется, что требуется значение DEFAULT. Не все базы данных поддерживают этот синтаксис.

  • 0
    Почему всегда ? Если таблица не подлежит изменению, я бы не сказал, что это абсолютно необходимо
  • 1
    @Близнец . , , Потому что люди, которые изучают SQL, должны научиться делать это правильно. Если у вас есть опыт и вы знаете, когда не следует использовать имена столбцов, вы проигнорируете этот совет. Есть только один случай, когда я не перечисляю имена столбцов, и это нечто особенное. Я всегда перечисляю имена столбцов для не временных таблиц. Я не хочу, чтобы изменения в структурах таблиц вызывали неожиданное поведение в коде.
Показать ещё 4 комментария
0

вы уверены, что все поля кортежа есть, и если да, они находятся в правильном порядке, если вы не вводите все поля кортежа, вы должны использовать следующую форму: INSERT INTO App.settings(value, config, position, date ) VALUES(99, "DEFAULT", "horizontal", "2015-09-15 04:01:04");

В том же порядке

это только пример, который я не знаю, имена полей, которые вы должны изменить для того, что вы используете

  • 0
    Обновлен основной пост с DESC. Я не понимаю, что его просит меня сделать ..
  • 0
    Можете показать ошибку?
0

Как и @GordonLinoff, вы должны включить столбцы в свой запрос. Таким образом, вы также можете пропустить ввод значения DEFAULT для email_frequency.

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

Попробуйте следующее:

INSERT INTO App.settings (user_id, layout, updated_at) 
    VALUES (99, 'horizontal', '2015-09-15 04:01:04');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню