Каждый веб — разработчик должен знать SQL. Мы уже разбирали некоторые понятия о SQL.
Будет предоставлен небольшой курс, который будет состоять из нескольких частей. В каждой из которых мы разберемся с самыми основными и не обходимыми операторами.
Все началось примерно с 70-х годов и по-прежнему широко используется, и на данный момент практически во всех серьезных приложениях без него не обойтись. Большинство имеют библиотеки для работы — ActiveRecord, doctrine, Hibernate и другие. Но на данный момент будем изучать просто операторы
1. Создание таблицы
При создании новых таблиц следует использовать оператор SQL CREATE TABLE.
Здесь мы создаем простую таблицу с именем Месяц. Она состоит из 3-х колонок:
- Идентификационный номер месяца в течение года (целое число).
- Название — название месяца (строка, максимум 10 символов).
- Дней — количество дней в этом месяце (целое число).
Выглядит это следующим образом:
1 |
CREATE TABLE months (id int, name varchar(10), days int); |
Кроме того, при создании таблицы, целесообразно, добавлять первичный ключ к одной из колонок. Это поможет сохранить записи уникальными и ускорит запросы на выборку.
2. Вставка строк
Теперь давайте добавим месяцы с несколькими рядами информации. Добавление записей в таблицу осуществляется через оператор INSERT
. Есть два способа его использования:
Первый способ не указывая имена столбцов, где будут вставлены данные, только значения.
1 |
INSERT INTO months VALUES (1,'January',31); |
Но есть проблема — если мы добавим дополнительные столбцы в будущем, запрос задать не получится. Разумнее выбирать второй способ:
1 |
INSERT INTO months (id,name,days) VALUES (2,'February',29); |
id | name | days |
---|---|---|
1 | January | 31 |
2 | February | 29 |
1 2 |
INSERT INTO months (id,name,days) VALUES (3, "March", 31); |
3. Выборка
Запрос это наш лучший друг, когда мы хотим получить данные из базы данных. Они используются постоянно.
Самый простой оператор это SELECT
, например, вот этот запрос, будет возвращать все столбцы и строки из таблицы символов:
1 |
SELECT name, FROM "characters" |
Звездочкой (*) означает, что мы хотим захватить все столбцы, не исключая ничего. Так как базы данных SQL , как правило , состоят из более чем одной таблицы, FROM
ключевое слово его требуется указать , какие таблицы мы хотим посмотреть в.
Иногда не обязательно, чтобы все столбцы отображались в таблице. SQL позволяет выбрать и получить только те, которые нам нужны: вместо того, чтобы поставить звездочки (*), мы пишем имена нужных столбцов.
1 |
SELECT name, FROM "characters" ORDER BY name DESC |
Кроме того, во многих случаях, мы хотим, чтобы результаты сортировались определенным образом. В SQL мы делаем это с ORDER BY.
может потребоваться дополнительный модификатор — ASC ( по умолчанию) или DESC для сортировки:
1 2 |
SELECT name FROM "characters" |
4. WHERE
Вы узнали, как выбрать только определенные столбцы, но что если нужно выбрать только строки ? На помощь здесь приходит оператор WHERE
который позволяет нам фильтровать данные.
В этом запросе мы выбираем только те записи из таблицы символов, которые используют пистолет , чтобы бороться с злодеями.
characters
Имя | Стб2 | Стб3 | Стб4 | Стб5 |
---|---|---|---|---|
Строка1 | Пример | Пример | Пример | Пример |
Строка2 | Пример | Пример | Пример | Пример |
1 2 3 |
SELECT * FROM "characters" WHERE Стб3 = "Пример"; |
5. И / ИЛИ
WHERE
условия могут быть сделаны как конкретные , как вам нравится, с помощью логических операторов ( AND,OR
) и математики подобных сравнений (=, <,>, <=,> =, <>).
Возьмем таблицу, содержащую 4 самых основных продаваемых альбомов всех времен. Давайте выберем те из них, которые классифицируются как рок и продано менее 50 миллионов экземпляров. Это можно легко сделать путем размещения AND
оператора между двумя утверждениями.
albums
artist | album | released | genre | sales_in_millions |
---|---|---|---|---|
Michael Jackson | Thriller | 1982 | pop | 70 |
AC/DC | Back in Black | 1980 | rock | 50 |
Pink Floyd | The Dark Side of the Moon | 1973 | rock | 45 |
Whitney Houston | The Bodyguard | 1992 | soul | 44 |
1 2 3 4 |
SELECT * FROM albums WHERE genre = 'rock' AND sales_in_millions <= 50 ORDER BY released |