Собрал шаблоны типовых запросов, в конце поста задачник на эти запросы. Синтаксис во всех запросах — MS SQL.
Шаблоны типовых запросов SQL
Выборка записей из таблицы
select поле1, поле2 from таблица1
вместо списка полей может быть * — тогда выведудтся все поля
Выборка записей из таблицы с сортировкой по возрастанию
select поле1, поле2 from таблица1 order by поле1 asc
Выборка записей из таблицы с сортировкой по убыванию
select поле1, поле2 from таблица1 order by поле1 desc
Выборка записей из таблицы с условием на численное поле
select поле1, поле2 from таблица1 where поле1 = 777
вместо = может быть , < , >=, < =
Выборка записей из таблицы с условием на строковое поле
select поле1, поле2 from таблица1 where поле1 = "777"
Выборка с группировкой
select поле1, sum(поле2) from таблица1
group by поле1
вместо sum может быть min, max, count и другие функции
все поля, к которым не применяются функции, должны быть перечислены в секции group by
Выборка из двух таблиц
select таб1.поле1, таб2.поле2
from таблица1 as таб1
join таблица2 as таб2 on таб2.поле3 = таб1.поле4
вместо таблица2 может быть таблица1, если в таблице есть поле, ссылающееся на эту же таблицу
Вставка новой записи
insert into таблица1
([поле1], [поле2])
values
(значениие1, значение2)
Изменение записи
update таблица1
set поле1 = значение1
where поле2 = значение2
Удаление записи
delete from таблица1
where поле1 = значение1
Задачник по SQL
Для решения задач можно использовать сервис http://sqlfiddle.com
Нужно выбрать базу данных MS SQL и создать тестовую базу запросом:
CREATE TABLE Departments
([Id] int, [Name] varchar(100))
;
CREATE TABLE Employees
([Id] int, [Name] varchar(100), [Salary] int, [ManagerId] int, [DepartamentId] int)
;
INSERT INTO Departments
([Id], [Name])
VALUES
(1, 'Sales'),
(2, 'Development')
;
INSERT INTO Employees
([Id], [Name], [Salary], [ManagerId], [DepartamentId])
VALUES
(1, 'Ivanov', 100000, null, 1),
(2, 'Petrov', 120000, 1, 1),
(3, 'Sidorov', 130000, 2, 1),
(4, 'Korotkov', 120000, 2, 1),
(5, 'Filev', 90000, 1, 1),
(6, 'Smirnov', 125000, null, 2),
(7, 'Godov', 125000, null, null)
;
Задачи:
- Фамилии и зарплаты всех сотрудников
- Фамилии и зарплаты всех сотрудников, отсортированные по зарплате по возрастанию
- Фамилии и зарплаты всех сотрудников, отсортированные по зарплате по убыванию
- Фамилии и зарплаты всех сотрудников, у которых зарплата больше 100000
- Фамилии и зарплаты всех сотрудников, у которых зарплата равна 100000
- Фамилии и зарплаты всех сотрудников, у которых зарплата больше либо равна 100000
- Фамилии и зарплаты всех сотрудников, у которых фамилия Ivanov
- Ид департамента и максимальная зарплата в этом департаменте
- Имя сотрудника и название его отдела
- Имя сотрудника и имя его начальника
- Добавить сотрудника с именем Semenov, зарплатой 70000, менеджером Ivanov и отделом Sales
- Изменить зарплату сотрудника Godov на 80000
- Удалить сотрудника Godov