SQL Flashcards
найти вторую самую высокую зарплату работника
select MAX(Salary) from Employee WHERE Salary NOT IN (select MAX(Salary) from Employee );
найти максимальную зарплату от каждого отдела.
SELECT DeptID, MAX(Salary) FROM Employee GROUP BY DeptID.
Если Интервьюер попросит вас напечатать название отдела вместо отдела ID,
SELECT DeptName, MAX(Salary) FROM Employee e
RIGHT JOIN Department d ON e.DeptId = d.DeptID
GROUP BY DeptName;
запрос для отображения текущей даты.
SELECT GetDate();
Напишите SQL запрос, чтобы напечатать имя отдельного работника у которого поле DOB составляет от 01/02/1965 до 31/11/1970.
SELECT DISTINCT EmpName FROM Employees
WHERE DOB BETWEEN ‘01/02/1965’ AND ‘31/11/1970’;
: написать SQL запрос, где найти количество сотрудников в зависимости от пола , чье поле DOB между 01/02/1965 до 31/11/1970.
SELECT COUNT(*), sex from Employees
WHERE DOB BETWEEN ‘01/02/1965’ AND ‘31/11/1970’
GROUP BY sex;
Напишите SQL запрос, чтобы найти сотрудника, чья зарплата равна или превышает 20000.
SELECT EmpName FROM Employees WHERE Salary>=20000;
Напишите SQL запрос, чтобы найти имя сотрудника, чье имя начинается с ‘M’
SELECT * FROM Employees WHERE EmpName like ‘M%’
Найти все записи о сотрудниках, содержащие слово “Роман”, независимо от того, был ли он, как РОМАН, Роман, или роман.
SELECT * from Employees WHERE UPPER(EmpName) like ‘%РОМАН%’;
Написать SQL – запрос для поиска дубликатов строк в базе данных? а затем написать SQL запрос, чтобы удалить их?
SELECT * FROM emp a
WHERE rowid = (SELECT MAX(rowid) FROM EMP b WHERE a.empno = b.empno)
DELETE FROM emp a
WHERE rowid != (SELECT MAX(rowid) FROM emp b WHERE a.empno = b.empno);
Существует таблица, которая содержит два столбца Student и Marks, вам нужно найти всех студентов, чьи оценки являются больше, чем средние оценки, т.е. список студентов выше среднего.
SELECT student, marks
from table where marks > SELECT AVG(marks) from table)
Как вы находите всех сотрудников, которые являются также менеджерами?
SELECT e.name, m.name FROM Employee e, Employee m
WHERE e.mgr_id = m.emp_id;
У вас есть композитный индекс из трех колонок, как вы обеспечиваете значение двух столбцов в WHERE на выборку? Будет ли индекс использоваться для этой операции?
SELECT * FROM Employee WHERE EmpId=2 and EmpFirstName=’Radhe’
что такое база данных
набор организованных данных
какие бывают модели данных
сетевые, обьектные, иерархические, реляционные
Что такое нормализация
неделимая информация в ячейках, неделимость смысловых столбцов
Какие бывают типы связей в БД
1 ко многим, один к одному, многие ко многим
Primery Key
id столбец(обычно) в котором идет привязка к данным
Foreign key
Внишний ключ, вторичный является дублером primery key другого столбца, для свзяи данных
Индекс
метки для ускорения чтения - замедляют вставку и удаление..знаю ID, другие пока не встречал
Как создать соединение с БД
Connection connection=Driver.Manager.getConnection(“jdbc:mysql://localhost”,”login”, “password”);
что такое Statement
запрос
что такое prepareStatement
запрос с параметрами
Какие бывают типы чтения транзакции
грязное - читаются данные во время выччисления, могут прочитаться ложные данные
неповторяющиеся - А прочитало строку, Б изменило строку , А снова прочитало
фантомное чтение - тоже когда несколько строк
Уровни изоляции транзакций
none - драйвер не поддерживает транзакции
read uncommited - позволяет транзакции видеть не сохраненные транзакции
repeatable read- разрешает только фантомное чтение
serializable - фантомное чтение тоже запрещено
Типы
управления
доступом
Дискреционный - владелец объекта сам определяет
тех, кто имеет доступ к объекту, а
также вид их доступа
Обязательный - Каждому субъекту и объекту
системы назначается некоторый
уровень безопасности (УБ).
Ролевой - на основе ролей
Корелляция нормализация и
производительности в бд
нормализация - устранение
противоречивости
как следствие порождает множество дополнительных таблиц, которые придется джойнить
как в кратце работает компьютер.
Из тригеров собирается логика - процессор. Из конденсаторов битная память. Команды воздеюствуют на память - получается программы. Из них собирается ОС и языки программирования.
Сетевая модель OSI
Физический бит физическая среда Канальный фрейм сетевая карта Сетевой пакет Ipv4 Транспортный дейтаграммы TCP/UDP Сеансовый Реализации на сокетах Представительский ASCII Прикладной HTTP
RPC
Удалённый вызов процедур, реже Вызов удалённых процедур (от англ. Remote Procedure Call, RPC) — класс технологий, позволяющих компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых компьютерах). Обычно реализация RPC-технологии включает в себя два компонента: сетевой протокол для обмена в режиме клиент-сервер и язык сериализации объектов (или структур, для необъектных RPC). Различные реализации RPC имеют очень отличающуюся друг от друга архитектуру и разнятся в своих возможностях: одни реализуют архитектуру SOA, другие - CORBA или DCOM. На транспортном уровне RPC используют в основном протоколы TCP и UDP, однако, некоторые построены на основе HTTP (что нарушает архитектуру ISO/OSI, так как HTTP - изначально не транспортный протокол).
Пакеты
из фреймов
фрейм
Преамбула Начало кадра MAC получателя MAC отправителя Длина Данные Контрольная сумма кадра
отличия TCP от UDP
ТСP - достоверность и порядок
UDP веерная расслыка
без подтверждений
NIC
NIC(сетевая карта\вафай)
Протокол Передачи Гипертекст
HTTP и HTTPS
NAT
механизм преобразования IP адресов в сетевых пакетах позволяет динамически менять эти адреса и сохранять таблицу подменённых адресов.
VPN
вложение одного tcp/ip пакета в другой и шифрование
содержимого. Получается виртуальная сеть работающая
внутри реальной сети. Для виртуальных сетей создаются
виртуальные сетевые устройства (tun/tap) с виртуальными же
IP адресами, видимыми только внутри нашей виртуальной
зашифрованной сети.
DNS - служба
таблица соответствия
доменных имен IP адресам
DHCP
протокол, использующийся для
автоматического выставления различной
конфигурации, в том числе IP-адресов
ARP
ассоциирует MAC-адрес
сервера с его IP адресом
VLAN
виртуальная частная сеть, когда сервера
в разных локация, к кадру
к кадрам добавляется дополнительный заголовок
с VLAN-тегом, по которому и определяется к какой
сети принадлежит кадр.
мост(между двумя маршрутизаторами)
Задеплоить приложение
собирает варник в папке с
приложением mvn clean install
копируешь в томкат\вебаппс
томкат\бин\стартап
в урле
локалхост:порт\имя_приложения\
Очереди сообщений
Сервер очереди хранит список сообщений (или задач,
job queue), которые отправляет ему основное
приложение. Задача — это просто информация о том,
что и как нужно выполнить. Сам сервер очереди ничего не выполняет.
Единственной его задачей является хранение самой очереди.
Сервер очереди хранит список сообщений (или задач,
job queue), которые отправляет ему основное
приложение. Задача — это просто информация о том,
что и как нужно выполнить. Сам сервер очереди ничего не выполняет.
Единственной его задачей является хранение самой очереди.
Что такое транзакции в БД
атомарного действия над БД, переводящего ее из одного целостного состояния в другое целостное состояние.
Чем отличается left join от inner join
грубо говоря, из 2х таблиц left join выберет из главной таблицы все записи, даже если во второй таблице нет совпадений по какому-то условию. INNER JOIN выберет только те, что полностью соответствуют условию
Ссылочная целостность
можно хранить данные без избыточного дублирования, то есть в нормализованном виде.
JPQL что такое
Язык запросов через JPA сущности
Что такое Уровень изолированности транзакций в общем
условное значение, определяющее, какие данные буду прочитаны во время транзакции
Проблемы параллельного доступа с использованием транзакций
потерянное обновление — при одновременном изменении одного блока данных разными транзакциями одно из изменений теряется;
«грязное» чтение (англ. dirty read) — чтение данных, добавленных или изменённых транзакцией, которая впоследствии не подтвердится (откатится);
неповторяющееся чтение (англ. non-repeatable read) — при повторном чтении в рамках одной транзакции ранее прочитанные данные оказываются изменёнными;
фантомное чтение (англ. phantom reads) — одна транзакция в ходе своего выполнения несколько раз выбирает множество строк по одним и тем же критериям. Другая транзакция в интервалах между этими выборками добавляет или удаляет строки или изменяет столбцы некоторых строк, используемых в критериях выборки первой транзакции, и успешно заканчивается. В результате получится, что одни и те же выборки в первой транзакции дают разные множества строк.
Какие вы знаете Уровни изоляции транзакции
Read uncommitted Транзакции, выполняющие только чтение, при данном уровне изоляции никогда не блокируются.
Read committed
Repeatable read Уровень, при котором читающая транзакция «не видит» изменения данных, которые были ею ранее прочитаны. При этом никакая другая транзакция не может изменять данные, читаемые текущей транзакцией, пока та не окончена.Однако другие транзакции могут вставлять новые строки, соответствующие условиям поиска инструкций, содержащихся в текущей транзакции. При повторном запуске инструкции текущей транзакцией будут извлечены новые строки, что приведёт к фантомному чтению.
Serializable (упорядочиваемость) Самый высокий уровень изолированности; транзакции полностью изолируются друг от друга, каждая выполняется так, как будто параллельных транзакций не существует. Только на этом уровне параллельные транзакции не подвержены эффекту «фантомного чтения».
code first & db first
Обычно проектируется БД затем по ней пишутся модели. Есть же фреймворки на которых мы сначала пишем модели, а они сами настраивают Архитектуру базы
минусы индексации в БД
1) индексы занимают дополнительное место на диске и в оперативной памяти.
2) Замедляются операции вставки, обновления и удаления записей. Однако алгоритмы построения индексов разработаны таким образом что бы иметь как можно меньший негативный эффект для указанных операций и даже позволяет выполнять их быстрее
зачем нужны индексы
если вы создадите индекс по первичному ключу, а затем будете искать строку с данными, используя значения первичного ключа, то SQL Server сначала найдет значение индекса, а затем использует индекс для быстрого нахождения всей строки с данными. Без индекса будет выполнен полный просмотр (сканирование) всех строк таблицы, что может оказать значительное влияние на производительность.
Какие бывают индексы в БД
Составной ключ - индекс может быть создан на основании нескольких полей.длина ключа индекса не должна превышать 900 байтов
Уникальные индексы - для реализации целостности данных в БД.
Как вставлять большие данные в таблицу
Через JOIN и желательно группировать по индексу - так быстрее чем по полю
Почему нельзя писать константы в запросе? (hardcode)
Дурной тон, потому как:
возможны Sql injections - нужно заворачивать в preparedStatement + забивается кэш в некоторых БД
зачем пул соединений нужен?
открытия соединения с сервером, является довольно долгим и мы можем его исключить заранее подготовив пул уже открытых соединений и предоставляя из него соединения приложению по мере необходимости. Если все открытые соединения уже заняты, создаётся новое. Как только пользователь освобождает одно из уже существующих соединений, оно становится доступно для других пользователей. Если соединение долго не используется, оно закрывается.