SELECT * FROM "таблица"; - выбрать все из таблицы
SELECT 'name', 'bio' FROM "таблица" - выборка по name и bio
SELECT id,name FROM people WHERE id > 2 AND id < 5;
WHERE
>= больше или равно
<= меньше или равно
> больше
< меньше
<> не равно
SELECT * FROM `people` WHERE id <> 5 AND id <> 6;
AND - опертор и
Операторов AND может быть сколько угодно
SELECT * FROM `people` WHERE id > 3 AND id < 7 AND bio IS NULL;
IS NULL проверка на пустое значение, IS NOT NULL на непустое значение
SELECT * FROM `people` WHERE id > 2 AND id < 7 AND bio IS NOT NULL;
OR - оператор или
SELECT * FROM `people` WHERE name = 'Иван' OR id = 4;
SELECT DISTINCT bio FROM people;
DISTINCT выбрать все неповторяющиеся значения
SELECT * FROM people LIMIT 3;
LIMIT выбрать лишь 3 записи
SELECT * FROM people LIMIT 2, 3;
пропускаем 2 элемента и выводим 3 следующих
Сортировка
ORDER BY
SELECT * FROM people ORDER BY id LIMIT 2, 3 только в такой последовательности
(SELECT * FROM people WHERE ORDER BY id LIMIT 2, 3) пример
сортировка по id пропуская первые 2 элемента и выводя 3 следующих
SELECT * FROM people ORDER BY id LIMIT 2, 3
SELECT * FROM `people` ORDER BY id DESC LIMIT 2, 3; DESC - сортировка по убываню
SELECT * FROM "название таблицы" WHERE id BETWEEN значение1 AND значение2;
BETWEEN - диапазон значений
Пример
SELECT * FROM `people` WHERE id BETWEEN 2 AND 6;
SELECT * FROM `people` WHERE id BETWEEN 2 AND 6 AND id <> 4 ORDER BY id DESC LIMIT 6;
SELECT * FROM people WHERE id IN (значение1, значение2...);
IN - какие записи показывать
SELECT * FROM people WHERE id IN (4,5,2,1) ORDER BY id DESC LIMIT 6;
LIKE - оператор
SELECT * FROM "таблица" WHERE "поле" LIKE 'символ или часть слова%';
SELECT * FROM people WHERE name LIKE 'И%';
поск по name всех значений начинающихся на И и не важно что идет после И
SELECT * FROM `people` WHERE name LIKE '%р%';
поиск всех записей в поле name имеющих 'р'
SELECT * FROM `people` WHERE email LIKE '%v%' '%@%';
поиск всех записей с почтой из поля email где есть символ v и @
Индексы
Индексы - доп характеристики к полям в табличке. Для более быстрого поиска.
Пользователю индексы не видны
CREATE INDEX "название индекса" ON "название таблицы"("поле");
Пример: полю name сделаем индекс
CREATE INDEX nameIndex ON people(name);
в обзоре таблицы ничего не изменилось, но если зайти в структуру,то у name появился ключик:
Удаление индекса
DROP INDEX "название индекса" ON "таблица";
ПОЛЯ-ссылки
Создать две таблицы с полями ссылками
У нас есть таблица people с полем id
Создаем таблицу shop с своим полем id
Создаем таблицу orders с полем shopID которое будет ссылаться на id таблицы shop
и полем personID которое будет ссылаться на id таблицы people
Команда
FOREIGN KEY (shopID) REFERENCES shop(id),
Пример
CREATE TABLE orders(
id INT NOT NULL AUTO_INCREMENT,
orderNumber INT,
shopID INT,
personID INT,
date_time DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
FOREIGN KEY (shopID) REFERENCES shop(id),
FOREIGN KEY (personID) REFERENCES people(id)
);
Теперь можно объединять данные из нескольких табличек.
Пример:
Добавим значения в таблицу shop:
INSERT INTO `shop`(`title`, `price`)
VALUES ('RTX3090',200000),
('RTX3090',200000),
('RTX3080',150000),
('RTX3070',100000),
('RTX3060',70000);
Добавим значения в таблицу orders:
INSERT INTO `orders`(`orderNumber`, `shopID`, `personID`)
VALUES (0001,1,3),
(0002,2,3),
(0003,3,3),
(0004,1,3),
(0005,5,3);