ГАЙД ПО БАЗЕ SQL, – ОСНОВЫ! 🎀 👔 🎀 👔 🎀 👔 🎀 👔🎀 👔🎀 👔🎀 👔 ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ 🌵ОСНОВНЫЕ КОМАНДЫ ДЛЯ РАБОТЫ С SQL! ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ ➡ Просмотр доступных баз данных: SHOW DATABASES; ➡ Создание новой базы данных: CREATE DATABASE; ➡ Выбор базы данных для использования: USE database_name; ➡ Импорт SQL-команд из файла *.sql: SOURCE path_of_.sql_file; ➡ Удаление базы данных: DROP DATABASE database_name; ➡ Просмотр таблиц, доступных в базе данных: SHOW TABLES;
➡ При использовании CREATE TABLE может понадобиться создать ограничения для определённых столбцов в таблице. При создании таблицы можно задать следующие ограничения:
🔻Ячейка таблицы не может иметь значение NULL 🔻Первичный ключ — PRIMARY KEY (col_name1, col_name2, …) 🔻Внешний ключ — FOREIGN KEY (col_namex1, …, col_namexn) REFERENCES table_name(col_namex1, …, col_namexn)
➡ Можно задать больше одного первичного ключа. В этом случае получится составной первичный ключ. Пример, создаем таблицу «instructor»:
CREATE TABLE instructor ( ID CHAR(5), name VARCHAR(20) NOT NULL, dept_name VARCHAR(20), salary NUMERIC(8,2), PRIMARY KEY(ID), FOREIGN KEY(dept_name) REFERENCES department(dept_name) );
➡ Важно понимать то, что первичные ключи(PRIMARY KEY) указывают на свойство для столбца, данные в ячейках которого всегда будут являться уникальным. Это разработано специально во избежание дубликации данных.
➡ Внешние ключи(FOREIGN KEY) позволяют установить связи между таблицами. Такой ключ устанавливается для столбцов из зависимой, подчиненной таблицы, и указывает на один из столбцов в главной таблице.
➡ Общий синтаксис установки внешнего ключа на уровне таблицы:
🔻Для создания ограничения внешнего ключа: после FOREIGN KEY указывается столбец таблицы, который будет представляет внешний ключ. А после ключевого слова REFERENCES указывается имя связанной таблицы, а затем в скобках имя связанного столбца, на который будет указывать внешний ключ.
🔻После выражения REFERENCES идут выражения ON DELETE и ON UPDATE, которые задают действие при удалении и обновлении строки из главной таблицы соответственно.
➡ Например, определим две таблицы и свяжем их посредством внешнего ключа:
CREATE TABLE Customers ( Id INT PRIMARY KEY AUTO_INCREMENT, Age INT, FirstName VARCHAR(20) NOT NULL, LastName VARCHAR(20) NOT NULL, Phone VARCHAR(20) NOT NULL UNIQUE );
CREATE TABLE Orders ( Id INT PRIMARY KEY AUTO_INCREMENT, CustomerId INT, CreatedAt Date, FOREIGN KEY (CustomerId) REFERENCES Customers (Id) );
🔻В данном случае определены таблицы Customers и Orders. Customers является главной и представляет клиента. Orders является зависимой и представляет заказ, сделанный клиентом. Таблица Orders через столбец CustomerId связана с таблицей Customers и ее столбцом Id. И получается что столбец CustomerId является внешним ключом, который указывает на столбец Id из таблицы Customers.
➡ С помощью оператора CONSTRAINT можно задать имя для ограничения внешнего ключа:
➡ С помощью выражений ON DELETE и ON UPDATE можно установить действия, которые выполняются соответственно при удалении и изменении связанной строки из главной таблицы. В качестве действия могут использоваться следующие опции:
🔻CASCADE: автоматически удаляет или изменяет строки из зависимой таблицы при удалении или изменении связанных строк в главной таблице. 🔻SET NULL: при удалении или обновлении связанной строки из главной таблицы устанавливает для столбца внешнего ключа значение NULL. (В этом случае столбец внешнего ключа должен поддерживать установку NULL) 🔻RESTRICT: отклоняет удаление или изменение строк в главной таблице при наличии связанных строк в зависимой таблице. 🔻NO ACTION: то же самое, что и RESTRICT. 🔻SET DEFAULT: при удалении связанной строки из главной таблицы устанавливает для столбца внешнего ключа значение по умолчанию, которое задается с помощью атрибуты DEFAULT. Несмотря на то, что данная опция в принципе доступна, однако движок InnoDB не поддерживает данное выражение.
➡ Каскадное удаление позволяет при удалении строки из главной таблицы автоматически удалить все связанные строки из зависимой таблицы. Для этого применяется опция CASCADE:
CREATE TABLE Orders ( Id INT PRIMARY KEY AUTO_INCREMENT, CustomerId INT, CreatedAt Date, FOREIGN KEY (CustomerId) REFERENCES Customers (Id) ON DELETE CASCADE );
🔻Подобным образом работает и выражение ON UPDATE CASCADE. При изменении значения первичного ключа автоматически изменится значение связанного с ним внешнего ключа. Однако поскольку первичные ключи изменяются очень редко, да и с принципе не рекомендуется использовать в качестве первичных ключей столбцы с изменяемыми значениями, то на практике выражение ON UPDATE используется редко.
➡ При установки для внешнего ключа опции SET NULL необходимо, чтобы столбец внешнего ключа допускал значение NULL.
CREATE TABLE Orders ( Id INT PRIMARY KEY AUTO_INCREMENT, CustomerId INT, CreatedAt Date, FOREIGN KEY (CustomerId) REFERENCES Customers (Id) ON DELETE SET NULL );
➖➖➖➖➖➖➖➖➖➖ 🌵СВЕДЕНЬЯ О ТАБЛИЦЕ! ➖➖➖➖➖➖➖➖➖➖
➡ Можно просмотреть различные сведения (тип значений, является ключом или нет) о столбцах таблицы следующей командой:
DESCRIBE table_name;
➖➖➖➖➖➖➖➖➖➖➖➖➖➖ 🌵ДОБАВЛЕНИЕ ДАННЫХ В ТАБЛИЦУ! ➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Теперь давайте добавим пару месяцев в нашу табличку. Сделать это можно с помощью команды INSERT. Есть два разных способа использовать INSERT: Первый способ не подразумевает указания названий колонок, а лишь принимает значения в том порядке, в котором они указаны в таблице.
INSERT INTO months VALUES (1,'January',31);
🔻 I-й способ короче второго, однако если в будущем мы захотим добавить дополнительные колонки, все предыдущие запросы работать не будут. Для решения данной проблемы следует использовать второй способ. Его суть в том, что перед вводом данных мы указываем названия колонок.
INSERT INTO months (id,name,days) VALUES (2,'February',29);
🔻 В случае, если мы не укажем одну из колонок, на её место будет записано NULL или заданное значение по умолчанию, но это уже совсем другая история.
➖➖➖➖➖➖➖➖➖➖➖➖➖➖ 🌵ОБНОВЛЕНИЕ ДАННЫХ В ТАБЛИЦЕ! ➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Зачастую нам нужно изменить данные в таблице. В SQL это делается с помощью UPDATE. Использование UPDATE включает в себя:
🔻 выбор таблицы, в которой находится поле, которое мы хотим изменить запись нового значения использование WHERE, чтобы обозначить конкретное место в таблице
➡ Предположим, у нас есть таблица с самыми высоко-оценёнными сериалами всех времён. Однако у нас есть проблема: «Игра Престолов» обозначена как комедия и нам определённо нужно это изменить:
UPDATE tv_series SET genre = 'drama' WHERE name = 'Game of Thrones';
➖➖➖➖➖➖➖➖➖➖➖➖➖ 🌵УДАЛЕНИЕ ЗАПИСИ ИЗ ТАБЛИЦЫ! ➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Удаление записи из таблицы через SQL — очень простая операция. Всё, что нужно — это обозначить, что именно мы хотим удалить.
DELETE FROM tv_series WHERE id = 4;
🔻 убедитесь, что используете WHERE, когда удаляете запись из таблицы. Иначе вы удалите все записи из таблицы, сами того не желая.
➖➖➖➖➖➖➖➖ 🌵УДАЛЕНИЕ ТАБЛИЦ! ➖➖➖➖➖➖➖➖
➡ Если мы хотим удалить все данные из таблицы, но при этом оставить саму таблицу, нам следует использовать команду TRUNCATE:
TRUNCATE TABLE table_name;
➡ В случае, если мы хотим удалить саму таблицу, то нам следует использовать команду DROP:
DROP TABLE table_name;
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ 🌵ВВОД ДАННЫХ. КОМАНДЫ ДЛЯ СОЗДАНИЯ ЗАПРОСОВ! ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
💟💟💟 КОМАНДА SELECT
➡ Данный запрос используется в случае, если нам нужно показать данные в таблице. Наверное, самым простым примером использования SELECT будет следующий запрос:
SELECT * FROM characters;
➡ Результатом данного запроса будет таблица со всеми данными в таблице characters. Знак звёздочки (*) означает то, что мы хотим показать все столбцы из таблицы без исключений. Так как в базе данных обычно больше одной таблицы, нам необходимо указывать название таблицы, данные из которой мы хотим посмотреть. Сделать это мы можем, используя ключевое слово FROM.
➡ когда вам нужны лишь некоторые столбцы из таблицы, то вы можете указать их имена через запятую вместо звёздочки.
SELECT name, weapon FROM characters;
💟💟💟 КОМАНДА SELECT DISTINCT
➡ В столбцах таблицы могут содержаться повторяющиеся данные. Используйте SELECT DISTINCT для получения только неповторяющихся данных.
SELECT DISTINCT name, weapon FROM table_name;
💟💟💟 КОМАНДА WHERE
➡ Можно использовать ключевое слово WHERE в SELECT для указания условий в запросе. В запросе можно задавать следующие условия:
🔻 сравнение текста 🔻 сравнение численных значений 🔻 логические операции AND (и), OR (или) и NOT (отрицание)
SELECT * FROM course WHERE dept_name = 'Comp. Sci.';
SELECT * FROM course WHERE credits > 3;
SELECT * FROM course WHERE dept_name = 'Comp. Sci.' AND credits > 3;
💟💟💟 КОМАНДА GROUP BY
➡ Оператор GROUP BY часто используется с агрегатными функциями, такими как COUNT, MAX, MIN, SUM и AVG, для группировки выходных значений. Выведем количество курсов для каждого факультета:
SELECT COUNT(course_id), dept_name FROM course GROUP BY dept_name;
💟💟💟 КОМАНДА HAVING
➡ Ключевое слово HAVING было добавлено в SQL потому, что WHERE не может быть использовано для работы с агрегатными функциями. Выведем список факультетов, у которых более одного курса:
SELECT COUNT(course_id), dept_name FROM course GROUP BY dept_name HAVING COUNT(course_id)>1;
💟💟💟 КОМАНДА ORDER BY
➡ ORDER BY используется для сортировки результатов запроса по убыванию или возрастанию. ORDER BY отсортирует по возрастанию, если не будет указан способ сортировки ASC или DESC. Выведем список курсов по возрастанию и убыванию количества кредитов:
SELECT * FROM course ORDER BY credits;
SELECT * FROM course ORDER BY credits DESC;
💟💟💟 КОМАНДА BETWEEN
➡ BETWEEN используется для выбора значений данных из определённого промежутка. Могут быть использованы числовые и текстовые значения, а также даты. Выведем список инструкторов, чья зарплата больше 50 000, но меньше 100 000:
SELECT * FROM instructor WHERE salary BETWEEN 50000 AND 100000;
💟💟💟 КОМАНДА LIKE
➡ Оператор LIKE используется в WHERE, чтобы задать шаблон поиска похожего значения. Есть два свободных оператора, которые используются в LIKE:
🔻 % (ни одного, один или несколько символов) 🔻 _ (один символ)
➡ Выведем список курсов, в имени которых содержится «to», и список курсов, название которых начинается с «CS-»:
SELECT * FROM course WHERE title LIKE ‘%to%’;
SELECT * FROM course WHERE course_id LIKE 'CS-___';
💟💟💟 КОМАНДА IN
➡ С помощью IN можно указать несколько значений для оператора WHERE. Выведем список студентов с направлений Comp. Sci., Physics и Elec. Eng.:
SELECT * FROM student WHERE dept_name IN (‘Comp. Sci.’, ‘Physics’, ‘Elec. Eng.’);
💟💟💟 КОМАНДА JOIN
➡ JOIN используется для связи двух или более таблиц с помощью общих атрибутов внутри них. На изображении ниже показаны различные способы объединения в SQL. Обратите внимание на разницу между левым внешним объединением и правым внешним объединением:
1⃣ Выведем список всех курсов и соответствующую информацию о факультетах:
SELECT * FROM course JOIN department ON course.dept_name=department.dept_name;
2⃣ Выведем список всех обязательных курсов и детали о них:
SELECT prereq.course_id, title, dept_name, credits, prereq_id FROM prereq LEFT OUTER JOIN course ON prereq.course_id=course.course_id;
3⃣ Выведем список всех курсов вне зависимости от того, обязательны они или нет:
SELECT course.course_id, title, dept_name, credits, prereq_id FROM prereq RIGHT OUTER JOIN course ON prereq.course_id=course.course_id;
💟💟💟 КОМАНДА VIEW
➡ View — это виртуальная таблица SQL, созданная в результате выполнения выражения. Она содержит строки и столбцы и очень похожа на обычную SQL-таблицу. View всегда показывает самую свежую информацию из базы данных.
🔻 Создание:
CREATE VIEW view_name AS SELECT col_name1, col_name2, …, FROM table_name WHERE condition;
🔻 Удаление:
DROP VIEW view_name;
➡ Создадим view, состоящую из курсов с 3 кредитами:
CREATE VIEW my_view AS SELECT * FROM course WHERE credits = 3;
💟💟💟 AGGREGATE FUNCT
➡ Эти функции используются для получения совокупного результата, относящегося к рассматриваемым данным. Ниже приведены общеупотребительные агрегированные функции:
🔻 COUNT (col_name) — возвращает количество строк 🔻 SUM (col_name) — возвращает сумму значений в данном столбце 🔻 AVG (col_name) — возвращает среднее значение данного столбца 🔻 MIN (col_name) — возвращает наименьшее значение данного столбца 🔻 MAX (col_name) — возвращает наибольшее значение данного столбца
💟💟💟 КОМАНДА AS
➡ Если вы взгляните на предыдущий пример, то вы заметите, что есть два столбца, названных одинаково: «name». Часто это может запутать. Решением данной проблемы являются псевдонимы. Они, к слову, помогают сделать название столбца красивее или понятнее в случае необходимости. Чтобы присвоить столбцу псевдоним, можно использовать ключевое слово AS:
SELECT games.name, games.genre, devs.name AS developer, devs.country FROM video_games AS games INNER JOIN game_developers AS devs ON games.developer_id = devs.id;
💟💟💟 ВЛОЖЕННЫЕ ПОДЗАПРОСЫ
➡ Вложенные подзапросы — это SQL-запросы, которые включают выражения SELECT, FROM и WHERE, вложенные в другой запрос. Найдём курсы, которые преподавались осенью 2009 и весной 2010 годов:
SELECT DISTINCT course_id FROM section WHERE semester = ‘Fall’ AND year= 2009 AND course_id IN ( SELECT course_id FROM section WHERE semester = ‘Spring’ AND year= 2010 );
SQL. Понятия Баз Данных. Оптимизация. Книги.
👔🎀👔🎀👔🎀👔🎀👔🎀👔🎀👔🎀👔🎀👔
ГАЙД ПО БАЗЕ SQL, – ОСНОВЫ!
🎀 👔 🎀 👔 🎀 👔 🎀 👔🎀 👔🎀 👔🎀 👔
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
🌵ОСНОВНЫЕ КОМАНДЫ ДЛЯ РАБОТЫ С SQL!
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Просмотр доступных баз данных:
SHOW DATABASES;
➡ Создание новой базы данных:
CREATE DATABASE;
➡ Выбор базы данных для использования:
USE database_name;
➡ Импорт SQL-команд из файла *.sql:
SOURCE path_of_.sql_file;
➡ Удаление базы данных:
DROP DATABASE database_name;
➡ Просмотр таблиц, доступных в базе данных:
SHOW TABLES;
🌵ОГРАНИЧЕНИЕ ЦЕЛОСТНОСТИ!
➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ При использовании CREATE TABLE может понадобиться создать ограничения для определённых столбцов в таблице. При создании таблицы можно задать следующие ограничения:
🔻Ячейка таблицы не может иметь значение NULL
🔻Первичный ключ — PRIMARY KEY (col_name1, col_name2, …)
🔻Внешний ключ — FOREIGN KEY (col_namex1, …, col_namexn) REFERENCES table_name(col_namex1, …, col_namexn)
➡ Можно задать больше одного первичного ключа. В этом случае получится составной первичный ключ. Пример, создаем таблицу «instructor»:
CREATE TABLE instructor (
ID CHAR(5),
name VARCHAR(20) NOT NULL,
dept_name VARCHAR(20),
salary NUMERIC(8,2),
PRIMARY KEY(ID),
FOREIGN KEY(dept_name) REFERENCES department(dept_name)
);
➡ Важно понимать то, что первичные ключи(PRIMARY KEY) указывают на свойство для столбца, данные в ячейках которого всегда будут являться уникальным. Это разработано специально во избежание дубликации данных.
➖➖➖➖➖➖➖➖➖➖➖➖➖
🌵ВНЕШНИЕ КЛЮЧИ FOREIGN KEY!
➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Внешние ключи(FOREIGN KEY) позволяют установить связи между таблицами. Такой ключ устанавливается для столбцов из зависимой, подчиненной таблицы, и указывает на один из столбцов в главной таблице.
➡ Общий синтаксис установки внешнего ключа на уровне таблицы:
[CONSTRAINT имя_ограничения]
FOREIGN KEY (столбец1, столбец2, ..., столбецN)
REFERENCES главная_таблица (столбец_главной_таблицы1, столбец_главной_таблицы2, ..., столбец_главной_таблицыN)
[ON DELETE действие]
[ON UPDATE действие]
🔻Для создания ограничения внешнего ключа: после FOREIGN KEY указывается столбец таблицы, который будет представляет внешний ключ. А после ключевого слова REFERENCES указывается имя связанной таблицы, а затем в скобках имя связанного столбца, на который будет указывать внешний ключ.
🔻После выражения REFERENCES идут выражения ON DELETE и ON UPDATE, которые задают действие при удалении и обновлении строки из главной таблицы соответственно.
➡ Например, определим две таблицы и свяжем их посредством внешнего ключа:
CREATE TABLE Customers
(
Id INT PRIMARY KEY AUTO_INCREMENT,
Age INT,
FirstName VARCHAR(20) NOT NULL,
LastName VARCHAR(20) NOT NULL,
Phone VARCHAR(20) NOT NULL UNIQUE
);
CREATE TABLE Orders
(
Id INT PRIMARY KEY AUTO_INCREMENT,
CustomerId INT,
CreatedAt Date,
FOREIGN KEY (CustomerId) REFERENCES Customers (Id)
);
🔻В данном случае определены таблицы Customers и Orders. Customers является главной и представляет клиента. Orders является зависимой и представляет заказ, сделанный клиентом. Таблица Orders через столбец CustomerId связана с таблицей Customers и ее столбцом Id. И получается что столбец CustomerId является внешним ключом, который указывает на столбец Id из таблицы Customers.
➡ С помощью оператора CONSTRAINT можно задать имя для ограничения внешнего ключа:
CREATE TABLE Orders
(
Id INT PRIMARY KEY AUTO_INCREMENT,
CustomerId INT,
CreatedAt Date,
CONSTRAINT orders_custonmers_fk
FOREIGN KEY (CustomerId) REFERENCES Customers (Id)
);
➡ С помощью выражений ON DELETE и ON UPDATE можно установить действия, которые выполняются соответственно при удалении и изменении связанной строки из главной таблицы. В качестве действия могут использоваться следующие опции:
🔻CASCADE: автоматически удаляет или изменяет строки из зависимой таблицы при удалении или изменении связанных строк в главной таблице.
🔻SET NULL: при удалении или обновлении связанной строки из главной таблицы устанавливает для столбца внешнего ключа значение NULL. (В этом случае столбец внешнего ключа должен поддерживать установку NULL)
🔻RESTRICT: отклоняет удаление или изменение строк в главной таблице при наличии связанных строк в зависимой таблице.
🔻NO ACTION: то же самое, что и RESTRICT.
🔻SET DEFAULT: при удалении связанной строки из главной таблицы устанавливает для столбца внешнего ключа значение по умолчанию, которое задается с помощью атрибуты DEFAULT. Несмотря на то, что данная опция в принципе доступна, однако движок InnoDB не поддерживает данное выражение.
➡ Каскадное удаление позволяет при удалении строки из главной таблицы автоматически удалить все связанные строки из зависимой таблицы. Для этого применяется опция CASCADE:
CREATE TABLE Orders
(
Id INT PRIMARY KEY AUTO_INCREMENT,
CustomerId INT,
CreatedAt Date,
FOREIGN KEY (CustomerId) REFERENCES Customers (Id) ON DELETE CASCADE
);
🔻Подобным образом работает и выражение ON UPDATE CASCADE. При изменении значения первичного ключа автоматически изменится значение связанного с ним внешнего ключа. Однако поскольку первичные ключи изменяются очень редко, да и с принципе не рекомендуется использовать в качестве первичных ключей столбцы с изменяемыми значениями, то на практике выражение ON UPDATE используется редко.
➡ При установки для внешнего ключа опции SET NULL необходимо, чтобы столбец внешнего ключа допускал значение NULL.
CREATE TABLE Orders
(
Id INT PRIMARY KEY AUTO_INCREMENT,
CustomerId INT,
CreatedAt Date,
FOREIGN KEY (CustomerId) REFERENCES Customers (Id) ON DELETE SET NULL
);
➖➖➖➖➖➖➖➖➖➖
🌵СВЕДЕНЬЯ О ТАБЛИЦЕ!
➖➖➖➖➖➖➖➖➖➖
➡ Можно просмотреть различные сведения (тип значений, является ключом или нет) о столбцах таблицы следующей командой:
DESCRIBE table_name;
🌵ДОБАВЛЕНИЕ ДАННЫХ В ТАБЛИЦУ!
➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Теперь давайте добавим пару месяцев в нашу табличку. Сделать это можно с помощью команды INSERT. Есть два разных способа использовать INSERT:
Первый способ не подразумевает указания названий колонок, а лишь принимает значения в том порядке, в котором они указаны в таблице.
INSERT INTO months VALUES (1,'January',31);
🔻 I-й способ короче второго, однако если в будущем мы захотим добавить дополнительные колонки, все предыдущие запросы работать не будут. Для решения данной проблемы следует использовать второй способ. Его суть в том, что перед вводом данных мы указываем названия колонок.
INSERT INTO months (id,name,days) VALUES (2,'February',29);
🔻 В случае, если мы не укажем одну из колонок, на её место будет записано NULL или заданное значение по умолчанию, но это уже совсем другая история.
➖➖➖➖➖➖➖➖➖➖➖➖➖➖
🌵ОБНОВЛЕНИЕ ДАННЫХ В ТАБЛИЦЕ!
➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Зачастую нам нужно изменить данные в таблице. В SQL это делается с помощью UPDATE. Использование UPDATE включает в себя:
🔻 выбор таблицы, в которой находится поле, которое мы хотим изменить запись нового значения использование WHERE, чтобы обозначить конкретное место в таблице
➡ Предположим, у нас есть таблица с самыми высоко-оценёнными сериалами всех времён. Однако у нас есть проблема: «Игра Престолов» обозначена как комедия и нам определённо нужно это изменить:
UPDATE tv_series
SET genre = 'drama'
WHERE name = 'Game of Thrones';
➖➖➖➖➖➖➖➖➖➖➖➖➖
🌵УДАЛЕНИЕ ЗАПИСИ ИЗ ТАБЛИЦЫ!
➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Удаление записи из таблицы через SQL — очень простая операция. Всё, что нужно — это обозначить, что именно мы хотим удалить.
DELETE FROM tv_series
WHERE id = 4;
🔻 убедитесь, что используете WHERE, когда удаляете запись из таблицы. Иначе вы удалите все записи из таблицы, сами того не желая.
➖➖➖➖➖➖➖➖
🌵УДАЛЕНИЕ ТАБЛИЦ!
➖➖➖➖➖➖➖➖
➡ Если мы хотим удалить все данные из таблицы, но при этом оставить саму таблицу, нам следует использовать команду TRUNCATE:
TRUNCATE TABLE table_name;
➡ В случае, если мы хотим удалить саму таблицу, то нам следует использовать команду DROP:
DROP TABLE table_name;
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
🌵ВВОД ДАННЫХ. КОМАНДЫ ДЛЯ СОЗДАНИЯ ЗАПРОСОВ!
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
💟💟💟 КОМАНДА SELECT
➡ Данный запрос используется в случае, если нам нужно показать данные в таблице. Наверное, самым простым примером использования SELECT будет следующий запрос:
SELECT * FROM characters;
➡ когда вам нужны лишь некоторые столбцы из таблицы, то вы можете указать их имена через запятую вместо звёздочки.
SELECT name, weapon
FROM characters;
💟💟💟 КОМАНДА SELECT DISTINCT
➡ В столбцах таблицы могут содержаться повторяющиеся данные. Используйте SELECT DISTINCT для получения только неповторяющихся данных.
SELECT DISTINCT name, weapon
FROM table_name;
💟💟💟 КОМАНДА WHERE
➡ Можно использовать ключевое слово WHERE в SELECT для указания условий в запросе. В запросе можно задавать следующие условия:
🔻 сравнение текста
🔻 сравнение численных значений
🔻 логические операции AND (и), OR (или) и NOT (отрицание)
SELECT * FROM course
WHERE dept_name = 'Comp. Sci.';
SELECT * FROM course
WHERE credits > 3;
SELECT * FROM course
WHERE dept_name = 'Comp. Sci.' AND credits > 3;
➡ Оператор GROUP BY часто используется с агрегатными функциями, такими как COUNT, MAX, MIN, SUM и AVG, для группировки выходных значений. Выведем количество курсов для каждого факультета:
SELECT COUNT(course_id), dept_name
FROM course
GROUP BY dept_name;
➡ Ключевое слово HAVING было добавлено в SQL потому, что WHERE не может быть использовано для работы с агрегатными функциями. Выведем список факультетов, у которых более одного курса:
SELECT COUNT(course_id), dept_name
FROM course
GROUP BY dept_name
HAVING COUNT(course_id)>1;
➡ ORDER BY используется для сортировки результатов запроса по убыванию или возрастанию. ORDER BY отсортирует по возрастанию, если не будет указан способ сортировки ASC или DESC. Выведем список курсов по возрастанию и убыванию количества кредитов:
SELECT * FROM course
ORDER BY credits;
SELECT * FROM course
ORDER BY credits DESC;
➡ BETWEEN используется для выбора значений данных из определённого промежутка. Могут быть использованы числовые и текстовые значения, а также даты. Выведем список инструкторов, чья зарплата больше 50 000, но меньше 100 000:
SELECT * FROM instructor
WHERE salary BETWEEN 50000 AND 100000;
➡ Оператор LIKE используется в WHERE, чтобы задать шаблон поиска похожего значения. Есть два свободных оператора, которые используются в LIKE:
🔻 % (ни одного, один или несколько символов)
🔻 _ (один символ)
➡ Выведем список курсов, в имени которых содержится «to», и список курсов, название которых начинается с «CS-»:
SELECT * FROM course
WHERE title LIKE ‘%to%’;
SELECT * FROM course
WHERE course_id
LIKE 'CS-___';
➡ С помощью IN можно указать несколько значений для оператора WHERE. Выведем список студентов с направлений Comp. Sci., Physics и Elec. Eng.:
SELECT * FROM student
WHERE dept_name IN (‘Comp. Sci.’, ‘Physics’, ‘Elec. Eng.’);
➡ JOIN используется для связи двух или более таблиц с помощью общих атрибутов внутри них. На изображении ниже показаны различные способы объединения в SQL. Обратите внимание на разницу между левым внешним объединением и правым внешним объединением:
SELECT * FROM course
JOIN department
ON course.dept_name=department.dept_name;
SELECT prereq.course_id, title, dept_name, credits, prereq_id
FROM prereq
LEFT OUTER JOIN course
ON prereq.course_id=course.course_id;
SELECT course.course_id, title, dept_name, credits, prereq_id
FROM prereq
RIGHT OUTER JOIN course
ON prereq.course_id=course.course_id;
➡ View — это виртуальная таблица SQL, созданная в результате выполнения выражения. Она содержит строки и столбцы и очень похожа на обычную SQL-таблицу. View всегда показывает самую свежую информацию из базы данных.
🔻 Создание:
CREATE VIEW view_name AS
SELECT col_name1, col_name2, …,
FROM table_name
WHERE condition;
🔻 Удаление:
DROP VIEW view_name;
➡ Создадим view, состоящую из курсов с 3 кредитами:
CREATE VIEW my_view
AS SELECT *
FROM course
WHERE credits = 3;
➡ Эти функции используются для получения совокупного результата, относящегося к рассматриваемым данным. Ниже приведены общеупотребительные агрегированные функции:
🔻 COUNT (col_name) — возвращает количество строк
🔻 SUM (col_name) — возвращает сумму значений в данном столбце
🔻 AVG (col_name) — возвращает среднее значение данного столбца
🔻 MIN (col_name) — возвращает наименьшее значение данного столбца
🔻 MAX (col_name) — возвращает наибольшее значение данного столбца
💟💟💟 КОМАНДА AS
➡ Если вы взгляните на предыдущий пример, то вы заметите, что есть два столбца, названных одинаково: «name». Часто это может запутать. Решением данной проблемы являются псевдонимы. Они, к слову, помогают сделать название столбца красивее или понятнее в случае необходимости. Чтобы присвоить столбцу псевдоним, можно использовать ключевое слово AS:
SELECT games.name, games.genre, devs.name AS developer, devs.country
FROM video_games AS games
INNER JOIN game_developers AS devs
ON games.developer_id = devs.id;
💟💟💟 ВЛОЖЕННЫЕ ПОДЗАПРОСЫ
➡ Вложенные подзапросы — это SQL-запросы, которые включают выражения SELECT, FROM и WHERE, вложенные в другой запрос. Найдём курсы, которые преподавались осенью 2009 и весной 2010 годов:
SELECT DISTINCT course_id
FROM section
WHERE semester = ‘Fall’ AND year= 2009 AND course_id IN
(
SELECT course_id
FROM section
WHERE semester = ‘Spring’ AND year= 2010
);
#having #OrderBy #between #like #in #join #view