Как правильно назначить тип столбца для MySQL таблиц?
Создал php скрипт с занесением данных в базу MySQL, данные заносятся корректно, но мне кажется, что у меня не везде заданы верные типы столбов.
Например, в некоторых базах не принимается значение varchar(255) требует использовать varchar(191), при sql импорте иногда получаю сообщение о том, что скоро отпадет необходимость прописывать int(11).
В итоге база данных сейчас у меня работает, но по сути все значения у меня там взяты с потолка.
Помогите назначить верные типы данных для таблиц.
CREATE TABLE IF NOT EXISTS `pin_code` (
`id` int(11) NOT NULL, // 1
`code` varchar(255) NOT NULL DEFAULT '', // c9631b497da4f3f413fee8807dc435ec
`create_date` int(10) unsigned NOT NULL DEFAULT '0', // 1610489000
`destroy_date` int(10) unsigned NOT NULL DEFAULT '0', // 1610489000
`email` varchar(255) NOT NULL, // [email protected]
`name` varchar(255) NOT NULL, // Ivan Ivan
`item_number` varchar(50) NOT NULL, // 123
`txn_id` varchar(50) NOT NULL, // 5P0237229D8053935
`checkout_session_id` varchar(250) NOT NULL, // cs_test_a1SV6zJqDkvo9ceCNmbkYmh1fYT2trjLXKm5xDa08IAkmEZqs0pksuHMBw
`payment_status` varchar(20) NOT NULL // Pending
) ENGINE=InnoDB AUTO_INCREMENT=224 DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `subscription` (
`id` int(11) NOT NULL, // 1
`item_name` varchar(255) NOT NULL DEFAULT 'PIN code', // PIN code
`amount` varchar(255) NOT NULL DEFAULT '', // 150
`currency_code` varchar(10) NOT NULL, // RUB
`custom` int(10) unsigned NOT NULL DEFAULT '0', // 12345
`payment_service` varchar(255) NOT NULL, // PayPal
`business` varchar(255) NOT NULL DEFAULT '', // [email protected]
`stripe_pkey` varchar(255) NOT NULL DEFAULT '', // pk_test_51HCYduIdR2gJHe2nSIlVFNB5p3SPyefhUaZ79qeIs2BgrFZ595Eb2tLtzntZ0Pm3U3h6SfikqezCy6RhBgfjzXy800zAfHWSiu
`stripe_skey` varchar(255) NOT NULL DEFAULT '', // pk_test_51HCYduIdR2gJHe2nSIlVFNB5p3SPyefhUaZ79qeIs2BgrFZ595Eb2tLtzntZ0Pm3U3h6SfikqezCy6RhBgfjzXy800zAfHWSiu
`status` int(10) NOT NULL // 1
) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL, // 1
`username` varchar(255) NOT NULL, // admin
`email` varchar(255) NOT NULL, // [email protected]
`password` varchar(255) NOT NULL, // ec04321e2c7bf2e0b01bac41896796b19f22a244
`joindate` int(11) NOT NULL, // 1610304453
`active` int(11) NOT NULL DEFAULT '0', // 1
`admin` int(11) NOT NULL DEFAULT '0' // 1
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
Некоторые поля в базе могут оставаться пустыми, например так:
INSERT INTO `subscription` (`id`, `item_name`, `amount`, `currency_code`, `custom`, `payment_service`, `business`, `stripe_pkey`, `stripe_skey`, `status`) VALUES
(71, 'PIN code', '150', 'RUB', 148, 'Stripe', '', 'pk_test_51HCYduIdR2gJHe2nSIlVFNB5p3SPyefhUaZ79qeIs2BgrFZ595Eb2tLtzntZ0Pm3U3h6SfikqezCy6RhBgfjzXy800zAfHWSiu', 'sk_test_51HCYduIdR2gJHe2nU6KLxYrD6fUdbIN0zCyj7k4wujxLfRLjYHIUJUJwKMMd9AnRsBxY2CfRlVn6M5Xpg8p6cNLh00sM1eVZmp', 1),
(74, 'PIN code', '10', 'USD', 72, 'PayPal', '[email protected]', '', '', 1),
(80, 'PayPal', '100', 'RUB', 5, 'Stripe', '', 'pk_test_51HCYduIdR2gJHe2nSIlVFNB5p3SPyefhUaZ79qeIs2BgrFZ595Eb2tLtzntZ0Pm3U3h6SfikqezCy6RhBgfjzXy800zAfHWSiu', 'sk_test_51HCYduIdR2gJHe2nU6KLxYrD6fUdbIN0zCyj7k4wujxLfRLjYHIUJUJwKMMd9AnRsBxY2CfRlVn6M5Xpg8p6cNLh00sM1eVZmp', 1),
(85, 'PIN code', '500', 'RUB', 5, 'PayPal', '[email protected]', '', '', 1);
Помогите корректно назначить типы данных и NULL, not NULL, NOT NULL DEFAULT и т.д.