Язык SQL

Существует множество разнообразных систем управления базами данных: Microsoft Access, Oracle, DB2, Microsoft SQL Server, Informix, mySQL, и это далеко не полный список. А нам необходимо обратиться к базе данных из программы на языке C# и "объяснить" ей, что мы ищем.

Проще всего включить в код C# фрагмент на "языке базы данных", с помощью которого выполняется запрос к базе данных на получение нужных столбцов и строк.

(По правде говоря, существует еще и промежуточный уровень – ADO.NET, но сейчас мы не станем заострять на нем внимание.)

Много лет назад специалисты по базам данных договорились об использовании "единого языка баз данных", который понимали бы большинство существующих баз данных. Они назвали его SQL (от англ. Structured Query Language — язык структурированных запросов). Не следует путать язык SQL с системой управления базами данных SQL Server, разработанной корпорацией Microsoft. Язык SQL поддерживают системы управления базами данных (СУБД), выпускаемые самыми разными производителями.

 

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

Основными командами SQL являются:

  • SELECT (для выбора некоторых данных);
  • INSERT (для добавления новых данных);
  • UPDATE (для изменения информации, уже существующей в базе данных).

Приведем примеры каждой команды.

Как правило, оператор SELECT записывается следующим образом:

SELECT <имена извлекаемых столбцов>

FROM <имена одной или нескольких таблиц базы данных>

WHERE <условие выбора>

Рассмотрим пример выбора данных оператором SELECT:

SELECT * FROM PLANET

Символ звездочка * означает выбор всех столбцов таблицы. Поэтому данный оператор вернет из базы данных всю таблицу Planet со всеми строками и столбцами.

Рассмотрим оператор

SELECT PlanetName, Inhabitants FROM PLANET

Этот запрос возвращает столбцы PlanetName и Inhabitants со всеми строками из таблицы PLANET.

PlanetName Inhabitants
Меркурий Меркуриане
Венера Венериане
Земля Земляне
Марс Марсиане
Юпитер Юпитериане
Знок Знокиане
Сатурн Сатурниане
Уран Ураниане
Нептун Нептуниане
Плутон Плутониане

Запрос

SELECT PlanetName, Inhabitants FROM PLANET

WHERE PlanetName='Венера'

возвращает столбцы PlanetName и Inhabitants из таблицы PLANET. В результат его выполнения будут включены только те строки, которые содержат значение Венера в столбце PlanetName.

PlanetName Inhabitants
Венера Венериане

Запрос:

SELECT PlanetName, Population FROM POPULATION

WHERE Population<100000

возвращает из таблицы POPULATION строки столбцов PlanetName и Population, для которых значение столбца Population меньше 100000.

PlanetName Population
Меркурий
Венера
Нептун <NULL>
Плутон <NULL>
Меркурий
Венера
Знок
Нептун <NULL>
Плутон <NULL>

Как правило, оператор INSERT записывается следующим образом:

INSERT INTO <таблица базы данных, к которой добавляются строки>

(<названия столбцов, в которые будут добавляться значения>)

VALUES (<значения, которые будут вставлены в указанные столбцы>)

Пример:

INSERT INTO PLANET (PlanetName, DistanceFromSun, Inhabitants)

VALUES (Флафф, 23500000, 'Флаффиане')

Оператор INSERT добавляет в таблицу PLANET новую строку. Он не возвращает какого-либо результата в программу, но после его выполнения таблица примет вот такой вид:

PlanetName DistanceFromSun Inhabitants
Меркурий Меркуриане
Венера Венериане
Земля Земляне
Марс Марсиане
Юпитер Юпитериане
Знок Знокиане
Сатурн Сатурниане
Уран Ураниане
Нептун Нептуниане
Плутон Плутониане
Флафф Флаффиане

Оператор UPDATE записывается следующим образом:

UPDATE <таблица базы данных, в которую вносятся изменения>

SET <названия столбцов, в которые необходимо внести изменения> = <новые значения>

WHERE <условия>

Пример:

UPDATE PLANET SET PlanetName= 'Стафф', Inhabitants='Стаффиане' WHERE PlanetName='Флафф'

Оператор изменяет некоторые значения в той строке, где столбец PlanetName имеет значение "Флафф". Результат выполнения операции программе не возвращается, но таблица примет вот такой вид:

PlanetName DistanceFromSun Inhabitants
Меркурий Меркуриане
Венера Венериане
Земля Земляне
Марс Марсиане
Юпитер Юпитериане
Знок Знокиане
Сатурн Сатурниане
Уран Ураниане
Нептун Нептуниане
Плутон Плутониане
Стафф Стаффиане

Связи и объединение таблиц базы данных

Если рассмотреть таблицы внимательно, то можно заметить, что между таблицами PLANET и POPULATION существует связь: и в той и в другой есть столбец с именемPlanetName, который связывает обе таблицы. Благодаря этой связи можно собрать всю информацию об определенной планете.

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

PLANET
PlanetName DistanceFromSun Inhabitants
Венера Венериане
POPULATION
PlanetName Year Population
Венера
Венера

А затем объединить полученные данные в одну большую таблицу:

SELECT *

FROM PLANET INNER JOIN POPULATION ON PLANET.PlanetName=POPULATION.planetName

WHERE PlanetName='Венера'

PLANETS_AND_POPULATION
PlanetName DistanceFromSun Inhabitants Year Population
Венера Венериане
Венера Венериане