Что такое язык sql

Что такое язык sql

  • Переводы, 12 сентября 2018 в 19:54
  • Кирилл Поздеев

Язык SQL или S tructured Query Language (язык структурированных запросов) предназначен для управления данными в системе реляционных баз данных (RDBMS). В этой статье будет рассказано о часто используемых командах SQL, с которыми должен быть знаком каждый программист. Этот материал идеально подойдёт для тех, кто хочет освежить свои знания об SQL перед собеседованием на работу. Для этого разберите приведённые в статье примеры и вспомните, что проходили на парах по базам данных.

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

Настройка базы данных для примеров

Создайте базу данных для демонстрации работы команд. Для работы вам понадобится скачать два файла: DLL.sql и InsertStatements.sql. После этого откройте терминал и войдите в консоль MySQL с помощью следующей команды (статья предполагает, что MySQL уже установлен в системе):

Затем введите пароль.

Выполните следующую команду. Назовём базу данных «university»:

SQL ( ˈɛsˈkjuˈɛl ; англ. structured query language — «язык структурированных запросов») — декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.

Является, прежде всего, информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных. SQL считается языком программирования, в общем случае (без ряда современных расширений) не является тьюринг-полным, но вместе с тем стандарт языка спецификацией SQL/PSM предусматривает возможность его процедурных расширений.

Изначально SQL был основным способом работы пользователя с базой данных и позволял выполнять следующий набор операций:

  • создание в базе данных новой таблицы;
  • добавление в таблицу новых записей;
  • изменение записей;
  • удаление записей;
  • выборка записей из одной или нескольких таблиц (в соответствии с заданным условием);
  • изменение структур таблиц.

Со временем SQL усложнился — обогатился новыми конструкциями, обеспечил возможность описания и управления новыми хранимыми объектами (например, индексы, представления, триггеры и хранимые процедуры) — и стал приобретать черты, свойственные языкам программирования.

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

Содержание

История [ править | править код ]

Первые разработки [ править | править код ]

В начале 1970-х годов в одной из исследовательских лабораторий компании IBM была разработана экспериментальная реляционная СУБД IBM System R, для которой затем был создан специальный язык SEQUEL, позволявший относительно просто управлять данными в этой СУБД. Аббревиатура SEQUEL расшифровывалась как Structured English QUEry Language — «структурированный английский язык запросов». Позже по юридическим соображениям [4] язык SEQUEL был переименован в SQL. Когда в 1986 году первый стандарт языка SQL был принят ANSI ( American National Standards Institute ), официальным произношением стало [,es kju:’ el] — эс-кью-эл. Несмотря на это, англоязычные специалисты зачастую продолжают читать SQL как сиквел (по-русски часто говорят «эс-ку-эль»).

Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования [5] . Собственно разработкой языка запросов занимались Дональд Чэмбэрлин ( Donald D. Chamberlin ) и Рэй Бойс ( Ray Boyce ). Пэт Селинджер ( Pat Selinger ) занималась разработкой стоимостного оптимизатора ( cost-based optimizer ), Рэймонд Лори ( Raymond Lorie ) занимался компилятором запросов.

SEQUEL был не единственным языком подобного назначения. В Калифорнийском Университете Беркли была разработана некоммерческая СУБД Ingres (являвшаяся дальним прародителем популярной сейчас некоммерческой СУБД PostgreSQL), которая являлась реляционной СУБД, но использовала свой собственный язык QUEL, который, не выдержал конкуренции по количеству поддерживающих его СУБД по сравнению с языком SQL. В качестве альтернативного подхода для обеспечения пользовательского доступа к базам данных также рассматривался появившийся в 1970-е годы метод QBE, впоследствии в видоизменённой форме появившийся в ряде интегрированных сред управления данными, но так и не заменивший, а лишь дополнивший SQL.

Первыми СУБД, поддерживающими новый язык, стали в 1979 году Oracle V2 для машин VAX от компании Relational Software Inc. (впоследствии ставшей компанией Oracle) и System/38 от IBM, основанная на System/R.

