против того что сказал Lord Skill не возражаю, но должен дополнить... базовые операции (создание баз и таблиц) проще делать вручную чем через php... итак.
Код:
DROP TABLE IF EXISTS test;
// если менять базу ( а обычно во время дизайна базы менять приходится
// несколько раз, то это выкинет уже существующую таблицу... правда надо
// позаботится о том чтобы в базе ещё не было нужных данных на этот
// момент... если данные есть, надо работать через запрос UPDATE TABLE ).
CREATE TABLE test (
id int(4) unsigned NOT NULL auto_increment,
name varchar(50) default NULL,
height int(4) unsigned default NULL,
weight int(4) unsigned default NULL,
hair set('светлый','тёмный','рыжий') default NULL,
PRIMARY KEY (id)
);
тут всё зависит от объема работы... я лично обычно просчитываю весь дизайн и структуру базы сначала в голове и записываю sql-запрос для создания базы в текст-файле, который сохраняю как struct.sql (например).
Теперь весь вопрос в том как этот файл скормить в mysql... и делается это до безобразия просто.
во первых, ложим файл на твой сервер ( если же всё локально то ничего не надо двигать.

).
во вторых идём в шелл (dos-окно на виндах, или телнет / ssh (предпочтительно) на сервер).
теперь вводим:
mysql test < struct.sql (где test = имя базы).
всё. Ну, если на базу стоит пароль доступа то конечно нужно его проставить в запросе, и тогда это выглядит примерно так:
mysql -u username -pPassword test < struct.sql, но в целом это всё.
кстати, обратите внимание на отсутвие пробела между -p и паролем - это не очепятка, так и должно быть.
Альтернативный вариант:
Если же нужно просто быстренько создать таблицу или что-то быстро пофиксить, то можно с файлами голову не морочить а просто ввести запрос прямо в шелле.
для этого: входим в mysql через шелл вышеуказанным способом (не указывая базы и sql-файла, правда). Получаем доступ. Пишем
use test (где test, опять же, имя базы).
вводим любой sql-запрос, и никаких проблем