# Таблицы **Типы таблиц:** - Постоянные таблицы (т .е. созданные с помощью инструкции create table) - Производные таблицы (т .е. строки, возвращаемые подзапросом и хранящиеся в памяти) - Временные таблицы (т.е. изменяемые данные, хранящиеся в памяти) - Виртуальные таблицы (т.е. созданные с помощью инструкции create view). **Создание таблицы** ```sql create table person ( person_id smallint unsigned, fname varchar(20), lname varchar(20), eye_color char(2), constraint pk_person primary key (person_id) ); ``` изменение струтуры таблицы ``` ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT; ``` какие таблицы ссылаются по внешним ключам на таблицу X ``` SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = 'X'; ``` ``` DROP TABLE favorite_food; ``` **Ограничения (constraint)** Первичный ключ, может быть любое кол-во столбцов ``` constraint pk_person primary key (person_id) ``` Создание связи ``` CONSTRAINT fk_fav_food_person_id FOREIGN KEY (person_id) REFERENCES person (person_id) ``` Ограничение набора в столбце ``` enum('ht', 'hy') create table person (... eye_color ENUM('BR','BL','GR', ....); ``` AUTO\_INCREMENT в описании ключа автоматическое увеличение номера desc person - описание таблицы not null при создании столбца запрещает быть пустым проверка ограничений ```sql SELECT * FROM information_schema.check_constraints WHERE table_schema = 'db name' and table_name = 'table name'; ``` просмотр скрипта создания таблицы со всеми внесенными изменениями ```sql SHOW CREATE TABLE mytable; ``` **Получение/изменение данных** ```sql INSERT INTO person (person_id, fname, lname, eye_color, birth_date) VALUES (null, 'William','Turner', 'BR', '1972-05-27'); ORDER BY - группировка в селекте UPDATE person SET street = '1225 Tremont St.', city = Boston', state = 'MA', country = 'USA', postal_code = '02138' WHERE person_id = 1; DELETE FROM person WHERE person_id = 2; ``` **Структура select**
select | Определяет,какие столбцы следует включить в результирующий набор запроса |
from | Определяет таблицы, из которых следует выбирать данные, а также таблицы, которые должны быть соединены |
where | Отсеивает ненужные данные |
group by | Используется для группировки строк по общим значениям столбцов |
having | Отсеивает ненужные данные |
order by | Сортирует строки окончательного результирующего набора по одному или нескольким столбцам |