Стандартизация [ править | править код ]

Поскольку к началу 1980-х годов существовало несколько вариантов СУБД от разных производителей, причём каждый из них обладал собственной реализацией языка запросов, было принято решение разработать стандарт языка, который будет гарантировать переносимость ПО с одной СУБД на другую (при условии, что они будут поддерживать этот стандарт).

В 1983 году Международная организация по стандартизации (ISO) и Американский национальный институт стандартов (ANSI) приступили к разработке стандарта языка SQL. По прошествии множества консультаций и отклонения нескольких предварительных вариантов, в 1986 году ANSI представил свою первую версию стандарта, описанную в документе ANSI X3.135-1986 под названием «Database Language SQL» (Язык баз данных SQL). Неофициально этот стандарт SQL-86 получил название SQL1. Год спустя была завершена работа над версией стандарта ISO 9075-1987 под тем же названием. Разработка этого стандарта велась под патронажем Технического Комитета TC97 (англ. Technical Committee TC97 ), областью деятельности которого являлись процессы вычисления и обработки информации (англ. Computing and Information Processing ). Именно его подразделение, именуемое как Подкомитет SC21 (англ. Subcommittee SC21 ), курировало разработку стандарта, что стало залогом идентичности стандартов ISO и ANSI для SQL1 (SQL-86).

Стандарт SQL1 разделялся на два уровня. Первый уровень представлял собой подмножество второго уровня, описывавшего весь документ в целом. То есть, такая структура предусматривала, что не все спецификации стандарта SQL1 будут относиться к Уровню 1. Тем самым поставщик, заявлявший о поддержке данного стандарта, должен был заявлять об уровне, которому соответствует его реализация языка SQL. Это значительно облегчило принятие и поддержку стандарта, поскольку производители могли реализовывать его поддержку в два этапа.

Со временем к стандарту накопилось несколько замечаний и пожеланий, особенно с точки зрения обеспечения целостности и корректности данных, в результате чего в 1989 году данный стандарт был расширен, получив название SQL89. В частности, в него была добавлена концепция первичного и внешнего ключей. ISO-версия документа получила название ISO 9075:1989 «Database Language SQL with Integrity Enhancements» (Язык баз данных SQL с добавлением контроля целостности). Параллельно была закончена и ANSI-версия.

Читайте также:  Мбк центр про форум

Сразу после завершения работы над стандартом SQL1 в 1987 году была начата работа над новой версией стандарта, который должен был заменить стандарт SQL89, получив название SQL2, поскольку дата принятия документа на тот момент была неизвестна. Таким образом, фактически SQL89 и SQL2 разрабатывались параллельно. Новая версия стандарта была принята в 1992 году, заменив стандарт SQL89. Новый стандарт, озаглавленный как SQL92, представлял собой по сути расширение стандарта SQL1, включив в себя множество дополнений, имевшихся в предыдущих версиях инструкций.

Как и SQL1, SQL92 также был разделён на несколько уровней, однако, во-первых, число уровней было увеличено с двух до трёх, а во-вторых, они получили названия вместо порядковых цифр: начальный (англ. entry ), средний (англ. intermediate ), полный (англ. full ). Уровень «полный», как и Уровень 2 в SQL1 подразумевал весь стандарт целиком. Уровень «начальный» представлял собой подмножество уровня «средний», в свою очередь, представлявшего собой подмножество уровня «полный». Уровень «начальный» был сравним с Уровнем 2 стандарта SQL1, но спецификации этого уровня были несколько расширены. Таким образом, цепочка включений уровней стандартов выглядела примерно следующим образом: SQL1 Уровень 1 → SQL1 Уровень 2 → SQL92 «Начальный» → SQL92 «Средний» → SQL92 «Полный».

