В предыдущем уроке мы узнали, как создать соединение с сервером БД. Следующий шаг - создание БД и таблиц.
Рассмотрим два способа создания БД и таблиц. Первый, как это делается в PHP, второй - с помощью более дружественной утилиты PhpMyAdmin, которая является стандартной на большинстве вэб-хостов и в XAMPP.
Если у вас на хосте есть сайт с поддержкой PHP и MySQL, БД, возможно, уже создана для вас, и вы можете пропустить это раздел урока и начать создавать таблицы. Не забывайте консультироваться со страницами помощи хоста.
Создание БД и таблиц с помощью PHP
Функция mysql_query используется для отправки запроса БД MySQL. Запросы записываются на языке S tructured Q uery L anguage (SQL). SQL - наиболее широко распространённый язык запросов БД - не только для БД MySQL - он очень логичен и прост для изучения. В этом и следующем уроках вы узнаете всё самое важное о SQL-запросах.
При создании БД используется SQL-запрос CREATE DATABASE с таким синтаксисом:
CREATE DATABASE имя БД
Легко и просто, не так ли!? Попробуем вставить это в PHP-скрипт:
Mysql_connect("mysql.myhost.com", "user", "sesame") or die(mysql_error()); mysql_query("CREATE DATABASE mydatabase") or die(mysql_error()); mysql_close();
Сначала соединяемся с MySQL-сервером. Затем создаём БД "mydatabase". И наконец - закрываем соединение с MySQL-сервером.
Пока неплохо... но всё несколько усложняется, когда мы хотим создать таблицы в PHP. При создании таблиц мы используем SQL-запрос CREATE TABLE с таким синтаксисом:
CREATE TABLE имя таблицы (имя_столбца1 ТИП_ДАННЫХ, имя_столбца2 ТИП_ДАННЫХ, имя_столбца3 ТИП_ДАННЫХ, ...)
имя_таблицы и имя_столбца это, понятное дело, соответствующие имена. ТИП_ДАННЫХ используется для специфицирования типа данных, вставляемых в столбец. Вот наиболее распространённые типы:
Целые числа Десятичные числа Краткий текст до 255 символов длиной Обычный текст до 65,535 символов Длинные куски текста до 4,294,967,295 символов Даты в формате ГГГГ-MM-ДД Время в формате ЧЧ:MM:СС Время и дата в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС
В целом логично и относительно просто. Попробуем вставить это в наш пример:
Mysql_connect("mysql.myhost.com", "user", "sesame") or die(mysql_error()); mysql_select_db("people") or die(mysql_error()); mysql_query("CREATE TABLE MyTable (id INT AUTO_INCREMENT, FirstName CHAR, LastName CHAR, Phone INT, BirthDate DATE PRIMARY KEY(id))") Or die(mysql_error()); mysql_close ();
В этом примере мы начинаем с соединения с MySQL-сервером. Затем используем функцию для выбора БД "people". Далее создаём таблицу "persons" из 5 столбцов.
Обратите внимание, что для столбца "id" мы используем для специфицирования того, что столбец содержит числа, а затем добавляем для автоматического инкремента этих чисел и гарантирования тог, что для каждого ряда будет сгенерирован уникальный ID.
В конце мы используем для установки столбца "id" как первичного ключа/primary key. Первичный ключ уникально идентифицирует каждую запись (/ряд) в таблице, что особенно пригодится при последующих обновлениях БД.
Создание БД и таблиц с использованием phpMyAdmin
Бывает полезно иметь возможность создавать БД и таблицы напрямую в PHP. Но часто проще использовать phpMyAdmin (или любую иную утилиту администрирования MySQL), которая является стандартной на большинстве вэб-хостов и в XAMPP. Скриншот ниже показывает, как создавать БД и таблицы с применением phpMyAdmin.
На уроке будет рассмотрен пример создания на локальной машине базы данных mySQL и ее таблиц; установка DENWER
Пакет denwer можно найти и загрузить с официального сайта.
Для работы с базами данных mySql существует популярный инструмент с удобным вебинтерфейсом — phpMyAdmin .
После успешной установки пакета Denwer, выполняются следующие действия для запуска инструмента phpMyAdmin:
* в случае изменения используемого порта во избежание конфликтов при установке denwer, адрес инструмента может быть и другим, например:
http://localhost:8080/tools/phpmyadmin
Создание базы данных mySQL локально (insitute)
Создадим базу данных с названием insitute :
Создание таблиц в phpMyAdmin
Теперь в готовой базе данных можно создавать таблицы с полями:
Типы данных в mySQL
Типы данных для MySQL можно разделить на три категории: числовые данные, дата и время, и данные типа строка.
Таким образом, поля таблицы могут иметь следующие типы данных:
Тип данных | Использование | Диапазоны |
---|---|---|
TINYINT | Очень маленькое целое число | Диапазон числа со знаком от –128 до 127. Диапазон числа без знака (unsigned) от 0 до 255. |
SMALLINT | Маленькое целое число | Диапазон числа со знаком от –32768 до 32767. Диапазон числа без знака (unsigned) от 0 до 65535. |
MEDIUMINT | Среднее целое число | Диапазон числа со знаком от –8388608 до 8388607. Диапазон числа без знака (unsigned) от 0 до 16777215. |
INT или INTEGER | Целое число | Диапазон числа со знаком от –2147483648 до 2147483647. Диапазон числа без знака (unsigned) от 0 до 4294967295. |
BIGINT | Большое целое число | Диапазон числа со знаком от –9223372036854775808 до 9223372036854775807. Диапазон числа без знака (unsigned) от 0 до 18446744073709551615. |
FLOAT | Малое (одинарной точности) число с плавающей запятой. Не может быть числом без знака | Диапазоны от –3.402823466E+38 до –1.175494351E-38, 0 и 1.175494351E-38 до 3.402823466E+38. Если количество знаков после запятой не установлено или <= 24 это число с плавающей запятой одинарной точности. |
DOUBLE , DOUBLE PRECISION , REAL |
Нормальное (двойной точности) число с плавающей запятой. Не может быть числом без знака | Диапазоны от -1.7976931348623157E+308 до -2.2250738585072014E-308, 0 и 2.2250738585072014E-308 до 1.7976931348623157E+308. Если количество знаков после запятой не установлени или 25 <= количество знаков <= 53 означает числоа с плавающей запятой двойной точности. |
DECIMAL , NUMERIC |
Распакованное число с плавающей запятой | Работает подобно типу данных CHAR: «распакованный» означает, что число хранится в виде строки, используя один символ для каждой цифры-значения. Символ десятичной запятой и символ отрицательного числа "-" не учитывается в длину. Если десятичное значение равно 0, значение не будет иметь десятичной запятой или дробной части. Максимальный размер для DECIMAL значение такое же, как и для DOUBLE , но фактический диапазон для данного столбца DECIMAL может быть ограничен в выборе длины и десятичные дроби. |
DATE | Дата | Дата в диапазоне от «1000-01-01» до «9999-12-31». MySQL хранит поле типа DATE в виде «YYYY-MM-DD» (ГГГГ-ММ-ДД). |
DATETIME | Дата и время | Допустимые диапазоны от «1000-01-01 00:00:00» до «9999-12-31 23:59:59». MySQL хранит поле типа DATETIME в виде «YYYY-MM-DD HH:MM:SS» (ГГГГ-ММ-ДД ЧЧ-ММ-СС). |
TIMESTAMP | Дата и время | Диапазон от «1970-01-01 00:00:00» до, примерно, 2037 года. MySQL может хранить поле типа TIMESTAMP в видах «YYYYMMDDHHMMSS» (TIMESTAMP(14)), «YYMMDDHHMMSS» (TIMESTAMP(12)), «YYYYMMDD» (TIMESTAMP(8)) и др. |
TIME | Время | Диапазон от «-838:59:59» до «838:59:59». MySQL хранит поле TIME в виде «HH:MM:SS», но позволяет присваивать значения столбцам TIME с использованием либо строки или числа. |
YEAR | Год в 2- или 4- хцифровом виде (4 цифры по-умолчанию) | Если вы используете 4 цифра, то допустимые значения 1901-2155, и 0000. Если 2 цифры, то 1970-2069 (70-69). MySQL хранит значения поля YEAR в формате «YYYY». |
CHAR | Строка фиксированной длины, которая справа дополняются пробелами до указанной длины, при хранении | Диапазон длины от 1 до 255 символов. Завершающие пробелы удаляются, когда значение извлекается. Значения CHAR сортируются и сравниваются без учета регистра в зависимости от кодировки по умолчанию, если не установлен флаг BINARY . |
VARCHAR | Строка переменной длины. Примечание: конечные пробелы удаляются при сохранении (в отличие от спецификации ANSI SQL). | Диапазон длины от 1 до 255 символов. Значения VARCHAR сортируются и сравниваются без учета регистра, если не установлен флаг BINARY . |
TINYBLOB , TINYTEXT |
BLOB или ТЕХТ с максимальной длиной 255 (2^8 — 1) символов. | |
BLOB , TEXT |
BLOB или ТЕХТ с максимальной длиной 65535 (2^16 — 1) символов. | |
MEDIUMBLOB , MEDIUMTEXT |
BLOB или ТЕХТ с максимальной длиной 16777215 (2^24 — 1) символов. | |
LONGBLOB , LONGTEXT |
BLOB или ТЕХТ с максимальной длиной 4294967295 (2^32 — 1) символов. | |
ENUM | Перечисление | Строка-объект, который может принимать только одно значение, выбирается из списка значений «значение 1», «значение 2» или NULL . ENUM максимум может иметь 65535 различных значений. |
SET | Набор | Строка-объект, который может принимать ноль и более значений, каждоу из которых должно быть выбрано из списка значений «значение 1», «значение 2», … Поле SET может иметь максимум 64 варианта значений. |
Задание mysql 1.
На компьютере создайте базу данных с именем Institute и таблицы:
— lessons с полями:
- tid – для связи с teachers (int)
- course — varchar
- date — типа date
— courses c полями:
- id – уникальное поле, ключ (A_I — счетчик)
- tid – для связи с teachers
- title — varchar
- length (длительность в часах)
— teachers c полями:
Важно:
* Атрибут AUTO_INCREMENT
используется для генерации уникального идентификатора для новых строк
* Первичный ключ (primary key)
применяется для уникальной идентификации записей (полей) таблицы. Две записи таблицы не могут иметь одинаковых значений первичного ключа. В реляционных (табличных) базах данных практически всегда разные таблицы логически связаны друг с другом. Первичные ключи используются для однозначной организации данной связи.
Задание mysql 2. Заполните таблицы данными, как показано на рисунках ниже для таблицы teachers . Аналогично заполните записи в таблицах courses и lessons
Создание таблиц данных MySQL требуется следующая информация:
- название таблицы
- Имя поля таблицы
- Определение каждого поля таблицы
грамматика
Ниже приведена таблица данных SQL, чтобы создать общий синтаксис MySQL:
CREATE TABLE table_name (column_name column_type);
В следующем примере мы создадим таблицу данных в базе данных w3big w3big_tbl:
W3big_tbl(w3big_id INT NOT NULL AUTO_INCREMENT, w3big_title VARCHAR(100) NOT NULL, w3big_author VARCHAR(40) NOT NULL, submission_date DATE, PRIMARY KEY (w3big_id));
Примеры анализа:
- Если вы не хотите, чтобы поле NULL может установить поле атрибута NOT NULL, когда функционирование базы данных, если поле данных ввода является NULL, ошибка.
- AUTO_INCREMENT определяется как самовозбуждение свойства, как правило, используются для первичного ключа автоматически увеличивается на единицу.
- PRIMARY KEY ключевое слово используется для определения столбца первичного ключа. Вы можете использовать несколько столбцов, чтобы определить столбцы первичного ключа, разделенных запятой между ними.
Создание таблицы из командной строки
По MySQL> окно командной строки может быть очень простой, чтобы создать таблицу MySQL. Вы можете использовать SQL TABLE оператор CREATE , чтобы создать таблицу данных.
примеров
Root@host# mysql -u root -p Enter password:******* mysql> use w3big; Database changed mysql> CREATE TABLE w3big_tbl(-> w3big_id INT NOT NULL AUTO_INCREMENT, -> w3big_title VARCHAR(100) NOT NULL, -> w3big_author VARCHAR(40) NOT NULL, -> submission_date DATE, -> PRIMARY KEY (w3big_id) ->); Query OK, 0 rows affected (0.16 sec) mysql>
Примечание: MySQL команда терминатора является точкой с запятой (;).
Создание таблицы данных с помощью PHP-скрипта
Вы можете использовать функцию в PHP mysql_query () для создания таблицы базы данных данных уже существует.
Эта функция имеет два параметра, в реализации успешных возвращается TRUE, в противном случае возвращает FALSE.
грамматика
bool mysql_query(sql, connection);примеров
В следующем примере используется PHP скрипт для создания таблицы данных:
В этой статье мы расскажем, как создавать новые базы данных и таблицы, используя команды SQL в клиенте mysql. Предполагается, что этот инструмент запущен и подключен к серверу базы данных MySQL.
Создание новой базы данных MySQL
Новая база данных создается с помощью оператора SQL CREATE DATABASE, за которым следует имя создаваемой базы данных. Для этой цели также используется оператор CREATE SCHEMA. Например, для создания новой базы данных под названием MySampleDB в командной строке mysql нужно ввести следующий запрос:
CREATE DATABASE MySampleDB;
Если все прошло нормально, команда сгенерирует следующий вывод:
Query OK, 1 row affected (0.00 sec)
Если указанное имя базы данных конфликтует с существующей базой данных MySQL, будет выведено сообщение об ошибке:
ERROR 1007 (HY000): Can"t create database "MySampleDB"; database exists
В этой ситуации следует выбрать другое имя базы данных или использовать опцию IF NOT EXISTS. Она создает базу данных только в том случае, если она еще не существует:
CREATE DATABASE IF NOT EXISTS MySampleDB;
Создание таблиц с помощью SQL
Новые таблицы добавляются в существующую базу данных с помощью оператора SQL CREATE TABLE. За оператором CREATE TABLE следует имя создаваемой таблицы, а далее через запятые список имен и определений каждого столбца таблицы:
CREATE TABLE имя_таблицы (определение имени_столбца, определение имени_таблицы …, PRIMARY KEY = (имя_столбца)) ENGINE = тип_движка;
В определении столбца задается тип данных, может ли столбец быть NULL, AUTO_INCREMENT. Оператор CREATE TABLE также позволяет указать столбец (или группу столбцов) в качестве первичного ключа.
Прежде чем будет создавать таблицу, нужно выбрать базу данных. Это делается с помощью оператора SQL USE:
Создадим таблицу, состоящую из трех столбцов: customer_id , customer_name и customer_address . Столбцы customer_id и customer_name не должны быть пустыми (то есть NOT NULL). customer_id содержит целочисленное значение, которое будет автоматически увеличиваться при добавлении новых строк. Остальные столбцы будут содержать строки длиной до 20 символов. Первичный ключ определяется как customer_id.
CREATE TABLE customer (customer_id int NOT NULL AUTO_INCREMENT, customer_name char(20) NOT NULL, customer_address char(20) NULL, PRIMARY KEY (customer_id)) ENGINE=InnoDB;
Значения NULL и NOT NULL
Если для столбца указано значение NULL, тогда пустые строки будут добавляться в таблицу. И наоборот, если столбец определяется как NOT NULL, тогда пустые строки не будут добавлены.
Первичные ключи
Первичный ключ — это столбец, используемый для идентификации записей в таблице. Значение столбца первичного ключа должно быть уникальным. Если несколько столбцов объединены в первичный ключ, то комбинация значений ключей должна быть уникальной для каждой строки.
Первичный ключ определяется с помощью оператора PRIMARY KEY во время создания таблицы. Если используется несколько столбцов, они разделяются запятой:
PRIMARY KEY (имя_столбца, имя_столбца...)
В следующем примере создается таблица с использованием двух столбцов в качестве первичного ключа:
CREATE TABLE product (prod_code INT NOT NULL AUTO_INCREMENT, prod_name char(30) NOT NULL, prod_desc char(60) NULL, PRIMARY KEY (prod_code, prod_name)) ENGINE=InnoDB;
AUTO_INCREMENT
Когда столбец определяется с помощью AUTO_INCREMENT, его значение автоматически увеличивается каждый раз, когда в таблицу добавляется новая запись. Это удобно при использовании столбца в качестве первичного ключа. Благодаря AUTO_INCREMENTне нужно писать инструкции SQL для вычисления уникального идентификатора для каждой строки.
AUTO_INCREMENT может быть присвоен только одному столбцу в таблице. И он должен быть проиндексирован (например, объявлен в качестве первичного ключа).
Значение AUTO_INCREMENT для столбца можно переопределить, указав новое при выполнении инструкции INSERT.
Можно запросить у MySQL самое последнее значение AUTO_INCREMENT, используя функцию last_insert_id() следующим образом:
SELECT last_insert_value();
Определение значений по умолчанию при создании таблицы
Значения по умолчанию используются, когда значение не определено при вставке в базу данных.
Значения по умолчанию задаются с помощью ключевого слова DEFAULT в операторе CREATE TABLE. Например, приведенный ниже запрос SQL задает значение по умолчанию для столбца sales_quantity:
CREATE TABLE sales { sales_number int NOT_NULL, sales_quantity int NOT_NULL DEFAULT 1, sales_desc char(20) NOT_NULL, PRIMARY KEY (sales_number)) ENGINE=MyISAM;
Типы движков баз данных MySQL
Каждый из примеров создания таблицы в этой статье до этого момента включал в себя определение ENGINE= . MySQL поставляется с несколькими различными движками баз данных, каждый из которых имеет свои преимущества. Используя директиву ENGINE =, можно выбрать, какой движок использовать для каждой таблицы. В настоящее время доступны следующие движки баз данных MySQL:
- InnoDB — был представлен вMySQL версии 4.0 и классифицирован как безопасная среда для транзакций.Ее механизм гарантирует, что все транзакции будут завершены на 100%. При этом частично завершенные транзакции (например, в результате отказа сервера или сбоя питания) не будут записаны. Недостатком InnoDB является отсутствие поддержки полнотекстового поиска.
- MyISAM — высокопроизводительный движок с поддержкой полнотекстового поиска. Эта производительность и функциональность обеспечивается за счет отсутствия безопасности транзакций.
- MEMORY — с точки зрения функционала эквивалентен MyISAM, за исключением того, что все данные хранятся в оперативной памяти, а не на жестком диске. Это обеспечивает высокую скорость обработки. Временный характер данных, сохраняемых в оперативной памяти, делает движок MEMORY более подходящим для временного хранения таблиц.
Движки различных типов могут сочетаться в одной базе данных. Например, некоторые таблицы могут использовать движок InnoDB, а другие — MyISAM. Если во время создания таблицы движок не указывается, то по умолчанию MySQL будет использовать MyISAM.
Чтобы указать тип движка, который будет использоваться для таблицы, о поместите соответствующее определение ENGINE= после определения столбцов таблицы:
CREATE TABLE tmp_orders { tmp_number int NOT_NULL, tmp_quantity int NOT_NULL, tmp_desc char(20) NOT_NULL, PRIMARY KEY (tmp_number)) ENGINE=MEMORY;
Перевод статьи «Creating Databases and Tables Using SQL Commands» был подготовлен дружной командой проекта
Откройте базу данных. Для создания таблицы вам необходимо иметь базу данных, которая будет ее содержать. Вы можете открыть базу данных, набрав USE database в командной строке MySQL.
- Если вы не помните имя базы данных, наберите SHOW DATABASES , чтобы вывести список баз данных на сервере MySQL.
- Если у вас пока нет базы данных, вы можете ее создать, набрав CREATE DATABASE . Имя базы данных не может содержать пробелы.
Изучите основные типы данных. Каждая запись в таблице сохраняется как определенный тип данных. Это позволяет MySQL взаимодействовать с ними различными способами. Типы данных, которые вы будете использовать, зависят от назначения вашей таблицы. Есть много типов кроме нижеперечисленных, но вы можете их использовать для создания базовой, пригодной для использования таблицы:
Создайте таблицу. Чтобы создать таблицу из командной строки, вам нужно создать все поля с помощью одной команды. Вы создаете таблицы, используя команду CREATE TABLE с последующей информацией о таблице. Чтобы создать базовую запись о сотруднике, вам нужно ввести следующую команду:
CREATE TABLE employees (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT , lastname VARCHAR (20 ) , firstname VARCHAR (20 ) , phone VARCHAR (20 ) , dateofbirth DATE )
- INT NOT NULL PRIMARY KEY AUTO_INCREMENT создает числовой идентификатор для каждого работника, который добавляется в запись. Это число каждый раз автоматически увеличивается. Это позволяет вам легко ссылаться на сотрудников с помощью других функций.
- Хотя VARCHAR позволяет уменьшать размер в зависимости от введенных данных, вы можете установить максимум для него, чтобы пользователь не мог ввести слишком длинные строки. В приведенном выше примере имя и фамилия ограничены 20-ю символами.
- Заметьте, что запись о телефонном номере хранится как VARCHAR, поэтому символы тоже обрабатываются корректно.
Проверьте, что ваша таблица была создана правильно. Как только вы создадите таблицу, вы получите сообщение, что она была успешно создана. Теперь вы можете использовать команду DESCRIBE , чтобы убедиться, что вы включили все поля, что хотели, и что у них правильные типы данных. Наберите DESCRIBE database; и посмотрите на появившийся график, чтобы проверить структуру вашей таблицы.
Создайте таблицу с использованием PHP. Если вы используете PHP для администрирования вашей базы данных MySQL через веб-сервер, вы можете создать таблицу, используя простой PHP-файл. Предполагается, что база данных уже существует на сервере MySQL. Для создания такой же таблицы, как и в Шаге 3, введите следующий код, заменив информацию о соединении на актуальную для вас:
"Failed to connect to MySQL: " . mysqli_connect_error () ; } $sql = "CREATE TABLE employees (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, lastname VARCHAR(20), firstname VARCHAR(20), phone VARCHAR(20), dateofbirth DATE)" ; if (mysqli_query ($connection , $sql ) ) { echo "Table employees created successfully" ; } else { echo "Error creating table: " . mysqli_error ($connection ) ; } ?>