Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

Управление полями

CuBook05

Управление полями состоит в указании полей таблицы (таблиц), включаемых в результирующий набор данных. Как отмечалось ранее, при отборе всех записей таблицы условия отбора не указываются: если вместо списка полей указать *, то в наборе данных оказываются все поля записей. При этом можно не задумываться о названиях полей. Порядок следования полей в наборе Данных соответствует порядку физических полей таблицы, определенному при ее создании.
 
Пример отбора всех полей в таблице:
SELECT * FROM Employee.db
В результате выполнения этого запроса из таблицы Employee в набор данных попадают все поля и все записи, и набор данных имеет вид:
Code Name Post Salary
1 Иванов P.O. Директор 6700
2 Сидоров С.С. Зам. дир. 5200
3 Семенова И.И. Бухгалтер 5200
4 Кузнецов П.А. Зав. лаб. 3600
5 Попов А.Л. Инженер 2400
6 Васин Н.Е. Мл. нс 2500
При необходимости получения данных из нескольких полей таблицы после слова SELECT через запятую перечисляются в нужном порядке названия этих полей. Порядок полей в наборе данных будет соответствовать порядку полей в списке. Если имя поля указано в списке неоднократно, то в наборе данных оказывается несколько столбцов с одинаковыми именами и данными. Например:
SELECT Name, Post FROM Employee.db
В набор данных, формируемый в результате выполнения этого SQL-запроса, включаются поля Name и Post всех записей из таблицы Employee. Набор данных получает вид:
Name Post
Иванов P.O. Директор
Сидоров С.С. Зам. дир.
Семенова И.И. Бухгалтер
Кузнецов П.А. Зав. лаб.
Попов А.Л. Инженер
Васин Н.Е. Мл. нс
Можно указать все поля таблицы. Такой список аналогичен использованию знака *, но отличается тем, что при явном указании имен полей мы можем управлять порядком их следования в наборе данных.
 
Приведенный запрос демонстрирует определенные преимущества компонента Query, использующего возможности языка SQL, по сравнению с компонентом Table. Для компонента Table изменить порядок или ограничить состав полей набора данных можно только на этапе разработки приложения, задав с помощью Редактора полей статические поля. Компонент Query позволяет осуществлять эти операции и для динамических полей, что достигается настройкой SQL-запроса при разработке или при выполнении приложения.
 
В набор данных, кроме физических полей таблиц, можно включать также вычисляемые поля. Для получения вычисляемого поля в списке полей указывается не имя этого поля, а выражение, по которому рассчитывается его значение. Выражение составляется по обычным правилам, при этом в него могут не входить имена полей. Например:
SELECT "- " || Name, Salary, Salary * 1.1 FROM Employee;
Для сотрудников организации (таблица Employee) выводятся старое значение оклада и новое, увеличенное на 10%. К каждой фамилии с помощью операции конкатенации (||) добавляются дефис и пробел. Результирующий набор будет таким:
Name Salary Salary * 1.1
- Иванов P.O. 6700 7370
- Сидоров С.С. 5200 5720
- Семенова И.И. 5200 5720
- Кузнецов П.А. 3600 3960
- Попов А.Л. 2400 2640
- Васин Н.Е. 2500 2750
 
Записи могут иметь одинаковые значения некоторых полей. Для того чтобы включить в набор данных только записи с уникальными (неповторяющимися) значениями, перед списком полей указывается описатель DISTINCT. Например:
SELECT DISTINCT Post FROM Employee
Сформированный набор данных содержит список занимаемых штатных должностей организации. Записи выбираются из таблицы сотрудников организации, при этом в набор данных каждая должность включается только один раз (поле Post):
Post
Директор
Зам. дир.
Бухгалтер
Зав. лаб.
Инженер
Мл. нс
 
А так задается выборка записей с уникальными значениями двух полей:
SELECT DISTINCT Post, Degree FROM Employee
Сформированный набор данных содержит список занимаемых штатных должностей и окладов. В набор данных попадают записи с уникальной комбинацией значений двух полей (Post и Degree):
Post Degree
Бухгалтер -
вед. нс дтн
директор дтн
зав. лаб. дтн
зам. дир. ктн
мл. нс -
мл. нс ктн
нс ктн
 
Еще одним достоинством языка SQL является простота объединения в результирующем наборе данных, содержащихся в нескольких таблицах. Для этого после слова FROM перечисляются имена таблиц, из записей которых формируется набор данных, Такое использование данных из различных таблиц называется соединением.
 
Пример запроса на отбор записей из двух таблиц:
SELECT * FROM Employee, Info
или
SELECT Employee.*, Info.* FROM Employee, Info
Результирующий набор данных состоит из всех полей и всех записей таблиц Employee и Info. Первыми располагаются поля Первой таблицы, далее следуют поля второй таблицы. Имена полей набора данных являются составными и включают в себя имена таблиц.
 
При выполнении запроса к нескольким таблицам в набор данных отбираются записи этих таблиц, удовлетворяющие заданным условиям. В данном случае условия отбора не заданы, поэтому в набор данных попадают все записи из обеих таблиц. Обычно таким образом отбираются записи из таблиц, связанных по определенным полям. Если же сформировать набор данных из таблиц, содержащих не связанные между собой данные, например, список сотрудников организации и список товаров на складе, то получившиеся записи могут содержать такие поля, как фамилия сотрудника и цена товара, что вряд ли имеет какой-либо смысл.
 
Еще один пример на отбор полей из разных таблиц:
SELECT Employee.Name, Info.I_Code FROM Employee, Info
В случае если имя таблицы, приводимое в операнде FROM, указывает формат файла таблицы, то в обозначении поля имя этой таблицы заключается в кавычки, например, "Employee.db" .Name.
 
Вместо имени таблицы в тексте SQL-запроса можно задать псевдоним, упрощающий указание имени таблицы, например, при обозначении ее полей. После определения псевдонима его можно использовать вместо имени таблицы. Псевдоним задается с помощью описателя AS, указываемого после имени таблицы. Например:
SELECT P.Name, I.I_Code FROM "Employee.db" As E, "Info.db" As I
Для таблицы Employee определен псевдоним E, а для таблицы Info псевдоним I, которые используются при обозначении полей этих таблиц. В данном примере использование псевдонимов встречается раньше, чем их определение. Язык SQL не является алгоритмическим, и в нем допускается такой порядок описания и использования псевдонимов.
Псевдоним таблицы применяется в операторе SQL вместо имени таблицы и никак не связан с псевдонимом БД, который используется для определения значения свойства DatabaseName набора данных Query и задает расположение БД.
Если в составе таблиц, из которых отбираются записи, имя некоторого поля является уникальным, то имя содержащей это поле таблицы можно не указывать. Например:
SELECT Name, I_Code FROM Employee, Info
Имена полей Name и I_Code уникальны для таблиц Employee и Info, поэтому имена таблиц в обозначении полей можно опустить.
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий