- Рефераты на русском
- Информатика
- Язык запросов SQL
Язык запросов SQL
Язык запросов SQL.
SQL структурированный язык запросов. Он является стандартом языковых средств для работы с реляционной БД. Исторически он был разработан после реляционной алгебры в 70-х гг. Это нетрадиционный язык программирования. Он не содержит условных операторов и циклов. Все команды языка ориентированы на доступ к данным, хранящимся в БД. SQL является встроенным языком в любой СУБД или в базовых языках (C, C++, VBasic, Java, Pascal). Операторы SQL могут выполнятся в интерактивном режиме.
Структура языка.
Составные части:
1. Язык определения данных (DDL);
2. Язык обработки данных (DML);
Типы данных SQL:
1. Строка: CHR (длина), т.е. задание строки нужной длины.
2. Числовой: INTEGER (-231 до +231);
SMOLINT (-215 до +215);
NUMERIC (точность [масштаб]) может быть дробное.
Под точностью подразумевается общий размер числа, после запятой.
FLOAT – число с плавающей точкой;
REAL – точность увеличенная в 2 раза по отношению к FLOAT;
DOUBLE – такой же как REAL.
3. Дата и время: DATE формат даты зависит от формата установленного в ОС. К этим данным можно прибавлять числа и вычитать.
Термины и определения:
Ключевое слово означает оператор, команду, инструкцию
Оператор определения (::=),
[ ] – не обязательный элемент
{ } – обозначают логическую группу
/ - возможны варианты
Операторы определения данных
1. CREATE TABLE – создание таблицы
2. DROP TABLE - удаление таблицы
3. ALTER TABLE – модификация таблицы
CREATE TABLE «имя таблицы» («имя поля» «тип» «размер»);
CREATE TABLE student
(stud in integer,
fam chr(60),
name chr (30),
stip double,
kurs integer,
city chr (60),
birthday date);
ALTEC TABLE «имя таблицы» ADD («имя поля» «тип» «размер»)
команда добавляет столбец в таблицу, если необходимо добавить несколько полей, их название указывается через запятую.
Добавим в таблицу STUDENT поле отделение
ALTEC TABLE student ADD (otdelenie chr (60));
ALTEC TABLE «имя таблицы» MODIFY («имя поля» «тип» «размер»)
ALTEC TABLE student MODIFY (otdelenie chr (40));
DROP TABLE «имя таблицы»
Создать таблицу с полями (отдел, цена, товар, количество). Изменить таблицу добавив столбец (срок годности). Увеличить размер для поля Отдел.
CREATE TABLE magazin
(cena numeric 5.[10],
otdel chr(40),
tovar chr (30),
kol-vo smolint);
ALTEC TABLE magazin ADD (srok godnosti integer);
ALTEC TABLE magazine MODIFY (otdel chr (60));
Оператор выборки SELECT
SELECT «список полей» FROM «имя таблицы»
[WHERE ] при формирования запроса можно использовать , and, nod, or.
[ORDER BY desc или asc] используется для упорядочивания в запросе (сортировка). Сортировать можно по нескольким полям.
ASC возрастающий он принят по умолчанию
DESC убывающий
[GROUP BY ] группировка записи определяет значение, какого либо поля. Используются встроенные функции
COUNT – подсчет количества в группе
AVJ – среднее арифметическое значение
MAX
SUM
MIN
[HAVING ] определят по которому группы включаются в выходные данные. Применяется только с GROUP BY
[DISTING]
Примеры:
Показать фамилии и имена студентов из таблицы «студент».
SELECT fam, imy FROM student;
При указании списка полей данные будут выводиться в соответствие с этим списком, а не в соответствии со структурой.
Показать студентов и день рождения
SELECT fam, birthday FROM student;
SELECT * FROM student;
Показать города в которых живут студенты
SELECT city FROM student;
SELECT DISTING city FROM student; отбор данных по полю город с подавлением повторов
Отобразить студентов с ФИО Петров
SELECT fam, imy FROM student WHERE fam = “Петров”;
Выбрать студентов 3 – его курса получивших стипендию
SELECT fam, imy FROM student WHWRE kurs = 3 AND stip > 0;
Запрос выбирающий в следующем порядке Курс, ФИО, Стипендия.
SELECT kurs, fam, stip FROM student;
Имея таблицу SUBJECT (NOM, NAME, HOUR, SEM)
Выполнить запросы:
Показать записи из таблицы предметы в алфавитном порядке наименование предметов
SELECT * FROM subject ORDER BY name;
Показать в убывающем порядке количество часов
SELECT * FROM subject ORDER BY hours DESC;
Упорядочить по 2- м полям
SELECT * FROM subject ORDER BY sem, name;
Отобразить предметы у которых > 70 часов (отбор произвести в каждой групп предметов)
SELECT name, MAX(hours) FROM subject GROUP BY name HAVING MAX (hours)>70
Отобразить студентов старше 1.01.85 из города Воронежа упорядочить по фамилии
SELECT fam, imy, city FROM student WHERE city = “Воронеж” AND bithdey > 1.01.85 ORDER BY fam;
Сколько студентов на каждом курсе
SELECT count (*) FROM student GROUP BY kurs;
Сколько студентов проживают в Москве
SELECT count (*) FROM student WHERE city = “Москва” GROUP BY city;
Операторы IN, BETWEEN
Предназначена для задания логического условия выражения WHERE.
IN (, ) – для сравнения значения поля со списком. Список – выражение 1, 2 и т.д.
BETWEEN AND - задает интервал значений. Используется для проверки условия вхождения значения поля в заданный интервал.
Примеры:
Получить список предметов 1-ого, 2-ого семестра
SELECT * FROM subject WHERE curs IN (1, 2)
Получить фамилии студентов 1-ого, 4-ого курса
SELECT fam FROM student WHERE curs IN (1, 4)
Получить предметы на изучение которых отводится от 30 – 40 часов.
SELECT * FROM subject WHERE hour BETWEEN 30 AND 40
Получить сведения о студентах получающих стипендию от 100 – 140 руб
SELECT * FROM student WHERE stip BETWEEN 100 AND 140
Преобразование вывода из встроенной функции
Операторы преобразования применяются с выражениями:
Арифметические (+; -; /; *) применяются только с числовыми полями.
Пример:
Получить фамилии у которых стипендия увеличена на 100
SELECT fam, stip + 100 FROM student
Строковые:
|| позволяет соединить 2 и более символьных выражений. Применяется только с символьными полями
Показать фамилии и имя студентов 4 – ого курса
SELECT fam, || “ “, || imy FROM student WHERE curs = 4
Like применяется только с символьными выражениями. Просматривает символьное поле и выявляет совпадает ли значение поля с выражением в операторе Like.
выражение может использовать символы % - любые символы в любом количестве, _ один любой символ
Показать фамилии студентов начинающихся с буквы А
SELECT * FROM student WHERE fam LIKE “A%”