Команда SQL для записи и чтения всех значений из таблицы с 4 столбцами

#mysql #sql #database

#mysql #sql #База данных

Вопрос:

У меня есть таблица с 4 полями,

 id - INT Primary
description - TEXT
postdate - DATE
username - TEXT
  

Я смог подключиться к базе данных

Я пытаюсь использовать следующую команду для записи в базу данных

 INSERT INTO userdata(description, postdate, username) VALUES(@description, @postdate, @username)
  

Но когда я пытаюсь запустить запрос ВЫБОРА, ничего не отображается

 SELECT `id`, `description`, `postdate`, `username` FROM `userdata` WHERE 1 
  

Или

 SELECT * FROM `userdata` WHERE 1
  

Почему это происходит?

Мне нужно сохранять записи в базе данных по 1 строке за раз (описание, дата публикации, имя пользователя)

И затем мне нужно извлекать все данные из таблицы по одной строке за раз, игнорируя записи, которым более 30 дней

Может кто-нибудь, пожалуйста, помочь мне составить правильные запросы для каждого из них?

Комментарии:

1. Возможно, вам потребуется зафиксировать insert .

2. Избавьте себя от лишних проблем позже и не используйте TEXT для столбца с именем postdate .

3. Как сказал Джоэл, помните, что SQL имеет типы значений DATE и DATETIME. Кроме того, где вы пишете этот запрос? В программе на другом языке? Или это просто команда, которую вы пытаетесь выполнить из вашей СУБД MySQL?

4. Это из Xamarin. Формы, но я предполагаю, что запрос будет работать на любом языке

5. Я изменил вопрос, чтобы использовать ДАТУ вместо ТЕКСТА

Ответ №1:

В вашем WHERE заявлении должно быть указано, какое поле вы ожидаете равным 1.

Я предполагаю, что вы имели в виду идентификатор. Так что это было бы

 SELECT ID, DESCRIPTION, POSTDATE, USERNAME
FROM Userdata
WHERE ID = 1
  

Вам не нужно переносить имена столбцов / таблиц в обратные метки, если они состоят всего из 1 слова.

Я также хотел бы указать на некоторые основные рекомендации в SQL: соглашения об именовании столбцов состояния должны быть заглавными. Таблицы должны иметь регистр Pascal.

Комментарии:

1. Я попробовал это "SELECT id, description, postdate, username FROM userdata WHERE id = 1 " , но все равно вернул пустой набор. MySQL returned an empty result set (i.e. zero rows) Моя команда insert неверна? Какую команду я бы использовал, чтобы записать все 4 из них в 1 строку, чтобы убедиться, что это работает?

2. Попробуйте выполнить SELECT * FROM Username только это, без WHERE инструкции. Если он возвращает пустой, ваша база данных не сохраняет значения. Всякий раз, когда вы программируете SQL-запросы для программы на другом языке, я бы рекомендовал вам открыть свою СУБД и попробовать отдельные запросы, чтобы убедиться, что SQL правильный. SQL также будет лучше сообщать вам, что пошло не так с запросом, если в нем есть ошибки. Также я не знаю, заметили ли вы, но в вашей операции ВСТАВКИ нет закрывающих скобок для инструкции VALUES. Если это действительно указано в вашем запросе, это проблема. Закройте эти круглые скобки.