13 самых важных команд SQL, которые должен знать любой программист

Базы данных управляют современной сетью. Каждый большой или динамичный веб-сайт каким-то образом использует базу данных и в сочетании с Язык структурированных запросов (SQL), возможности манипулирования данными действительно безграничны. Если вы уже знаете SQL, обязательно ознакомьтесь с этими навыками программирования

Все разработчики сайта должны знать.

Сегодня я покажу вам некоторые основные команды, которые вы должны знать как программист.

Существует много имен для данных, возвращаемых из таблицы базы данных. Данные обычно называют Ряды, документация, или же Кортеж. В этой статье я буду использовать эти термины взаимозаменяемо.

Предисловие

Все сегодняшние примеры будут основаны на четырех вымышленных таблицах. покупатель Таблица содержит имя и возраст покупателей:

Заказчики таблиц SQL

высоты Таблица содержит имя и рост любого человека:

Высота таблицы SQL

штат сотрудников Таблица содержит имя и возраст сотрудников — точно так же, как таблица клиентов:

Таблица персонала SQL

Финальный стол называется люди содержит имя и возраст людей, так же как таблицы клиентов и персонала:

Стол людей

1. Выберите

Выбрать утверждение является самым простым, и важно, чтобы вы понимали его, так как оно лежит в основе почти всех других команд. Рекомендуется писать зарезервированные слова SQL в верхнем регистре, поскольку это облегчает чтение и понимание команды.

Как следует из названия, select используется для выбора данных из базы данных. Вот самое простое использование:

SELECT * FROM table;

Здесь есть две части. Первая часть (ВЫБРАТЬ *) указывает, какие столбцы вы хотите выбрать. Звездочка указывает на то, что вы хотите выбрать все столбцы в таблице. Вторая часть (С таблицы) сообщает вашей базе данных, откуда вы хотите получить эти данные. Замените «table» на имя вашей таблицы базы данных.

Этот выбор известен как «выбрать звезду». Использование звездочки — хороший способ выяснить, какие данные находятся в таблице, но я не рекомендую использовать их для любого производственного кода. При использовании звездочки выбора, ядро ​​базы данных может предоставить вам нужные данные. Вы не можете контролировать порядок возврата данных, поэтому, если кто-то добавит новый столбец в таблицу, вы можете обнаружить, что переменные на вашем языке программирования больше не представляют правильные данные. К счастью, есть решение.

Вы можете явно указать, какие столбцы вы хотите получить, например:

SELECT age, name FROM people;

Этот запрос извлекает столбцы «возраст» и «имя» из таблицы «люди». Такое явное указание может быть немного утомительным, если у вас много данных, но это уменьшит проблемы в будущем, а также облегчит понимание вашего SQL любым будущим программистом.

Если вы хотите выбрать дополнительный фрагмент данных, но он не сохраняется ни в одной из ваших таблиц, вы можете сделать это следующим образом:

SELECT age, '1234' FROM people;

SQL Select

Любая строка внутри одинарных кавычек будет возвращена вместо совпадения с именем столбца.

2. Где

Команда select отлично подходит для извлечения данных, но что, если вы хотите отфильтровать результаты немного больше? Как насчет поиска только людей с голубыми глазами? А как насчет людей, родившихся в январе, которые работают механиками? Это где где приходит команда. Это позволяет вам применять условия к выбору, и вы просто добавляете его в конец оператора:

SELECT age, name FROM people WHERE age > 10;

Где SQL

Этот запрос теперь разрешен только людям старше 10 лет. Вы можете комбинировать несколько условий, используя А ТАКЖЕ оператор:

SELECT age, name FROM people WHERE age > 10 AND age < 20;

А ТАКЖЕ Команда работает точно так же, как в английском языке: она применяет другое условие к выражению. В этом примере возвращаемыми данными будут любые записи с возрастом от 10 до 20 лет. Поскольку нет соответствующих результатов, данные не возвращаются.

Еще одна команда, которая может использоваться в сочетании с этим, ИЛИ ЖЕ. Вот пример:

SELECT age, name FROM people WHERE age > 10 OR name = 'Joe';

Где SQL

Этот запрос возвращает записи, где возраст больше 10 лет или имя равно «Джо». Обратите внимание, что есть только один знак равенства? Большинство языков программирования используют двойное равенство (==) для проверки эквивалентности. Это не требуется для подавляющего большинства механизмов баз данных (но это может сильно зависеть от среды, поэтому сначала проверьте еще раз).

3. Заказ

порядок Команда используется для сортировки возвращаемых результатов. Это еще один простой в использовании. Просто добавьте его в конец вашего заявления:

SELECT name, age FROM people ORDER BY age DESC;

Заказ SQL

Необходимо указать столбец и порядок, в котором можно ASC по возрастанию или DESC для спуска. Вы можете заказать по нескольким столбцам, как это:

SELECT name, age FROM people ORDER BY name ASC, age DESC

Заказ SQL

СОРТИРОВАТЬ ПО возможно, наиболее полезно в сочетании с другими командами. Не все запросы будут возвращать данные в логическом или упорядоченном виде - эта команда позволяет вам это изменить.

