русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

SELECT COUNT( DISTINCT SUBJ_ID), MARK


Дата добавления: 2013-12-23; просмотров: 1022; Нарушение авторских прав


Вложенные подзапросы

SQL позволяет использовать одни запросы внутри других запросов, то есть вкладывать запросы друг в друга. Предположим, известна фамилия студента («Петров»), но неизвестно значение поля student_id для него.

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

SELECT *

FROMEXAM_MARKS

WHERESTUDENT_ID =

(SELECTSTUDENT_ID

FROMSTUDENT WHERESURNAME = 'Петров');

Как работает запрос SQL со связанным подзапросом?

· Выбирается строка из таблицы, имя которой указано во внешнем запросе.

· Выполняется подзапрос и полученное значение применяется для анализа этой строки в условии предложения WHEREвнешнего запроса.

· По результату оценки этого условия принимается решение о включении или не включении строки в состав выходных данных.

· Процедура повторяется для следующей строки таблицы внешнего запроса

Приведенный выше запрос корректен только в том случае, если в результате выполнения, указанного в скобках подзапроса возвращается единственное значение. Если в результате выполнения подзапроса будет возвращено несколько значений, то этот подзапрос будет ошибочным. В данном примере это произойдет, если в таблице STUDENT будет несколько записей со значениями поля SURNAME='Петров'.

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

Оператор IN используется в подзапросах.

Подзапросы можно применять внутри предложения HAVING

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

FROMEXAM_MARKS

GROUP BY MARK

HAVING MARK>

(SELECT AVG(MARK)
FROM EXAM_MARKS
WHERESTUDENT_ID=301);



 

Команды манипулирования данными

В SQL для выполнения операций ввода данных в таблицу их изменения и удаления предназначены три команды манипулирования данными (DML). Это команды INSERT(вставить), update(обновить), delete(удалить).

Команда INSERTосуществляет вставкув таблицу новой строки. В простейшем случае она имеет вид:

INSERT INTO<имя таблицы> VALUES (<значение>, <значение>,…);

При такой записи указанные в скобках после ключевого слова valuesзначения вводятся в поля добавленной в таблицу новой строки в том порядке, в котором соответствующие столбцы указаны при создании таблицы, то есть в операторе CREATE TABLE.

Например, ввод новой строки в таблицу student может быть осуществлен следующим образом:

INSERT INTOSTUDENT

VALUES (101,'Иванов','Александр',200,3,'Москва', '6/10/1979', 15);

Чтобы команда могла быть выполнена, таблица с именем (student) должна быть создана командой create table.Если в какое-либо поле необходимо вставить NULL-значение, то оно вводится как обычное значение;

INSERT INTO STUDENT

VALUES (101, 'Иванов', NULL, 200, 3, 'Москва','6/10/1979', 15);

В случаях, когда необходимо ввести значения полей в порядке, отличном от порядка столбцов, заданного командой create table,или требуется ввести значения не во все столбцы, следует

использовать следующую форму команды insert

INSERT INTOSTUDENT (STUDENT_ID, CITY, SURNAME, NAME)

VALUES (101, ‘Москва’, ‘Иванов’, ‘Саша’);

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

 

INSERT INTO STUDENT1

SELECT *

FROM STUDENT

WHERE CITY = 'Москва';

 



<== предыдущая лекция | следующая лекция ==>
Пример. | Использование индексации для быстрого доступа к данным


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.141 сек.