После принятия стандарта SQL92 к нему были добавлены ещё несколько документов, расширявших функциональность языка. Так, в 1995 году был принят стандарт SQL/CLI (Call Level Interface, интерфейс уровня вызовов), впоследствии переименованный в CLI95. На следующий год был принят стандарт SQL/PSM (Persistent Stored Modules, постоянно хранимые модули), получивший название PSM-96. [6]

Следующим стандартом стал SQL:1999 (SQL3). В настоящее время действует стандарт, принятый в 2003 году (SQL:2003) с небольшими модификациями, внесёнными позже (SQL:2008). История версий стандарта:

Год Название Иное название Изменения
1986 SQL-86 SQL-87 Первый вариант стандарта, принятый институтом ANSI и одобренный ISO в 1987 году.
1989 SQL-89 FIPS 127-1 Немного доработанный вариант предыдущего стандарта.
1992 SQL-92 SQL2, FIPS 127-2 Значительные изменения (ISO 9075); уровень Entry Level стандарта SQL-92 был принят как стандарт FIPS 127-2.
1999 SQL:1999 SQL3 Добавлена поддержка регулярных выражений, рекурсивных запросов, поддержка триггеров, базовые процедурные расширения, нескалярные типы данных и некоторые объектно-ориентированные возможности.
2003 SQL:2003 Введены расширения для работы с XML-данными, оконные функции (применяемые для работы с OLAP-базами данных), генераторы последовательностей и основанные на них типы данных.
2006 SQL:2006 Функциональность работы с XML-данными значительно расширена. Появилась возможность совместно использовать в запросах SQL и XQuery.
2008 SQL:2008 Улучшены возможности оконных функций, устранены некоторые неоднозначности стандарта SQL:2003 [7]
2011 SQL:2011 Реализована поддержка хронологических баз данных (PERIOD FOR), поддержка конструкции FETCH [8] .
2016 SQL:2016 Защита на уровне строк, полиморфные табличные функции, JSON.

Вопросы совместимости [ править | править код ]

По традиции, как и со многими стандартами в IT-индустрии, с языком SQL возникла проблема: на каком-то этапе многие производители использующего SQL программного обеспечения решили, что функциональность в текущей (на тот момент времени) версии стандарта недостаточна, и её желательно расширить. В результате у разных производителей систем управления базами данных (СУБД) в ходу разные диалекты SQL, в общем случае между собой несовместимые.

До 1996 года вопросами соответствия коммерческих реализаций SQL стандарту занимался в основном Национальный институт стандартов и технологий (NIST), который и устанавливал уровень соответствия стандарту. Поздне́е подразделение, занимавшееся СУБД, было расформировано, и на текущий момент все усилия по проверке СУБД на соответствие стандарту ложатся на её производителя.

Впервые понятие «уровня соответствия» было предложено в стандарте SQL-92. А именно, ANSI и NIST определяли четыре уровня соответствия реализации этому стандарту:

  1. Entry (базовый)
  2. Transitional (переходный) — проверку на соответствие этому уровню проводил только NIST
  3. Intermediate (промежуточный)
  4. Full (полный)

Легко можно понять, что каждый последующий уровень соответствия заведомо подразумевал соответствие предыдущему уровню. Далее, согласно данной «лесенке» стандартов любая СУБД, которая соответствовала уровню Entry, могла заявлять себя как «SQL-92 compliant» («совместимая с SQL-92»), хотя на самом деле переносимость и соответствие стандарту ограничивалось набором возможностей, входящих в этот уровень.

Положение изменилось с введением стандарта SQL:1999. Отныне стандарт приобрёл модульную структуру — основная часть стандарта была вынесена в раздел «SQL/Foundation», все остальные были выведены в отдельные модули. Соответственно, остался только один уровень совместимости — Core, что означало поддержку этой основной части. Поддержка остальных возможностей оставлена на усмотрение производителей СУБД. Аналогичное положение имело место и с последующими версиями стандарта.

NoSQL [ править | править код ]

