Запросы изменения схемы


createTable():    создание таблицы
renameTable():    переименование таблицы
dropTable():      удаление таблицы
truncateTable():  очистка таблицы
addColumn():      добавление нового поля в таблицу
renameColumn():   переименование поля таблицы
alterColumn():    изменение поля таблицы
addForeignKey():  добавление внешнего ключа
dropForeignKey(): удаление внешнего ключа
dropColumn():     удаление поля таблицы
createIndex():    создание индекса
dropIndex():      удаление индекса

Типы даных

pk: Первичный ключ. Аонвертируется в int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY
string: строка. Для MySQL конвертируется в varchar(255)
text: текстовый тип (длинная строка). Для MySQL конвертируется в text
integer: целое. Для MySQL конвертируется в int(11)
float: число с плавающей точкой. Для MySQL конвертируется в float
decimal: десятичное число. Для MySQL конвертируется в decimal
datetime: дата и время. Для MySQL конвертируется в datetime
timestamp: метка времени. Для MySQL конвертируется в timestamp
time: время. Для MySQL конвертируется в time
date: дата. Для MySQL конвертируется в date
binary: бинарный. Для MySQL конвертируется в blob
boolean: булевый. Для MySQL конвертируется в tinyint(1)
money: деньги/валюта. Для MySQL конвертируется в decimal(19,4)

CREATE TABLE = function createTable($table, $columns, $options=null)

// CREATE TABLE `tbl_user` (
//     `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
//     `username` varchar(255) NOT NULL,
//     `location` point
// ) ENGINE=InnoDB
createTable('tbl_user', array(
    'id' => 'pk',
    'username' => 'string NOT NULL',
    'location' => 'point',
), 'ENGINE=InnoDB')

RENAME TABLE = function renameTable($table, $newName)

// RENAME TABLE `tbl_users` TO `tbl_user`
renameTable('tbl_users', 'tbl_user')

DROP TABLE = function dropTable($table)

// DROP TABLE `tbl_user`
dropTable('tbl_user')

TRUNCATE TABLE = function truncateTable($table)

// TRUNCATE TABLE `tbl_user`
truncateTable('tbl_user')

ADD COLUMN = function addColumn($table, $column, $type)

// ALTER TABLE `tbl_user` ADD `email` varchar(255) NOT NULL
addColumn('tbl_user', 'email', 'string NOT NULL')

DROP COLUMN = function dropColumn($table, $column)

// ALTER TABLE `tbl_user` DROP COLUMN `location`
dropColumn('tbl_user', 'location')

RENAME COLUMN = function renameColumn($table, $name, $newName)

// ALTER TABLE `tbl_users` CHANGE `name` `username` varchar(255) NOT NULL
renameColumn('tbl_user', 'name', 'username')

ALTER COLUMN = function alterColumn($table, $column, $type)

// ALTER TABLE `tbl_user` CHANGE `username` `username` varchar(255) NOT NULL
alterColumn('tbl_user', 'username', 'string NOT NULL')

function addForeignKey($name, $table, $columns,
    $refTable, $refColumns, $delete=null, $update=null)

// ALTER TABLE `tbl_profile` ADD CONSTRAINT `fk_profile_user_id`
// FOREIGN KEY (`user_id`) REFERENCES `tbl_user` (`id`)
// ON DELETE CASCADE ON UPDATE CASCADE
addForeignKey('fk_profile_user_id', 'tbl_profile', 'user_id',
    'tbl_user', 'id', 'CASCADE', 'CASCADE')

function dropForeignKey($name, $table)

// ALTER TABLE `tbl_profile` DROP FOREIGN KEY `fk_profile_user_id`
dropForeignKey('fk_profile_user_id', 'tbl_profile')

CREATE INDEX = function createIndex($name, $table, $column, $unique=false)

// CREATE INDEX `idx_username` ON `tbl_user` (`username`)
createIndex('idx_username', 'tbl_user', 'username')

DROP INDEX = function dropIndex($name, $table)

// DROP INDEX `idx_username` ON `tbl_user`
dropIndex('idx_username', 'tbl_user')