Изучаем SQL-запросы - Учебное пособие по запросам к базе данных для начинающих

Изучаем 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 email 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 email 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 email 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 email 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 email 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 email 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 email 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;
  • share:
Комментарии 0

Оставить комментарий


Комментарии могут оставлять только зарегистрированные пользователи

shape shape