
Изучаем SQL-запросы - Учебное пособие по запросам к базе данных для начинающих
SQL расшифровывается как язык структурированных запросов (Structured Query Language) и является языком, который вы используете для управления данными в базах данных. SQL состоит из команд и декларативных операторов, которые действуют как инструкции для базы данных, чтобы она могла выполнять задачи.
Вы можете использовать команды SQL для создания таблицы в базе данных, для добавления и изменения больших объемов данных, для поиска в ней, чтобы быстро найти что-то конкретное, или для удаления таблицы целиком.
В этой статье мы рассмотрим некоторые из наиболее распространенных команд SQL для начинающих и то, как вы можете использовать их для эффективного запроса базы данных, то есть для запроса конкретной информации.
Базовая структура базы данных
Прежде чем мы начнем, вы должны понять иерархию базы данных.
База данных SQL - это набор связанной информации, хранящейся в таблицах. В каждой таблице есть столбцы, описывающие данные в них, и строки, содержащие фактические данные. Поле - это отдельный фрагмент данных в строке.
Например, удаленная компания может иметь несколько баз данных. Чтобы увидеть полный список их баз данных, мы можем ввести SHOW DATABASES; и мы можем подключиться к базе данных сотрудников.
Результат будет выглядеть примерно так:
+--------------------+
| Databases |
+--------------------+
| mysql |
| information_schema |
| employees |
| test |
| sys |
+--------------------+
В одной базе данных может быть несколько таблиц. Взяв пример из вышеупомянутого, чтобы увидеть различные таблицы в базе данных сотрудников, мы можем сделать запрос SHOW TABLES in employees;. Это запрос выведет список всех существующих таблиц в базе данных employees.
+----------------------+
| Tables_in_employees |
+----------------------+
| engineering |
| product |
| marketing |
| sales |
+----------------------+
Каждая таблица состоит из разных наборов столбцов, описывающих данные.
Чтобы увидеть набор столбцов в таблице, используйте SQL запрос Describe engineering ;. Например, таблица engineering может иметь столбцы, определяющие один атрибут, такие как employee_id, first_name, last_name, email, country и salary.
+-----------+-------------------+--------------+
| Name | Null | Type |
+-----------+-------------------+--------------+
|EMPLOYEE_ID| NOT NULL | INT(6) |
|FIRST_NAME | NOT NULL |VARCHAR2(20) |
|LAST_NAME | NOT NULL |VARCHAR2(25) |
|EMAIL | NOT NULL |VARCHAR2(255) |
|COUNTRY | NOT NULL |VARCHAR2(30) |
|SALARY | NOT NULL |DECIMAL(10,2) |
+-----------+-------------------+--------------+
Таблицы также состоят из строк, которые представляют собой отдельные записи в таблице. Например, строка будет включать записи под столбцами employee_id, first_name, last_name, e-mail, salary и country. Эти строки будут определять и предоставлять информацию об одном человеке в группе инженеров.
Базовые запросы SQL
Все операции, которые вы можете выполнять с данными, следуют аббревиатуре CRUD.
CRUD обозначает 4 основные операции, которые мы выполняем при запросе базы данных: Create (создание), Read (чтение), Update (обновление) и Delete (удаление).
Ниже мы рассмотрим некоторые базовые запросы SQL вместе с их синтаксисом, необходимые чтобы начать работу с базами данных.
SQL оператор CREATE DATABASE
Чтобы создать базу данных с именем engineering, мы можем использовать следующий код:
CREATE DATABASE engineering;
SQL оператор CREATE TABLE
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype
);
Этот запрос создает новую таблицу внутри базы данных.
Он указываем имятаблица, и различные столбцы, которые мы хотим, чтобы наша имела таблица.
Мы можем использовать множество типов данных. Вот некоторые из наиболее распространенных: INT, DECIMAL, DATETIME, VARCHAR, NVARCHAR, FLOAT и BIT.
В нашем примере выше это может выглядеть следующим образом:
CREATE TABLE engineering (
employee_id int(6) NOT NULL,
first_name varchar(20) NOT NULL,
last_name varchar(25) NOT NULL,
email varchar(255) NOT NULL,
country varchar(30),
salary decimal(10,2) NOT NULL
);
Таблица, которую мы создаем из этих данных, будет выглядеть примерно так:
employee_id | first_name | last_name | country | salary | |
---|---|---|---|---|---|
|
SQL оператор ALTER TABLE
После создания таблицы мы можем изменить ее, добавив к ней еще один столбец.
ALTER TABLE table_name
ADD column_name datatype;
Например, если бы мы хотели, мы могли бы добавить столбец birthday в нашу существующую таблицу, набрав:
ALTER TABLE engineering
ADD birthday date;
Теперь наша таблица будет выглядеть так:
employee_id | first_name | last_name | country | salary | birthday | |
---|---|---|---|---|---|---|
|
SQL оператор INSERT
Так мы вставляем данные в таблицы и создаем новые строки. Это часть C(create) в CRUD.
INSERT INTO table_name(column1, column2, column3,..)
VALUES(value1, 'value2', value3,..);
В запросе INSERT INTO мы можем указать столбцы, которые мы хотим заполнить информацией.
Внутри VALUES находится информация, которую мы хотим сохранить. Это создает новую запись в таблице, которая представляет собой новую строку.
Всякий раз, когда мы вставляем строковые значения, они заключаются в одинарные кавычки ''.
Например:
INSERT INTO table_name(employee_id,first_name,last_name,email,country,salary)
VALUES
(1,'Timmy','Jones','timmy@gmail.com','USA',2500.00);
(2,'Kelly','Smith','ksmith@gmail.com','UK',1300.00);
Таблица теперь будет выглядеть так:
employee_id | first_name | last_name | country | salary | |
---|---|---|---|---|---|
1 | Timmy | Jones | timmy@gmail.com | USA | 2500.00 |
2 | Kelly | Smith | ksmith@gmail.com | UK | 1300.00 |
SQL оператор SELECT
Этот оператор извлекает данные из базы данных. Это R (read) часть CRUD.
SELECT column1,column2 FROM table_name;
В нашем предыдущем примере это выглядело бы так:
SELECT first_name,last_name
FROM engineering;
Вывод:
+-----------+----------+
|FirstName | LastName |
+-----------+----------+
| Timmy | Jones |
| Kelly | Smith |
+-----------+----------+
Оператор SELECT указывает на конкретный столбец, из которого мы хотим получить данные, которые должны отображаться в результатах.
Часть FROM определяет саму таблицу из которой будетпроисходить выборка.
Вот еще один пример SELECT:
SELECT * FROM table_name;
Символ звездочка * указывает, что необходимо выбрать все поля из указанной нами таблицы.
SQL оператор WHERE
WHERE позволяет нам уточнить наши запросы.
Если бы мы хотели отфильтровать нашу таблицу engineering для поиска сотрудников с определенной зарплатой, мы бы использовали WHERE.
SELECT employee_id,first_name,last_name,email,country
FROM engineering
WHERE salary > 1500
Таблица из предыдущего примера:
employee_id | first_name | last_name | country | salary | |
---|---|---|---|---|---|
1 | Timmy | Jones | timmy@gmail.com | USA | 2500.00 |
2 | Kelly | Smith | ksmith@gmail.com | UK | 1300.00 |
Результат выполнения запроса:
+-----------+----------+----------+----------------+------------+
|employee_id|first_name|last_name |email |country |
+-----------+----------+----------+----------------+------------+
| 1| Timmy |Jones |timmy@gmail.com | USA |
+-----------+----------+----------+----------------+------------+
Это фильтрует и показывает результаты, которые удовлетворяют условию, т. е. отображаются только строки людей с зарплатой более 1500.
SQL операторы AND, OR и BETWEEN
Эти операторы позволяют сделать запрос еще более конкретным, добавив дополнительные критерии в оператор WHERE.
Оператор AND принимает два условия, и оба они должны быть истинными, чтобы строка отображалась в результате.
SELECT column_name
FROM table_name
WHERE column1 =value1
AND column2 = value2;
Оператор OR принимает два условия, и любое из них должно быть истинным, чтобы строка отображалась в результате.
SELECT column_name
FROM table_name
WHERE column_name = value1
OR column_name = value2;
Оператор BETWEEN отфильтровывает определенный диапазон чисел или текста.
SELECT column1,column2
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
Мы также можем использовать эти операторы в сочетании друг с другом.
Скажем, наша таблица теперь такая:
employee_id | first_name | last_name | country | salary | |
---|---|---|---|---|---|
1 | Timmy | Jones | timmy@gmail.com | USA | 2500.00 |
2 | Kelly | Smith | ksmith@gmail.com | UK | 1300.00 |
3 | Jim | White | jwhite@gmail.com | UK | 1200.76 |
4 | José Luis | Martìnez | jmart@gmail.com | Mexico | 1275.87 |
5 | Emilia | Fischer | emfis@gmail.com | Germany | 2365.90 |
6 | Delphine | Lavigne | lavigned@gmail.com | France | 2108.00 |
7 | Louis | Meyer | lmey@gmail.com | Germany | 2145.70 |
Если бы мы использовали оператор, подобный приведенному ниже:
SELECT * FROM engineering
WHERE employee_id BETWEEN 3 AND 7
AND
country = 'Germany';
Мы получили бы такой вывод:
+------------+-----------+-----------+----------------+--------+--------+
|employee_id | first_name| last_name | email |country |salary |
+------------+-----------+-----------+----------------+--------+--------+
|5 |Emilia |Fischer |emfis@gmail.com | Germany| 2365.90|
|7 |Louis |Meyer |lmey@gmail.com | Germany| 2145.70|
+------------+-----------+-----------+----------------+--------+--------+
Это выбирает все поля, у строк которых есть employee_id от 3 до 7 и указана страна Germany.
SQL Оператор ORDER BY
Оператор ORDER BY сортирует по столбцам, упомянутым в операторе SELECT.
Он сортирует результаты и представляет их в алфавитном или числовом порядке по убыванию или возрастанию (по умолчанию - по возрастанию).
Мы можем указать направление сортировки с помощью команды: ORDER BY имя_столбца DESC | ASC.
SELECT employee_id, first_name, last_name,salary
FROM engineering
ORDER BY salary DESC;
В приведенном выше примере мы сортируем зарплаты сотрудников в команде инженеров и представляем их в порядке убывания числового значения.
SQL оператор GROUP BY
GROUP BY позволяет нам объединять строки с идентичными данными.
Это полезно при аггрегации данных.
SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name;
В этом запросе COUNT (*) подсчитывает каждую строку отдельно и возвращает количество строк в указанной таблице, группируя их по определенному признаку.
SQL оператор LIMIT
Оператор LIMIT позволяет указать максимальное количество строк, которые должны возвращаться в результатах.
Это полезно при работе с большим набором данных, из-за которого выполнение запросов может занять много времени. Ограничивая получаемые результаты, вы можете сэкономить время.
SELECT column1,column2
FROM table_name
LIMIT number;
SQL оператор UPDATE
Вот как мы обновляем строку в таблице. Это U(update) часть CRUD.
UPDATE table_name
SET column1 = value1,
column2 = value2
WHERE condition;
Условие WHERE указывает запись, которую вы хотите отредактировать.
UPDATE engineering
SET country = 'Spain'
WHERE employee_id = 1
Наша таблица до выполнения запроса:
employee_id | first_name | last_name | country | salary | |
---|---|---|---|---|---|
1 | Timmy | Jones | timmy@gmail.com | USA | 2500.00 |
2 | Kelly | Smith | ksmith@gmail.com | UK | 1300.00 |
3 | Jim | White | jwhite@gmail.com | UK | 1200.76 |
4 | José Luis | Martìnez | jmart@gmail.com | Mexico | 1275.87 |
5 | Emilia | Fischer | emfis@gmail.com | Germany | 2365.90 |
6 | Delphine | Lavigne | lavigned@gmail.com | France | 2108.00 |
7 | Louis | Meyer | lmey@gmail.com | Germany | 2145.70 |
Теперь будет выглядеть так:
employee_id | first_name | last_name | country | salary | |
---|---|---|---|---|---|
1 | Timmy | Jones | timmy@gmail.com | Spain | 2500.00 |
2 | Kelly | Smith | ksmith@gmail.com | UK | 1300.00 |
3 | Jim | White | jwhite@gmail.com | UK | 1200.76 |
4 | José Luis | Martìnez | jmart@gmail.com | Mexico | 1275.87 |
5 | Emilia | Fischer | emfis@gmail.com | Germany | 2365.90 |
6 | Delphine | Lavigne | lavigned@gmail.com | France | 2108.00 |
7 | Louis | Meyer | lmey@gmail.com | Germany | 2145.70 |
Этот запрос обновит столбец country сотрудника с employee_id равное 1.
SQL оператор DELETE
DELETE - это D-часть CRUD. С помощью оператора DELETE мы удаляем запись из таблицы.
DELETE FROM table_name
WHERE condition;
Например, удадение из нашей таблицы engineering удаление записи может выглядеть так:
DELETE FROM engineering
WHERE employee_id = 2;
Этот запрос удаляет запись сотрудника с идентификатором 2 из таблицы engineering.
SQL оператор DROP COLUMN
Чтобы удалить определенный столбец из таблицы, мы сделаем следующее:
ALTER TABLE table_name
DROP COLUMN column_name;
SQL оператор DROP TABLE
Чтобы удалить всю таблицу, мы можем сделать так:
DROP TABLE table_name;
Оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи