Для бэкапа и импорта данных пользуюсь очень простым и быстрым php-скриптом с удобным интерфейсом. Sypex Dumper справляется с таблицами в сотни тысяч записей, в отличие от того же phpMyAdmin или других оконных менеджеров для работы с БД. Про консоль mysql я сейчас не говорю.

Свежая база GeoIP в формате SQL
страны (1 Мб)
города (20 Мб)
Пример определения страны и города по IP

Таблица города-IP состоит из 2.1 млн строк — так что могут быть сюрпризы при импорте на слабом серваке.

страна

регион

город

Как это реализовано (далее...)

NULL означает отсутствие, неизвестность информации. Значение NULL не является значением в полном смысле слова: по определению оно означает отсутствие значения и не принадлежит ни одному типу данных. Поэтому NULL не равно ни логическому значению FALSE, ни пустой строке, ни нулю. При сравнении NULL с любым значением будет получен результат NULL, а не FALSE и не 0. Более того, NULL не равно NULL! Довольно часто программисты избегают null-значений и для нулевых полей в базе выставляют значения по умолчанию типа 0, '' (пустая строка). Во-первых, это неправильно с точки зрения семантики: 0 все-таки означает наличие информации. Во-вторых, использование подобных дефолтных значений может привести к ошибкам. Приведу пример

Лучшее, что я смог найти. По России 2500 городов. Страны не все (не хватает Эль-Сальвадор, Эритрея, Фарерские острова и подобных малоизвестных стран, которые по сути являются мусором). читать дальше →

Задача: выбрать 5 случайных активных пользователей из таблицы user
Решение:
SELECT userid, user_name FROM user WHERE activity=1 ORDER BY RAND() LIMIT 5

ORDER BY RAND() - удобная конструкция для выборки случайных записей из таблицы. Она не очень быстрая, но удобная в случае выборки более одной случайной записи, и для небольших таблиц то, что доктор прописал. Для таблицы 20 000 записей вышеприведенный запрос занимает 0.02 с.

Вот такой интересный способ выбора случайной записи встречается иногда :-)

$res = mysql_query(‘SELECT userid, user_name FROM user WHERE activity=1’);
$j = rand(1,mysql_num_rows($res));
$i=1;
while($row=mysql_fetch_array($res)){
    if($i==$j){
        break;
    }
    $i++;
}

учебник по SQL Отличный учебник по SQL, написанный специально для тех, кто будет использовать SQL в процессе работы. Даже если это ваш первый опыт с базами данных, эта книга очень быстро научит вас свободно работать с реальным SQL, использовать простые запросы, а также снабдит вас ясными понятиями об автоматизированном управлении базой данных. Предоставит вам обучающие программы, чтобы, овладевая командами SQL шаг за шагом, помочь вам узнать, как извлекать и обрабатывать информацию, содержащуюся в таблицах данных.
Скачать Мартин Грубер. Понимание SQL (0.6 Mb, формат html)

В этой статье я расскажу как безопасно хранить пароли в базе данных читать дальше?