#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. Если это действительно указано в вашем запросе, это проблема. Закройте эти круглые скобки.