Движение NoSQL второй половины 2000-х годов, зафиксировавшее в своём названии «отрицание SQL», было вызвано не столько отказом от языка как такового, а объединило СУБД, отказавшиеся от реляционной модели и принципов строгой согласованности ради горизонтальной масштабируемости и ряда других качеств. При этом в ранних NoSQL-системах поддержка SQL действительно отсутствовала, со временем некоторые из таких СУБД обзавелись специфическими SQL-подобными языками запросов (CQL, N1QL, AQL [en] и другими). В 2010-е годы ряд СУБД отнесли себя к категории NewSQL, в них при сохранении свойств масштабируемости NoSQL-систем реализована и поддержка SQL, в разных системах — разной степени совместимости со стандартами. Кроме того, поддержка SQL в 2010-е годы появилась не только в СУБД, но и для экосистемы Hadoop (Spark SQL, Phoenix [en] , Impala), а также в связующем программном обеспечении (брокер сообщений Kafka, система потоковой обработки Flink), таким образом, язык постепенно становится фактическим стандартом доступа к любым обрабатываемым данным, не только реляционной природы.

Элементы [ править | править код ]

Язык SQL представляет собой совокупность операторов, инструкций, вычисляемых функций.

Согласно общепринятому стилю программирования, операторы (и другие зарезервированные слова) в SQL обычно рекомендуется писать прописными буквами. [9]

