Почему числа вставляются в столбец VARCHAR без '', а строковые тексты - нет? - PullRequest
0 голосов
/ 16 февраля 2019

Поэтому я попытался поэкспериментировать с кодом INSERT INTO.Я попытался использовать утверждение

INSERT INTO cats (name, age)
VALUES ( 8, '3');

, чтобы просто попробовать и посмотреть, что произойдет.Оказывается, он все еще может хранить оба значения.Под именем было 8, а под возрастом было 3. Я также попытался вставить имя, Момо, без каких-либо кавычек, но это не сработало.Как получилось, что номер 8 работал без «, а Момо нет»?Кроме того, почему, когда я использую '' для целого числа, 3, оно все равно принимает это значение как возраст?

Последняя часть вопроса, которую я просто хочу уточнить.Я попытался вставить «Mimi» в значение возраста, и в таблице было 0. Я просто предположил, что это означает нулевое значение, потому что «Mimi» не является целым числом.Это верно?Если так, то почему «3» сработало?

Для большей ясности моя таблица cats выглядит следующим образом

mysql> SHOW COLUMNS FROM cats;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name  | varchar(100) | YES  |     | NULL    |       |
| age   | int(11)      | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+

Я настоящийновичок, так что извините за очень простой вопрос

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

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

Оператор values() не может ссылаться на столбцы, поэтому Momo будетгенерировать ошибку, что идентификатор не распознан.Обратите внимание, что двойные кавычки являются исключением в некоторых базах данных, включая MySQL.Они могут окружать либо идентификаторы, либо строковые значения.

В числовом контексте, например при вставке значения в числовой столбец, SQL преобразует строки в числа.В большинстве случаев SQL выдаст ошибку, если строка не преобразуется чисто в число.

0 голосов
/ 16 февраля 2019

Я думаю, что вы предполагаете, что '8' - это строка, а 8 - целое число.

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

Так что во многих случаях 8 и '8' и "8" идентичны.

...