Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Типы данных в MySQL
 
 автор: jaroslav   (19.03.2006 в 22:24)   письмо автору
 
 

Здравствуйте!

Подскажите, пожалуйста, какой тип должен быть в ячеках таблицы MySQL, если необходимо сохранять, например, информацию о пользователях, когда тип VARCHAR не подходит, вследствие ограничения по количеству символов.

Еще интересует, как организовать шифрование паролей пользователей. Я сделал при помощи функции PASSWORD(), но на сервере почему-то не пошло.

Заранее спасибо.
Ярослав.

   
 
 автор: cheops   (19.03.2006 в 22:54)   письмо автору
 
   для: jaroslav   (19.03.2006 в 22:24)
 

Используйте один из следующих типов
TINYTEXT - 255 байт
TEXT- 64 Кб
MEDIUMTEXT - 16 Мб
LONGTEXT - 4 Гб

Для необратимого шифрования лучше использовать функцию MD5(), PASSWORD() не очень удобна - она вообще для внутренних нужд предназначена и её результат может меняться от версии к версии.

   
 
 автор: Jaroslav   (19.03.2006 в 23:24)   письмо автору
 
   для: cheops   (19.03.2006 в 22:54)
 

Спасибо!

А почему при создании таблицы:


CREATE TABLE auth (
name TINYTEXT) NOT NULL primary key,
pass TINYTEXT NOT NULL,
email TINYTEXT NOT NULL,
family TINYTEXT NOT NULL,
nick TINYTEXT NOT NULL,
prof TINYTEXT NOT NULL,
opit TINYTEXT NOT NULL,
infa TEXT NOT NULL
) TYPE=MyISAM;


происходит ошибка?


А вот так все нормально:

CREATE TABLE auth (
name VARCHAR(30) NOT NULL primary key,
pass TINYTEXT NOT NULL,
email TINYTEXT NOT NULL,
family TINYTEXT NOT NULL,
nick TINYTEXT NOT NULL,
prof TINYTEXT NOT NULL,
opit TINYTEXT NOT NULL,
infa TEXT NOT NULL
) TYPE=MyISAM;

Почему нельзя первичному ключу присвоить значение TINYTEXT?


Еще хотел уточнить. В литературе обычно пишут, что желательно, чтобы в таблице не было пустых ячеек. Как в таком случае поступать с данными, если они не обязательны для ввода?

Например, данные в таблице приведенной выше обязательны для заполнения.
А если есть другие необязательные данные, то как их лучше оформить.
Одной таблицей. Как тут:


create table other (
name VARCHAR(30) NOT NULL,
pol TINYTEXT NOT NULL,
prof2 TINYTEXT NOT NULL,
education TINYTEXT NOT NULL,
country TINYTEXT NOT NULL,
city TINYTEXT NOT NULL,
www TINYTEXT NOT NULL,
tel TINYTEXT NOT NULL,
icq TINYTEXT NOT NULL,
date TINYTEXT NOT NULL,
index (name)
);


Или надо делать много таблиц с двумя столбцами. Скажем, имя пользователя - образование; имя пользователя - профессия...
Например:

create table edu (
name VARCHAR(30) NOT NULL,
education TINYTEXT NOT NULL
index (name)
);


create table prof (
name VARCHAR(30) NOT NULL,
prof2 TINYTEXT NOT NULL,
index (name)
);

   
 
 автор: Caaseer   (20.03.2006 в 02:10)   письмо автору
 
   для: Jaroslav   (19.03.2006 в 23:24)
 


А почему при создании таблицы:


CREATE TABLE auth (
name TINYTEXT) NOT NULL primary key,
pass TINYTEXT NOT NULL,
email TINYTEXT NOT NULL,
family TINYTEXT NOT NULL,
nick TINYTEXT NOT NULL,
prof TINYTEXT NOT NULL,
opit TINYTEXT NOT NULL,
infa TEXT NOT NULL
) TYPE=MyISAM;


может из за скобки?

name TINYTEXT) NOT NULL primary key,

   
 
 автор: cheops   (20.03.2006 в 13:21)   письмо автору
 
   для: Jaroslav   (19.03.2006 в 23:24)
 

>что желательно, чтобы в таблице не было пустых ячеек.
Желательно, это не означает, что это обязательное требование. Это просто рекомендация и вообще говоря не для пустых ячеек, я для значения NULL.

   
 
 автор: Евгений Петров   (19.03.2006 в 23:45)   письмо автору
 
   для: cheops   (19.03.2006 в 22:54)
 

А при одинаковых значениях полей разных типов их размер одинаковый будет?
Т.е. например:
TINYTEXT - "word"
TEXT- "word" 
MEDIUMTEXT - "word"
LONGTEXT - "word"

Они будут все занимать 4 байта?

   
 
 автор: Jaroslav   (20.03.2006 в 00:18)   письмо автору
 
   для: Евгений Петров   (19.03.2006 в 23:45)
 

Все имеют одинаковый размер по 20 байт.

   
 
 автор: Евгений Петров   (20.03.2006 в 00:27)   письмо автору
 
   для: Jaroslav   (20.03.2006 в 00:18)
 

Почему 20?

   
 
 автор: Jaroslav   (20.03.2006 в 00:40)   письмо автору
 
   для: Евгений Петров   (20.03.2006 в 00:27)
 

Не знаю почему 20.
Скорее всего не там смотрю?
Но у всех рядов все одинаково.

   
 
 автор: Евгений Петров   (20.03.2006 в 00:59)   письмо автору
 
   для: Jaroslav   (20.03.2006 в 00:40)
 

Не знаю почему 20.
Гениально!!! :))))

   
 
 автор: FBI   (20.03.2006 в 03:16)   письмо автору
 
   для: Евгений Петров   (20.03.2006 в 00:59)
 

>>Не знаю почему 20.
>Гениально!!! :))))

))))))

   
 
 автор: Trianon   (20.03.2006 в 10:35)   письмо автору
 
   для: Евгений Петров   (19.03.2006 в 23:45)
 

все они будут занимать разное количество памяти:
TINYTEXT   - "word" - 5 байт
TEXT       - "word" - 6 байт
MEDIUMTEXT - "word" - 7 байт
LONGTEXT   - "word" - 8 байт

см. мануал (Требования к памяти для символьных типов.)
Это следствие того факта, что помимо самого текста нужно хранить ео длину.
Эта длина (в зависимости от типа поля) для своего хранения требует от 1 (для TINYTEXT) до 4 (для LONGTEXT) байт.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования