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

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

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

У меня есть БАЗА ДАННЫХ под названием Приложение с таблицей настроек. Я пытаюсь вставить в таблицу, но, похоже, не понимаю.

Мое заявление:

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)

В стандартном SQL строки заключаются в одинарные кавычки: (99, DEFAULT, 'horizontal', '2015-09-15 04:01:04'). Имена объектов заключаются в двойные кавычки: "App"."settings"

dnoeth 27.05.2018 22:19

Какие столбцы есть в App.settings? Можете ли вы использовать DESC App.settings и показать нам результат? Кроме того, какую СУБД вы используете? (MySQL, Oracle, MSSQL, MongoDB, ...)

TwiN 27.05.2018 22:19
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
467
3

Ответы 3

Когда вы используете 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. Не все базы данных поддерживают этот синтаксис.

Почему всегда? Если таблица не подлежит изменению, я бы не сказал, что это абсолютно необходимо.

TwiN 27.05.2018 22:22

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

Gordon Linoff 27.05.2018 22:23

Я использую это выражение: INSERT INTO App.settings VALUES (99, DEFAULT, 'horizontal', '2015-09-15 04:01:04'); Я получаю сообщение об ошибке [Ошибка]: Задача 1. Ожидается: Вставьте в таблицу App.settings указанные значения. Попробуй еще раз.

RuskiCode 27.05.2018 22:26

@GordonLinoff А, если писать код, я определенно с вами согласен. Мы всегда должны включать названия столбцов. Однако из его примера я подумал, что это не похоже на то, что он пытался использовать это в коде.

TwiN 27.05.2018 22:31

Может быть, мне нужно использовать ключевое слово ALTER?

RuskiCode 27.05.2018 22:32

@RuskiCode Нет, не знаешь. Ключевое слово ALTER используется для ALTER, обрабатывающего саму таблицу, а не ее содержимое (например, добавление / удаление / изменение столбцов таблицы; но не значений самих строк).

TwiN 27.05.2018 22:47

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

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

this is only an example i dont know the fields names you must be change for the you are using

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

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

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

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

Другие вопросы по теме