double arrow

Язык SQL. Язык SQL – это язык манипулирования данными в реляционных базах данных


Язык SQL – это язык манипулирования данными в реляционных базах данных. Язык не является языком программирования, а ориентирован на построение запросов к базам данных со стороны прикладных программ. Язык состоит из директив или команд. Каждая команда имеет наименование и список параметров. Результатом выполнения любой команды SQL является таблица.

Select – мнемоника (код команды) выборки таблицы из БД.

Параметры команд:

* означает, что выбираются все столбцы таблиц или таблицы, которые перечислены после ключевого слова from.

Select * from MyTable – запрос на выборку всех столбцов из таблицы MyTable.

Select * from Table1, Table2 – результатом является таблица, в которой помещены все столбцы двух исходных таблиц, а число записей соответствует числу комбинаций записей первой и второй таблицы.

SELECT UserName FROM Users, Games WHERE Users.ID=Games.Winner; – в данном примере запрашивается результирующая таблица, в которой должен присутствовать только столбец UserName. Записи отбираются из пары таблиц Users и Games по условию, которое задается с помощью ключевого слова WHERE. Условием отбора в данном случае, является совпадение значений поля ID таблицы Users и поля Winner таблицы Games. Запрос на естественном языке можно сформулировать так, отобрать имена всех победителей в играх.




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

SELECT distinct UserName FROM Users, Games WHERE Users.ID=Games.Winner; Чтобы устранить повторяющие записи в результате используют ключевое слово distinct (различные).

SELECT distinct UserName FROM Users, Games WHERE Users.ID=Games.Winner order by UserName desc;

Order by – упорядочить по.

Порядок записей в таблице результата трудно предсказуем до тех пор, пока в запросе явно не будут указаны правила сортировки. Ключевое слово order by указывает выражение, которое будет использоваться для сортировки. В качестве выражения записывают список столбцов, в порядке которых будут сортироваться записи. В начале записи сортируются по первому столбцу если есть одинаковые значения, то сортируются по второму и т.д. Сортировка осуществляется соответственно типу записей. Ключевое слов desc означает обратный порядок, а если указать asc – то прямой порядок.

SELECT UserName, Balance FROM Users, Games WHERE Users.ID=Games.Winner And Balance>50;

В качестве логических условий в SQL запросах используются выражения, включающие в себя логические связки And, Or, Not. Логическое выражение в предложении WHERE проверяется для каждой записи. В результирующую таблицу включаются только те записи, для которых это выражение истинно.

SELECT count(UserName) FROM Users, Games WHERE Users.ID=Games.Winner And Balance>50;



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

SELECT Games.game FROM Games WHERE game like ‘*es*’

Ключевое слово like в предложении WHERE позволяет уточнить условие отбора для строковых полей. Like содержит шаблон отбора, в котором употребляются символы в том числе имеющие специальное обозначение. Например, символ * означает любая подстрока, ? – любой символ. Эти знаки относятся к Microsoft Access.

Для добавления записей используется директива INSERT INTO. Параметрами является имя таблицы со списком имен полей в новой записи, в которые будут установлены определённое значение, затем ключевое слово значения VALUES указывает список конкретных значений, которые будут добавлены в поля.

INSERT INTO Games (Game, IDGamer1, IDGamer2, MAtchDate, Winner) VALUES (‘football’, 2, 1, ’2012-01-12’, 1)

Место размещения добавленной записи для внешнего пользователя остается неопределённым. Не следует предполагать, что новая запись будет размещена в конце таблицы.

Тема №8 «Базы данных»

Update Games SET Winner=2 Where ( Game=’football’ )

Команда Update обновляет значения полей одной из таблиц базы данных. Первым параметром является наименование таблицы, вторым после ключевого слова Set является список пар модифицируемых полей. Каждая пара – это наименование поля, знак равно и значение.



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

DELETE FROM Games WHERE ( Game=’golf’ )

Если отсутствует логическое условие в Where, то удаляются все записи таблицы.

DROP TABLE – удаляет таблицу из БД.

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

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

В Windows есть система драйверов ODBC. Драйверы баз данных могут входить в ОС либо в систему программирования. Для того, чтобы работала прикладная программа необходимо решить системные вопросы установки драйверов. Источники данных могут создаваться либо “в ручную”, либо программным образом.

Создание источника данных заключается в выполнении следующих действий:

1) Выбирается драйвер

2) Указывается размещение файла базы данных или адрес сервера базы данных

3) Источнику присваивается имя

4) При необходимости устанавливаются дополнительные параметры соединения. Например, логин и пароль пользователя.

Работа с источником данных осуществляется в три стадии:

1) Установление соединения. Прикладная программа здесь отправляет запрос ОС или другой системе управляющей драйверами. Вызываемая система должна найти описание источника и активизировать соответствующий драйвер. Загруженный драйвер находит файлы или сервер используя установленные параметры соединения (Логин и пароль), если соединение установлено, то программе сообщается об установлении соединения

2) Прикладная программа отправляет SQL запросы и принимает ответ. Драйвер, получив запрос, выполняет его грамматический разбор и в случае ошибки формирует отказ от исполнения запроса.

3) Прикладная программа вызывает функцию закрытия соединения, в результате которой освобождаются ресурсы, задействованные при обмене данными.

Все средства работы с базами данных расположены в пространстве имен SYSTEM::DATA::ODBC

В пространстве имен ODBC имеются классы для работы с источниками данных ODBC:

OdbcCommand – класс для хранения SQL выражений и их выполнения.

OdbcCommandBuilder – класс, который строит команды.

OdbcConnection – класс для установления соединения. В частности этот класс позволяет на программном уровне создать источник данных.

OdbcDataReader – класс предназначенный для считывания записей, полученных в качестве ответа. Он позволяет считывать отдельные поля и выполнять их конвертацию в типы данных библиотеки .Net. Считывание выполняет последовательным образом от записи к записи безвозвратно.

Тема №9 «Строка соединения»

В библиотеке .Net для конструирования строки соединения имеется специальный класс OdbcConnectionStringBuilder. Его свойства и методы позволяют сконструировать строку соединения. Использование этого класса не является обязательным. Если программисту точно известна строка соединения, ее можно использовать напрямую.

Строка соединения состоит из выражений Имя=Значение (Name=Value), разделенных запятыми. Таких выражений в строке может быть произвольное количество. Выражения задают параметры соединения и каждый из параметров имеет значение по умолчанию. Явно не заданное в строке соединения параметров имеет умалчиваемые значения.

Для установления соединения используются объекты класса OdbcConnection. Программа в начале конструирует пустой объект, при этом никаких значений по умолчанию он не содержит. Его свойство ConnectionString должно содержать строку соединения.

Метод Open объекта соединения OdbcConnection инициирует процедуру установления соединения с источником данных. Соответственно документации при возникновении ошибки метод Open выбрасывает исключения, поэтому в программе необходимо участок кода с вызовом Open помещать в блок Try. Обработка исключения строится исходя из логики конкретной программы. Однако, если соединение не установлено никаких операций с базой данных программа выполнить не может.

Метод Close закрывает соединение. Метод State показывает состояние.







Сейчас читают про: