MySQL has the same level of data integrity for numbers and
strings as Oracle; when MySQL is correctly configured. By default
(a reason I wish I knew why it is still the default), MySQL
performs silent conversions on boundary conditions of data that
will result in your data not always being what is specified.
Let’s look at the following examples to demonstrate default
behavior.
For numbers
mysql> DROP TABLE IF EXISTS example;
mysql> CREATE TABLE example(i1 TINYINT, i2 TINYINT UNSIGNED, c1 VARCHAR(5));
mysql> INSERT INTO example (i1) VALUES (1), (-1), (100), (500);
Query OK, 4 rows affected, 1 warning (0.08 sec)
mysql> SELECT * FROM example;
+------+------+------+
| i1 | i2 | c1 |
+------+------+------+
| 1 | NULL | NULL |
| -1 | NULL | NULL |
| 100 | NULL | NULL |
| 127 | NULL | NULL |
+------+------+------+
4 rows in set (0.00 sec)
As you can see for one value we inserted 500, yet the value …
[Read more]