Изучаем sql


INSERT INTO string_tbl (char_fld, vchar_fld, text_fld)



Pdf көрінісі
бет109/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   105   106   107   108   109   110   111   112   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

INSERT INTO string_tbl (char_fld, vchar_fld, text_fld)
> VALUES ('This is char data',
> 'This is varchar data',
> 'This is text data');
Query OK, 1 row affected (0.00 sec)
При вставке строковых данных в таблицу не забывайте, что если длина
строки превышает максимальный размер символьного столбца (или за
данный, или допустимый максимум типа данных), сервер или сформи
рует исключение (Oracle Database), или, в случае MySQL или SQL Ser
ver, без лишнего шума усечет строку (MySQL генерирует предупреж
дение). Чтобы показать, как MySQL поведет себя в такой ситуации, сле
дующее выражение 
update
пытается обновить строкой из 46 символов
столбец 
vchar_fld
, для которого задан максимальный размер в 30 сим
волов:
mysql> 
UPDATE string_tbl
> SET vchar_fld = 'This is a piece of extremely long varchar data';


124
Глава 7. Создание, преобразование и работа с данными
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1 Changed: 1
Warnings: 1
Столбец изменен, но сформировано следующее предупреждение:
mysql> 
SHOW WARNINGS
;
++++
| Level | Code | Message |
++++
| Warning | 1265 | Data truncated for column 'vchar_fld' at row 1 |
++++
1 row in set (0.00 sec)
Если извлечь столбец 
vchar_fld
, то получим:
mysql> 
SELECT vchar_fld
> FROM string_tbl;
++
| vchar_fld |
++
| This is a piece of extremely l |
++
1 row in set (0.05 sec)
Как видите, в столбце 
vchar_fld
размещены только первые 30 символов
46символьной строки. Лучший способ избежать усечения строки (или
формирования исключений в случае Oracle Database) при работе
со столбцами типа 
varchar
– задавать достаточно большой верхний пре
дел длины строки, чтобы иметь возможность работать с самыми длин
ными из предполагаемых для хранения строк (помня о том, что сервер
распределяет для хранения строки лишь необходимое количество па
мяти, т. е. при задании большого верхнего предела для столбцов типа
varchar
память все же не расходуется впустую).


Достарыңызбен бөлісу:
1   ...   105   106   107   108   109   110   111   112   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет