Программирование

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

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

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

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

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

Предисловие

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

SQL Table

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

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

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

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

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

Стол людей

1. Выберите

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

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

SELECT * FROM table; 

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

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

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

 SELECT age, name FROM people; 

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

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

 SELECT age, '1234' FROM people; 

SQL Select

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

2. Где

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

 SELECT age, name FROM people WHERE age > 10; 

Где SQL

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

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

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

Другая команда, которая может использоваться вместе с этим, — ИЛИ . Вот пример:

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

Где SQL

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

3. Заказ

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

 SELECT name, age FROM people ORDER BY age DESC; 

Заказ SQL

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

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

Заказ SQL

ORDER BY , возможно, наиболее полезен в сочетании с другими командами. Не все запросы будут возвращать данные в логическом или упорядоченном виде — эта команда позволяет вам это изменить.

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

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

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

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

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

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

SQL Join

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

  • (INNER) JOIN — возвращает строки с совпадением в обеих таблицах.
  • LEFT (OUTER) JOIN — возвращает все строки из левой таблицы с любыми совпадениями из правой таблицы. Если совпадений нет, записи левой таблицы все равно возвращаются.
  • RIGHT (OUTER) JOIN — это противоположность левому соединению: возвращаются все строки из правой таблицы вместе с любыми совпадениями в левой таблице.
  • FULL (OUTER) JOIN — возвращает любые записи с совпадением в любой таблице.

Синтаксис «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 используется для изменения структуры таблицы. Это немного ограничено, так как ваша база данных не позволит вам изменить таблицу, если существующие данные вызовут конфликт — например, изменив строку на целое число. В этих случаях сначала исправьте данные, а затем измените таблицу. Вот пример:

 ALTER TABLE people ADD height integer; 

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

13. Drop Table

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

 DROP TABLE people; 

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

Это все на сегодня. Я надеюсь, что вы узнали некоторые полезные трюки! Вы можете узнать, как сделать сайт , а затем используйте приобретенные навыки, чтобы сделать его динамичным — просто убедитесь, что вы не делаете эти ошибки. или оставьте уязвимым для SQL-инъекций . Если вы не уверены, что вам нужно изучать SQL, рассматривали ли вы генератор статического сайта ?

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

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

Похожие посты
Программирование

Что такое канал RSS? (И где его взять)

Программирование

7 причин, почему изображения не загружаются на ваш сайт

Программирование

Запустите агент SQL Server: настройте SQL Server 2012

Программирование

15 лучших бесплатных обоев дня Святого Патрика