4. Присоединяйтесь

присоединиться Команда используется для объединения связанных данных, хранящихся в одной или нескольких таблицах. Вы присоединяете вторую таблицу к первой таблице и указываете, как связаны данные. Вот основной пример:

SELECT age, name, height FROM people LEFT JOIN heights USING (name);

Здесь происходит несколько вещей. Вы должны начать с синтаксиса «LEFT JOIN», который указывает, что вы хотите присоединиться к таблице, используя соединение типа left. Затем укажите таблицу, к которой вы хотите присоединиться (высота). ИСПОЛЬЗОВАНИЕ (имя) Синтаксис гласит, что столбец «имя» можно найти в обеих таблицах и что его следует использовать в качестве ключа для объединения таблиц.

Не беспокойтесь, если ваши столбцы имеют разные имена в каждой таблице. Вы можете использовать «ON» вместо «USING»:

SELECT age, name, height FROM people LEFT JOIN heights ON (namea = nameb);

SQL Join

В операторе on явно указывается, на какие столбцы указывать. Существует много типов объединений, и для подробного описания каждого из них потребуется много времени, поэтому вот краткий обзор их использования:

  • (ВНУТРЕННЕЕ СОЕДИНЕНИЕ - Возвращает строки с совпадением в обеих таблицах.
  • ЛЕВЫЙ (НАРУЖНЫЙ) ПРИСОЕДИНЯЙТЕСЬ - Возвращает все строки из левой таблицы с любыми совпадениями из правой таблицы. Если совпадений нет, левые записи таблицы по-прежнему возвращаются.
  • ПРАВО (НАРУЖНОЕ) РЕШЕНИЕ - Это противоположно левому соединению: возвращаются все строки из правой таблицы вместе с любыми совпадениями в левой таблице.
  • ПОЛНОЕ (НАРУЖНОЕ) РЕШЕНИЕ - Возвращает любые записи с совпадением в любой таблице.

Синтаксис «INNER» или «OUTER» является необязательным. Это может облегчить понимание, но вам не нужно указывать это в подавляющем большинстве случаев.

5. Псевдоним

Теперь вы знаете основы, давайте посмотрим на псевдоним команда. Это используется для временного переименования таблицы - больше псевдонима, чем что-либо еще, поскольку это новое имя существует только внутри отдельной транзакции, которую вы выполняете. Вот как вы используете это:

SELECT A.age FROM people A;

Вы можете использовать любое действительное имя, которое вам нравится, но я люблю использовать буквы алфавита. Перед каждым именем столбца добавляется псевдоним. Этот псевдоним назначается таблице сразу после ее объявления. Это точно так же, как делать это:

SELECT people.age FROM people;

Вместо того, чтобы вводить длинное имя таблицы, вы можете ввести простую и легко запоминающуюся букву - но какой в ​​этом смысл? Что ж, если вы выбираете из нескольких таблиц, легко запутаться в том, какие столбцы принадлежат какой таблице. Если в обеих ваших таблицах есть столбцы с одинаковым именем, ваш запрос к базе данных может даже не выполняться без явной ссылки на имя таблицы или псевдоним. Вот пример с двумя таблицами:

SELECT staff.age, staff.name, customers.age, customers.name FROM staff, customers;

И вот тот же запрос с псевдонимами:

SELECT A.age, A.name, B.age, B.name FROM staff A, customers B;

Таблице персонала присваивается псевдоним «A», а таблице клиентов - псевдоним «B». Псевдонимы таблиц действительно помогают сделать ваш код более легким для понимания и уменьшают количество набираемого текста.

Вы также можете переименовать столбец с псевдонимом, используя команду «AS»:

SELECT age AS person_age FROM people;

Псевдоним SQL

Когда этот запрос выполняется, столбец теперь будет называться «person_age» вместо «age».

6. Союз

союз отличная команда Это позволяет вам добавлять строки друг к другу. В отличие от объединений, которые добавляют соответствующие столбцы, объединение может добавлять несвязанные строки при условии, что они имеют одинаковое количество и имя столбцов. Вот как вы используете это:

SELECT age, name FROM customers
UNION
SELECT age, name FROM staff;

SQL Union

Вы можете рассматривать объединение как способ объединения результатов двух запросов. Объединение будет возвращать результаты только в том случае, если между двумя запросами есть уникальная строка. Вы можете использовать синтаксис «UNION ALL» для возврата всех данных, независимо от дубликатов:

SELECT age, name FROM customers
UNION ALL
SELECT age, name FROM staff;

SQL Union

Обратите внимание, как меняется порядок строк? Union работает наиболее эффективно, поэтому возвращаемые данные могут различаться по порядку.

Возможный вариант использования объединения - это промежуточный итог: вы можете объединить запрос общей суммы в запрос отдельных итогов для конкретного сценария.

7. Вставьте

Теперь вы знаете все о получении данных из базы данных, но как насчет их вставки? Это где вставить Команда входит. Вот пример:

INSERT INTO people(name, age) VALUES('Joe', 102);

Вы должны указать имя таблицы (люди) и столбцы, которые вы хотите использовать (имя и возраст). Синтаксис «VALUES» затем используется для предоставления значений для вставки. Они должны быть в том же порядке, что и столбцы, которые были указаны ранее.

Вы не можете указать предложение where для вставок, и вам необходимо убедиться, что вы соблюдаете все необходимые ограничения таблицы.

8. Обновление

После вставки некоторых данных естественно изменить отдельные строки. Вот Обновить синтаксис команды:

UPDATE people SET name = 'Joe', age = 101;

Вы должны указать таблицу, которую хотите изменить, а затем использовать синтаксис «SET», чтобы указать столбцы и их новые значения. Этот пример хорош, но он обновит каждую запись - что не всегда желательно!

Чтобы быть более конкретным, вы можете использовать предложения WHERE так же, как при выполнении выбора:

UPDATE people SET name = 'Joe', age = 101 WHERE name = 'James';

Вы даже можете указать несколько условий, используя «И» и «ИЛИ»:

UPDATE people SET name = 'Joe', age = 101 WHERE (name = 'James' AND age = 100) OR name = 'Ryan';

Обратите внимание, как скобки используются для ограничения условий.

9. Уперт

Upsert это странно звучащее слово, но это невероятно полезная команда. Скажем, у вас есть ограничение на вашу таблицу, и вы указали, что вам нужны только записи с уникальными именами - например, вы не хотите хранить две строки с одним и тем же именем. Если вы попытаетесь вставить несколько значений «Joe», ваш движок базы данных выдаст ошибку и откажется это сделать (совершенно правильно). UPSERT позволяет обновить запись, если она уже существует. Это невероятно полезно! Без этой команды вам пришлось бы написать много логики, чтобы сначала проверить, существует ли запись, вставить, если ее нет, в противном случае получить правильный первичный ключ и затем обновить.

К сожалению, upserts по-разному реализованы в разных движках базы данных. PostgreSQL только недавно приобрел эту возможность, в то время как у MySQL она была достаточно долгое время. Вот синтаксис MySQL для справки:

INSERT INTO people(name, age)
VALUES('Joe', 101)
ON DUPLICATE KEY UPDATE age = 101;

Обратите внимание, что это, по сути, обновление и оператор вставки, который можно обозначить как «обновление, если вставка не удалась».

10. Удалить

удалять используется для полного удаления записей - это может быть очень вредно при злоупотреблении! Основной синтаксис очень прост в использовании:

DELETE FROM people;

Как и большинство других команд, это удалит все! Вам нужно использовать где, чтобы ограничить его немного более вменяемым количеством строк - в идеале один:

DELETE FROM people WHERE name = 'Joe';

Если вы разрабатываете систему, часто целесообразно реализовать «мягкое удаление». На самом деле вы никогда не запускаете команду удаления, вместо этого вы создаете удаленный столбец, а затем проверяете этот столбец в ваших выборках - это может избежать большого потенциала. смущение, если вы можете быстро и легко восстановить предположительно удаленные записи. Однако это не заменит правильное резервное копирование.

11. Создать таблицу

создать таблицу Команда используется для создания таблиц. Это еще один очень простой:

CREATE TABLE people (
name TEXT,
age, INTEGER,
PRIMARY KEY(name)
);

Обратите внимание, что имена столбцов и ограничения заключены в квадратные скобки, и столбцы получают соответствующий тип данных. Указан первичный ключ, как это требуется в любом хорошем дизайне базы данных.

12. Изменить таблицу

изменить таблицу Команда используется для изменения структуры таблицы. Это немного ограничено, поскольку ваша база данных не позволит вам изменить таблицу, если существующие данные вызовут конфликт - например, изменив строку на целое число. В этих случаях сначала исправьте данные, а затем измените таблицу. Вот пример:

ALTER TABLE people ADD height integer;

В этом примере добавляется столбец с именем «высота» типа integer в таблицу пользователей. На самом деле нет предела тому, что вы можете изменить.

13. Drop Table

Последняя команда дроп стол. Думайте об этом как об удалении, но вместо того, чтобы удалять одну запись, она удаляет каждую запись вместе с таблицей! Вот как вы используете это:

DROP TABLE people;

Это довольно радикальная команда, и нет причин для ее программирования в вашей системе. Это должно быть выполнено только вручную в подавляющем большинстве случаев, и это может быть очень разрушительным.

Это все на сегодня. Я надеюсь, что вы узнали некоторые полезные трюки! Вы могли бы узнать, как сделать сайт

и затем используйте свои новые навыки, чтобы сделать их динамичными - просто убедитесь, что вы не делаете эти ошибки

или оставьте уязвимым для SQL-инъекций

, Если вы не уверены, что вам нужно изучать SQL, рассматривали ли вы статический генератор сайтов

?

Почему бы не оставить комментарий ниже с вашими любимыми советами и рекомендациями по SQL?

Кредиты изображений: HYS_NP / Shutterstock

Ссылка на основную публикацию
Adblock
detector