- это хранилище информации. С ней можно работать через приложение с помощью API запросов, проверяя заодно согласованность приложения с базой данных и напрямую через SQL, если backend не готов.
Реляционные базы данных состоят из
таблиц и связей между ними.
Таблица - совокупность строк(записи) и
столбцов(полей). В пересечении значений
ячейка(данные).
Первичный ключ - это поле с неповторимыми значениями
в таблице, нужное для индификации, бывает составной из нескольких
полей.
СУБД -система управления базами данных
Список популярных СУБД:
Postgre SQL
Oracle
My SQL
Microsoft SQL Server
Комментарий - это поясняющий текст, который вставляют
в запрос.
-- однострочный комментарий SQL
/* многострочный комментарий SQL */
Запрос - команда к базе данных.
Оператор - спецслово или символ (пример: SELECT).
Бесплатные программы для установки локального сервера:
MAMP - для Windows, Mac
XAMPP - для Linux
1. Числовые
INT - числа(integer) целочисленный тип
REAL - число с плавающей точкой(до 6 десятичных
разрядов)
2. Строковые, значения в кавычках пример: "Значения"
VARCHAR(n) - небольшая строка до 255 символов, n -
ограничение. Заводит любую строку любой длины короче n.
TEXT - для большого объема любой длинны
3. Дата и время, значения заключают в кавычки.
timestamp - дата и время
DATE - дата
4. Логический
boolean - логический тип данных
TRUE - истина
FALSE - ложь
NULL - неизвестно
psql - это клиент, который помогает работать с
Postgre SQL
Подключиться к удаленному серверу команда:
psql -Uимя пользователя ввести пароль и нажать
ENTER
- Ключ U указывает, что для получения используется
имя пользователя
команды в psql:
\? - справочник команд
q - выйти из справочника команд
\q - выйти из psql
\l - покажет список баз данных
\c name - подключит к базе данных с названием name
\dt - список таблиц в базе данных
ДАМП базы - это файл набором SQL команд, который
позволяет воссоздать базу данных, таблицы и восстановить информацию
- создание дампа:
pg_dump имя базы данных > путь и имя файла дампа.
pg_dump - встроенная СУБД PostgreSQL - вводить
снаружи без подключения к СУБД
имя базы данных - имя нужной БД
путь и имя файла дампа - имя и путь куда сохранить
дамп.
!!! У пользователя под которым вводиться команда должны быть права
на это !!!
- восстановление дампа:
psql имя базы данных < путь и имя дампа.
- создать базу данных:
createdb -T templateO имя базы данных templateO -
шаблон, который создаст чистую БД
ER-диаграммы - визуализирует структуру баз данных
PK - первичный ключ
FK - внешний(вторичный)ключ
CREATE DATABASE название базы; - команда на создание
базы данных.
DROP DATABASE название базы; - команда на удаление
базы данных.
CREATE TABLE название базы (id INT NOT NULL AUTO_INCREMENT, name
VARCHAR (30), email VARCHAR (40), bio TEXT, birth DATE, PRIMARY
KEY(id));
- создание таблицы.
Где:
id, name, email, bio, birth - придуманные названия
полей.
INT, VARCHAR, TEXT, DATE - типы данных.
NOT NULL - не может быть пустым.
(30), (40) - количество символов в поле.
AUTO_INCREMENT - автозаполнение следующим по счету
значением.
PRIMARY KEY(id) - назначает поле id первичным ключом
должно быть уникальное не повторяемое значение.
DROP TABLE название таблицы; - команда на удаление
таблицы.
ALTER TABLE название таблицы ADD название поля тип данных;
- добавить поле в таблицу.
ALTER TABLE название таблицы DROP COLUMN название поля;
- удалить поле из таблицы.
INSERT INTO название таблицы (name, email, bio, birth) VALUES
("ВАНЯ", "vano@yandex.com", "Родился в Самаре, живёт в Москве",
1970-03-02);
- добавление данных в таблицу.
- названия полей в свободном порядке через запятую
- значения через запятую в том же порядке в каком записаны названия
полей
- поле первичного ключа вписывать не нужно у него само заполнение
- в те поля что не вписали значение присвоится NULL
ALTER TABLE название таблицы CHANGE название поля которое меняем
название нового поля DATE NOT NULL;
- изменение поля в таблице.
- если название не меняем пишем старое
DATE - типы данных
NOT NULL - не может быть пустым можно использовать
для обязательных полей
INSERT INTO название таблицы (названия полей через запятую) VALUES
(значения через запятую), (значения через запятую), (значения через
запятую);
- множественные добавления полей.
UPDATE название таблицы SET название поля = новое значение WHERE
условие;
- обновление значений в поле.
- пример UPDATE man SET name = "Саша" WHERE id = 5;
UPDATE название таблицы SET название поля = новое значение,
название поля = новое значение, название поля = новое значение WHERE
условие AND условие_2;
- обновление сразу нескольких полей.
DELETE FROM название таблицы WHERE условие; или
DELETE FROM название таблицы; - удаление записей из
таблицы.
TRUNCATE название таблицы; - очистка таблицы.
SELECT * FROM название таблицы; - выбрать все
значения из таблицы.
* - обозначает выбрать всё.
SELECT названия полей через запятую если их несколько FROM название
таблицы;
- выбрать определенные поля.
SELECT * FROM название таблицы WHERE условие AND условие_2 OR
условие_3;
- выбрать с несколькими условиями.
> - больше
< - меньше
= - равно
<> или != - не равно
>= - больше либо равно
<= - меньше либо равно
IS- является
NOT - не является или IS NOT к примеру IS NOT NULL
AND - все условия соответствуют
OR - хотя бы одно условие соответствует
- условий может быть сколько угодно
- WHERE условие AND NOT условие_2 когда соответствует
первому условию и не соответствует второму
CASE - в случае когда
CASE WHEN условие THEN результат (если условие
верное) ELSE результат_2 (если условие не верное)
END;
SELECT DISTINCT название поля FROM название таблицы;
- чтоб исключить повторяющиеся значения.
SELECT * FROM название таблицы LIMIT 2; - задать
лимит 2 строки.
SELECT * FROM название таблицы LIMIT 2,3; - пропустит
2 строчки, а затем 3 выведет 3-5 строчку.
SELECT * FROM название таблицы ORDER BY id LIMIT 2; -
отсортировать по полю.
- LIMIT всегда в конце,
ORDER BY после WHERE сортирует без
операторов в порядке возрастания.
SELECT * FROM название таблицы ORDER BY id DESC LIMIT 2;
- отсортировать в порядке убывания.
SELECT * FROM название таблицы WHERE id BETWEEN 2 AND 6 AND id <>
4;
- выбрать где id от 2 до 6 включительно, без 4 id.
SELECT * FROM название таблицы WHERE id IN (2, 8); -
выберет id 2 и 8.
SELECT * FROM название таблицы WHERE id NOT IN (2, 8);
- исключит из выбора id 2 и 8.
SELECT * FROM название таблицы WHERE name LIKE "И%";
- выбрать все name начинающиеся на И.
'%ИВА%' - выберет все где в середине ИВА
_ - заменяет одно значение
% - заменяет любое количество символов и даже
пустоту
Если нужно найти _ или % символы их нужно экранировать. Экранирующий
символ любой, главное чтоб не встречался в сочетании со значениями _ и
% например / вот пример с ним:
WHERE название столбца LIKE '/%' ESCAPE '/' или c ! WHERE название
столбца LIKE '!%' ESCAPE '!'
Индексы нужны для ускорения поиска по полю
CREATE INDEX название индекса ON название таблицы (поле к которому
добавляем индекс название);
- добавить к полю индекс.
ROP INDEX название индекса ON название таблицы; -
удалить индекс.
PRIMARY KEY(id) - создать первичный ключ для поля id сделать его
ключом
FOREIGN KEY(название вторичного ключа) REFERENCES название таблицы
куда ссылается ключ(название поля из таблицы для сращивания); -
создаем вторичный ключ. -
ПИШУТСЯ В КОНЦЕ ЗАПРОСА ПРИ СОЗДАНИИ И РЕДАКТИРОВАНИИ
ТАБЛИЦЫ
FROM название таблицы сращивания
INNER JOIN название таблицы которую сращивают
ON название таблицы сращивания.название поля
в этой таблице для склейки = название таблицы которую
сращивают.название поля в этой таблице для
склейки;
пример:
FROM people INNER JOIN orders ON people.id =
orders.personid;
- команда для сращивания.
SELECT имя таблицы.название поля - при сращивании
указывают имя таблицы к полю при выводе
Данные которые он берет - это строки из выведенных полей
Псевдонимы - переименование полей во время выборки
пример: SELECT name AS ИМЯ
SELECT CONCAT('Имя: ', name, ', День рождения: ', birth) AS
Информация
- объединит несколько полей и фраз в поле информация и выведет:
Информация
Имя: Алексей, День рождения: 03.04.2010
SELECT p.id, p.name FROM people AS p; - псевдонимы
можно использовать для названий таблиц.
COUNT(название столбца) - возвращает число строк в
столбце.
COUNT(*) - возвращает общее количество строк в
таблице.
COUNT(DISTINCT название столбца) - возвращает
количество уникальных строк в столбце.
SELECT COUNT(id) - вызывает количество id
SELECT MIN(price) - выведет минимальное значение
price
SELECT MAX(price) - выведет максимальное значение
price
SELECT AVG(price) - выведет средне арифметическое
значение price
SELECT SUM(price) - выведет сумму значений price
SELECT UCASE(title) AS title - выведет все значения
title в верхнем регистре
SELECT LCASE(title) AS title - выведет все значения
title в нижнем регистре
GROUP BY - группирует по полям при использовании
функции, вписывается поле которое не использовало функцию, но функция
работала на него
пример:
SELECT price, COUNT(price) FROM shop GROUP BY price HAVING
COUNT(price) > 1;
- HAVING это условие для функций