БД / УСТАНОВ_ЛЕКЦИИ_БД / УСТАНОВ_ЛЕКЦИИ_БД / БД СТУДЕНТЫ
.docБД СТУДЕНТЫ
-
SELECT студенты.* FROM студенты; - использование шаблона “*”
-
SELECT студенты.ном_зач, студенты.ФИО FROM студенты; - перечисление полей таблицы
-
SELECT * FROM атт_студ WHERE атт_студ.ном_зач="111"; - текстовая константа заключается в кавычки. Обратите внимание, что В КОНСТРУКТОРЕ для поля с условием отменен параметр ВЫВОД НА ЭКРАН, поэтому оно повторно выводиться не будет. Условие может быть задано с помощью любого оператора сравнения (=, >=, <=, <> и т.д.)
-
SELECT атт_студ.* FROM атт_студ WHERE атт_студ.дата=#12/11/2011#; - константа типа DATE звключается в знаки #
-
SELECT атт_студ.* FROM атт_студ WHERE атт_студ.дата=#12/11/2011# AND атт_студ.ном_зач="111"; - сложное условие можно задать с помощью булевых выражений AND, OR, NOT
SELECT атт_студ.* FROM атт_студ
WHERE атт_студ.дата=#12/11/2011# Or атт_студ.дата=#3/15/2011# ;
~ SELECT атт_студ.* FROM атт_студ
WHERE атт_студ.дата IN (#12/11/2011#,#3/15/2011#); - оператор IN проверяет условие на совпадение хотя бы с одним значением из списка
-
SELECT атт_студ.* FROM атт_студ WHERE атт_студ.оценка BETWEEN 4 AND 5; - граничные значения диапазона входят в проверяемые условия. ~ SELECT атт_студ.* FROM атт_студ WHERE атт_студ.оценка>=4 AND атт_студ.оценка<=5;
-
SELECT атт_студ.* FROM атт_студ WHERE (атт_студ.оценка BETWEEN 4 AND 5) AND (атт_студ.оценка NOT IN (2,5)); - исключение граничных значений диапазона
-
SELECT атт_студ.* FROM атт_студ WHERE атт_студ.ном_зач) LIKE "*1*"; - оператор LIKE используется только для строк. Знак “*”используется для указания любого количества любых символов (MS ACCESS)
-
SELECT атт_студ.* FROM атт_студ WHERE атт_студ.ном_зач LIKE "???"; - шаблон для одного любого символа (MS ACCESS)
-
SELECT атт_студ.* FROM атт_студ WHERE атт_студ.оценка IS NULL; - проверка на отсутствие данных
-
SELECT атт_студ.* FROM атт_студ WHERE атт_студ.оценка NOT IS NULL;
-
SELECT атт_студ.* FROM атт_студ WHERE атт_студ.дата NOT IN (#12/11/2011#,#3/15/2011#);или NOT атт_студ.дата IN
-
SELECT Count(*) AS количество FROM атт_студ; - агрегатные функции используются не только для групп записей.
-
SELECT a.ном_зач, a.код_дисц, a.дата, a.оценка FROM атт_студ AS a; - можно давать имена и таблицам (в запросах)
-
SELECT Count(*) AS количество FROM оценка; - если вместо поля указан шаблон “*”, то функция считает и NULL-значения, поэтому ответ = 4.
-
SELECT Count(оценка.оценка) AS количество FROM оценка; - функция Count для указанного поля исключает NULL-значения, поэтому ответ =3. Остальные функции игнорируют значения NULL.
Добавим студента Иванова вновь в таблицу аттестаций:
-
SELECT атт_студ.ном_зач, Max(атт_студ.оценка) AS Max FROM атт_студ
GROUP BY атт_студ.ном_зач; - можно по группе полей подсчитать итоги
-
SELECT атт_студ.ном_зач FROM атт_студ GROUP BY атт_студ.ном_зач HAVING атт_студ.ном_зач="111"; - оператор HAVING определяет критерии выбора групп, поэтому содержит поля, указанные в операторе GROUP BY.
-
SELECT студенты.ФИО, атт_студ.дата, атт_студ.оценка FROM атт_студ, студенты
WHERE атт_студ.ном_зач=студенты.ном_зач; - связать тблицы можно при помощи оператора WHERE
-
SELECT студенты.ФИО, атт_студ.дата, атт_студ.оценка, дисциплины.дисц FROM атт_студ, студенты, дисциплины
WHERE атт_студ.ном_зач=студенты.ном_зач AND дисциплины.код_дисц=атт_студ.код_дисц; - связаны 3 таблицы
~ SELECT студенты.ФИО, атт_студ.дата, атт_студ.оценка, дисциплины.дисц
FROM (атт_студ INNER JOIN студенты ON атт_студ.ном_зач=студенты.ном_зач) INNER JOIN дисциплины
ON атт_студ.код_дисц=дисциплины.код_дисц;
-
SELECT DISTINCT атт_студ.ном_зач FROM атт_студ; -DISTINCT указывается только 1 раз в команде.
-
SELECT Count(*) AS количество FROM (SELECT атт_студ.ном_зач FROM атт_студ GROUP BY атт_студ.ном_зач); - вложенный запрос
-
SELECT ' количество =', Count(*) FROM (SELECT атт_студ.ном_зач FROM атт_студ GROUP BY атт_студ.ном_зач); - можно ввести столбец с произвольным текстром
-
SELECT студенты.ФИО FROM студенты INNER JOIN атт_студ ON студенты.ном_зач = атт_студ.ном_зач
GROUP BY студенты.ФИО; - пофамильный вывод
-
SELECT студенты.ФИО FROM [SELECT студенты.ФИО
FROM студенты INNER JOIN атт_студ ON студенты.ном_зач=атт_студ.ном_зач
GROUP BY студенты.ФИО]. AS a; - пофамильный вывод (MS ACCESS)
-
SELECT ФИО FROM студенты
WHERE ном_зач IN (SELECT ном_зач FROM атт_студ WHERE ном_зач="111"); - вложенный запрос в операторе IN