Операторы SQL делятся на:

  • операторы определения данных (Data Definition Language, DDL):
  • CREATE создаёт объект базы данных (саму базу, таблицу, представление, пользователя и так далее),
  • ALTER изменяет объект,
  • DROP удаляет объект;
  • операторы манипуляции данными (Data Manipulation Language, DML):
    • SELECT выбирает данные, удовлетворяющие заданным условиям,
    • INSERT добавляет новые данные,
    • UPDATE изменяет существующие данные,
    • DELETE удаляет данные;
    • операторы определения доступа к данным (Data Control Language, DCL):
      • GRANT предоставляет пользователю (группе) разрешения на определённые операции с объектом,
      • REVOKE отзывает ранее выданные разрешения,
      • DENY задаёт запрет, имеющий приоритет над разрешением;
      • операторы управления транзакциями (Transaction Control Language, TCL):
        • COMMIT применяет транзакцию,
        • ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции,
        • SAVEPOINT делит транзакцию на более мелкие участки.
        • Читайте также:  Что такое dust absorber для телефона

          Преимущества и недостатки [ править | править код ]

          Преимущества [ править | править код ]

          Несмотря на наличие диалектов и различий в синтаксисе, в большинстве своём тексты SQL-запросов, содержащие DDL и DML, могут быть достаточно легко перенесены из одной СУБД в другую. Существуют системы, разработчики которых изначально ориентировались на применение по меньшей мере нескольких СУБД (например: система электронного документооборота Documentum может работать как с Oracle Database, так и с Microsoft SQL Server и DB2). Естественно, что при применении некоторых специфичных для реализации возможностей такой переносимости добиться уже очень трудно.

          Наличие стандартов и набора тестов для выявления совместимости и соответствия конкретной реализации SQL общепринятому стандарту только способствует «стабилизации» языка. Правда, стоит обратить внимание, что сам по себе стандарт местами чересчур формализован и раздут в размерах (например, базовая часть стандарта SQL:2003 состоит из более чем 1300 страниц текста).

          С помощью SQL программист описывает только то, какие данные нужно извлечь или модифицировать. То, каким образом это сделать, решает СУБД непосредственно при обработке SQL-запроса. Однако не стоит думать, что это полностью универсальный принцип — программист описывает набор данных для выборки или модификации, однако ему при этом полезно представлять, как СУБД будет разбирать текст его запроса. Чем сложнее сконструирован запрос, тем больше он допускает вариантов написания, различных по скорости выполнения, но одинаковых по итоговому набору данных.

          Недостатки [ править | править код ]

          Создатели реляционной модели данных Эдгар Кодд, Кристофер Дейт и их сторонники указывают на то, что SQL не является истинно реляционным языком. В частности, они указывают на следующие дефекты SQL с точки зрения реляционной теории [10] :

          • допущение строк-дубликатов в таблицах и результатах выборок, что в рамках реляционной модели данных невозможно и недопустимо;
          • поддержка неопределённых значений (NULL), создающую фактически многозначную логику;
          • значимость порядка столбцов, возможность ссылок на столбцы по номерам (в реляционной модели столбцы должны быть равноправны);
          • допущение столбцов без имени, дублирующихся имён столбцов.

          В опубликованном Кристофером Дейтом и Хью Дарвеном Третьем манифесте [11] они излагают принципы СУБД следующего поколения и предлагают язык Tutorial D, который является подлинно реляционным.

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

          Отступления от стандартов

          Несмотря на наличие международного стандарта ANSI SQL-92, многие разработчики СУБД вносят изменения в язык SQL, применяемый в разрабатываемой СУБД, тем самым отступая от стандарта. Таким образом появляются специфичные для каждой конкретной СУБД диалекты языка SQL.

          Сложность работы с иерархическими структурами

          Ранее диалекты SQL большинства СУБД не предлагали способа манипуляции древовидными структурами. Некоторые поставщики СУБД предлагали свои решения (например, в Oracle Database используется выражение CONNECT BY). В настоящее время в ANSI стандартизована рекурсивная конструкция WITH из диалекта SQL DB2. В Microsoft SQL Server рекурсивные запросы (Recursive Common Table Expressions) появились с версии 2005 [12] .

          Процедурные расширения [ править | править код ]

          Поскольку SQL не является привычным процедурным языком программирования (то есть не предоставляет средств для построения циклов, ветвлений и так далее), вводимые разными производителями расширения касались в первую очередь процедурных расширений. Это хранимые процедуры ( stored procedures ) и процедурные языки-«надстройки». Практически в каждой СУБД применяется свой процедурный язык, в частности, в Oracle Database используется PL/SQL (поддерживается также в DB2 и Timesten [en] ), в Interbase и Firebird — PSQL, в DB2 — SQL PL [en] , в Microsoft SQL Server и Adaptive Server Enterprise — Transact-SQL, в PostgreSQL — PL/pgSQL.

          Каждый сайт в Интернете, любой проект, обрабатывающий значительный объем информации, вынужден хранить эту информацию в тех или иных базах данных (БД). Подавляющее большинство проектов информацию сохраняют в БД реляционного типа, делая записи в различных подобиях таблиц. Как внесение новых записей, так и обращение к имеющимся, осуществляется с благодаря использованию запросов, составляемых конструкциями SQL (structured query language) – непроцедурного декларативного языка структурированных запросов. В нашем случае это подразумевает, что, используя конструкции SQL, мы будем обращаться к БД, сообщая что нужно сделать с данными, но не указывая способ, как именно это нужно сделать.

          Фактически, SQL является набором стандартов, для написания запросов к БД. Последняя действующая редакция стандартов языка SQL — ISO/IEC 9075:2016.

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

          Варианты спецификаций SQL разрабатываются компаниями и сообществами и служат, соответственно, для работы с разными СУБД (Системами Управления Базами Данных) – системами программ, заточенных под работу с продуктами из своей инфраструктуры.

          Наиболее применяемые на сегодня СУБД, использующие свои стандарты (расширения) SQL:

          MySQL – СУБД, принадлежащая компании Oracle.

          PostgreSQL – свободная СУБД, поддерживаемая и развиваемая сообществом.

          Microsoft SQL Server – СУБД, принадлежащая компании Microsoft. Применяет диалект Transact-SQL (T-SQL).

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

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

          Здесь мы будем рассматривать запросы, применяя конструкции из спецификаций диалекта T-SQL.

          Коснемся классификации SQL запросов.

          Выделяют такие виды SQL запросов:

          DDL (Data Definition Language) язык определения данных. Задачей DDL запросов является создание БД и описание ее структуры. Запросами такого вида устанавливаются правила того, в каком виде различные данные будут размещаться в БД.

          DML (Data Manipulation Language) — язык манипулирования данными. В число запросов этого типа входят различные команды, используя которые непосредственно производятся некоторые манипуляции с данными. DML-запросы нужны для добавления изменений в уже внесенные данные, для получения данных из БД, для их сохранения, для обновления различных записей и для их удаления из БД. В число элементов DML-обращений входит основная часть SQL операторов.

          DCL (Data Control Language) — язык управления данными. Включает в себя запросы и команды, касающиеся разрешений, прав и других настроек СУБД.

          TCL (Transaction Control Language) — язык управления транзакциями. Конструкции такого типа применяют чтобы управлять изменениями, которые производятся с использованием DML запросов. Конструкции TCL позволяют нам производить объединение DML запросов в наборы транзакций.

          Читайте также:  Прошить модем через odin

          Основные типы SQL запросов по их видам:

          Ниже мы рассмотрим практические примеры применения SQL запросов для взаимодействия с БД используя запросы двух категорий – DDL и DML.

          Создание и настройка базы данных

          Нам нужна будет для примеров БД MS SQL Server 2017 и MS SQL Server Management Studio 2017.

          Рассмотрим последовательность действий того, как создать SQL запрос. Воспользовавшись Management Studio, для начала создадим новый редактор скриптов. Чтобы это сделать, на стандартной панели инструментов выберем «Создать запрос». Или воспользуемся клавиатурной комбинацией Ctrl+N.

          Нажимая кнопку «Создать запрос» в Management Studio, мы открываем тестовый редактор, используя который можно производить написание SQL запросов, сохранять их и запускать.

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

          Создадим новую БД с именем «b_library» для библиотеки книг. Чтобы это делать наберем в редакторе такой SQL запрос:

          Далее выделим введенный текст и нажмем F5 или кнопку «Выполнить». У нас создастся БД «b_library».

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

          В БД «b_library» создадим таблицу авторов «tAuthors» с такими столбцами: AuthorId, AuthorFirstName, AuthorLastName, AuthorAge:

          Заполним нашу таблицу таким авторами: Александр Пушкин, Сергей Есенин, Джек Лондон, Шота Руставели и Рабиндранат Тагор. Для этого используем такой SQL запрос:

          Мы можем посмотреть в «tAuthors» записи, путем отправления в СУБД простого SQL запроса:

          В нашей БД «b_library» мы создали первую таблицу «tAuthors», заполнили «tAuthors» авторами книг и теперь можем рассмотреть различные примеры SQL запросов, которыми мы сможем взаимодействовать с БД.

          Примеры простых запросов SQL к базам данных.

          Рассмотрим основные запросы SQL.

          SELECT

          1) Выведем все имеющиеся у нас БД:

          2) Выведем все таблицы в созданной нами ранее БД «b_library»:


          3) Выводим еще раз имеющиеся у нас записи по авторам книг из созданной выше «tAuthors»:


          4) Выведем информацию о том, сколько у нас имеется записей строк в «tAuthors»:


          5) Выведем из «tAuthors» две записи, начиная с четвертой. Используя ключевое слово OFFSET, пропустим первые три записи, а благодаря использованию ключевого слова FETCH – обозначим выборку только следующих 2 строк (ONLY):


          6) Выведем из «tAuthors» все записи с сортировкой в алфавитном порядке по первой букве имени автора:


          7) Выведем из «tAuthors» данные, предварительно по AuthorId отсортировав их по убыванию:


          8) Выберем записи из «tAuthors», значение AuthorFirstName у которых соответствует имени «Александр»:


          9) Выберем из «tAuthors» записи, где имя автора AuthorFirstName начинается с «се»:


          10) Выберем из «tAuthors» записи, в которых имя автора (AuthorFirstName) заканчивается на «ат»:


          11) Сделаем выборку всех строк из «tAuthors», значение AuthorId в которых равняется 2 или 4:


          12) Выберем в «tAuthors» такую запись AuthorAge, значение которой — наибольшее:


          13) Проведем выборку из «tAuthors» по столбцам AuthorFirstName и AuthorLastName:


          14) Получим из «tAuthors» все строки, у которых AuthorId не равняется трем:

          INSERT

          INSERT – это вид запроса SQL, при применении которого СУБД выполняет добавление новых записей в БД.

          Добавим в «tAuthors» нового автора – Уильяма Шекспира, 51 год. Соответственно в поле AuthorFirstName добавится Уильям, в AuthorLastName добавится Шекспир, в AuthorAge – 51. В AuthorId, в нашем случае, автоматически добавится значение, инкрементированное от предыдущего на 1.

          UPDATE

          UPDATE – SQL запрос, позволяющий внести изменения или дописывать новую информацию в те записи, которые уже существуют.

          Внесем корректировки в шестую запись (AuthorId = 6). Значения изменим для полей имени, фамилии и возраста автора.

          Затем, обратимся к БД, чтобы вывести все имеющиеся записи:

          Мы видим изменения информации в записи автора под номером 6.

          DELETE

          DELETE – SQL запрос, выполняя который в СУБД производится операция удаления определенной строки из таблицы в БД.

          Обратимся к «tAuthors» с командой на удаление строки, где AuthorId = 5:

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

          Мы видим, что запись автора под номером 5 теперь отсутствует в «tAuthors» и, соответственно, не выводится с другими записями.

          DROP

          DROP – ключевое слово в SQL, применяемое для удаления данных с помощью запроса. К примеру удаление некоторой таблицы из БД.

          После рассмотрения ряда простых запросов к БД мы можем полностью удалить нашу таблицу «tAuthors» целиком, выполнив простой SQL запрос:

          Далее рассмотрим сложные запросы SQL.

          Примеры сложных запросов к базе данных MS SQL

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

          Сложные запросы получаются следующими способами:

          1. Помещением одного запроса в другой. В этом случае внешнее выражение будет называться основным запросом, а вложенное выражение — подзапросом.
          2. Применение с SQL запросами различных операторов объединения результатов выполнения подзапросов. Такие операторы называют реляционными.

          Рассмотрим в SQL примеры сложных запросов.

          Воспользуемся нашей предыдущей таблицей «tAuthors» и создадим дополнительно еще одну таблицу с книгами этих авторов – «tBooks». В качестве идентификатора авторов книг используем значение AuthorId из «tAuthors», а название книги — BookTitle.

          Заполним «tBooks» такими книгами:

          1) Сделаем выборку из БД всех книг, у которых имя автора — «Александр»:

          2) Сделаем выборку данных из «tBooks» всех книг, авторами которых являются люди, с именами «Александр» или «Сергей»:

          3) Сделаем выборку по книгам из таблицы «tBooks», у которых именами авторов являются НЕ «Сергей» и НЕ «Александр»:

          4) Возьмем таблицу «tBooks» и сделаем из нее выборку всех книг с указанием как имен, так и фамилий авторов этих книг из «tAuthors»:

          Выводы

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

          Ссылка на основную публикацию
          Что можно очистить на диске с
          Недавно встретил опрос «сколько места у вас на диске С», это и натолкнуло меня показать вам как очистить диск С...
          Чем отредактировать пдф файл
          У меня хорошее настроение и это значит, что настало время нового поста. Спешу донести пользу в массы так сказать :)....
          Чем очистить белые часы g shock
          Как почистить белые часы G Shock. Часы G Shock являются примером оригинальных, надежных и функциональных часов, востребованных не только среди...
          Что можно произвести из мусора
          Если в начале 20 века многие европейские деятели боялись экологической катастрофы из-за скопления конского навоза на улицах крупных городов, таких...
          Adblock detector