You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: sql.md
+30-7Lines changed: 30 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -89,11 +89,17 @@ __Временная таблица__ - это объект базы данны
89
89
[к оглавлению](#sql)
90
90
91
91
## Что такое _«представление» (view)_ и для чего оно применяется?
92
-
__Представление__, View - виртуальная таблица, представляющая данные одной или более таблиц альтернативным образом.
92
+
__Представление__, View - виртуальная таблица, представляющая данные одной или более таблиц альтернативным образом. Представления широко используются когда необходимо представить структуру базы данных в удобном для восприятия человеком виде, а так же в соображениях безопасности, предоставляя пользователям возможность обращаться к данным, но не разрешая им доступ к исходным таблицам.
93
93
94
94
В действительности представление – всего лишь результат выполнения оператора `SELECT`, который хранится в структуре памяти, напоминающей SQL таблицу. Они работают в запросах и операторах DML точно также как и основные таблицы, но не содержат никаких собственных данных. Представления значительно расширяют возможности управления данными. Это способ дать публичный доступ к некоторой (но не всей) информации в таблице.
95
95
96
-
`Create view`
96
+
Для создания представления используется оператор SQL CREATE и синтаксис выглядит следующим образом:
## В чем различие между операторами `HAVING` и `WHERE`?
168
-
`WHERE` - это ограничивающее выражение. Оно выполняется до того, как будет получен результат операции.
174
+
`WHERE` - это ограничивающее выражение. Оно выполняется до того, как будет получен результат операции. WHERE служит для задания дополнительного условия выборки, операций вставки, редактирования и удаления записей. Условие (condition) может включать в себя предикаты AND, OR, NOT, LIKE, BETWEEN, IS, IN, ключевое слово NULL, операторы сравнения и равенства (<, >, =).
175
+
```java
176
+
SELECT*FROMPlanetsWHERERadiusBETWEEN3000AND9000
177
+
```
169
178
170
-
`HAVING` - фильтрующее выражение. Оно применяется к результату операции и выполняется уже после того как этот результат будет получен, в отличии от where.
179
+
`HAVING` - Оператор SQL HAVING является указателем на результат выполнения агрегатных функций. Агрегатной функцией в языке SQL называется функция, возвращающая какое-либо одно значение по набору значений столбца. Такими функциями являются: SQL COUNT(), SQL MIN(), SQL MAX(), SQL AVG(), SQL SUM().
180
+
```java
181
+
SELECTSinger, SUM(Sale)
182
+
FROMArtists
183
+
GROUPBYSinger
184
+
HAVINGSUM(Sale) >2000000
185
+
```
171
186
172
187
Выражения WHERE используются вместе с операциями SELECT, UPDATE, DELETE, в то время как HAVING только с SELECT и предложением GROUP BY.
## В чем разница между операторами `GROUP BY` и `DISTINCT`?
193
-
`DISTINCT` указывает, что для вычислений используются только уникальные значения столбца. `NULL` считается как отдельное значение.
194
-
`GROUP BY` создает отдельную группу для всех возможных значений (включая значение `NULL`).
208
+
`DISTINCT` указывает, что для вычислений используются только уникальные значения столбца. `NULL` считается как отдельное значение. DISTINCT нашел широкое применение в операторе SQL SELECT, для выборки уникальных значений. Так же используется в агрегатных функциях.
209
+
```java
210
+
SELECTDISTINCT column_name FROM table_name
211
+
```
212
+
213
+
`GROUP BY` используется для объединения результатов выборки по одному или нескольким столбцам. создает отдельную группу для всех возможных значений (включая значение `NULL`).
195
214
196
215
Если нужно удалить только дубликаты лучше использовать `DISTINCT`, `GROUP BY` лучше использовать для определения групп записей, к которым могут применяться агрегатные функции.
197
216
@@ -293,7 +312,11 @@ CREATE INDEX index_name ON table_name (column_name)
293
312
## В чем отличие между операторами `DELETE` и `TRUNCATE`?
294
313
`DELETE` - оператор DML, удаляет записи из таблицы, которые удовлетворяют критерию `WHERE` при этом задействуются триггеры, ограничения и т.д.
295
314
296
-
`TRUNCATE` - DDL оператор (удаляет таблицу и создает ее заново. Причем если на эту таблицу есть ссылки `FOREGIN KEY` или таблица используется в репликации, то пересоздать такую таблицу не получится).
315
+
`TRUNCATE` - DDL оператор. удаляет таблицу (для мгновенной очистки всех строк) и создает ее заново. Причем если на эту таблицу есть ссылки `FOREGIN KEY` или таблица используется в репликации, то пересоздать такую таблицу не получится.
316
+
317
+
+ Оператор SQL TRUNCATE не ведет запись об удаленных данных в журнал событий.
318
+
+ SQL DELETE осуществляет блокировку построчно, оператор SQL TRUNCATE по всей странице целиком. Вследствие этого, оператор SQL TRUNCATE не возвращает никакого значения, SQL DELETE же, возвращает количество удаленных строк.
319
+
+ После применения оператора SQL DELETE возможно сделать откат операции и восстановить удаленные данные (команда ROLLBACK). При применении оператора SQL TRUNCATE этого сделать нельзя, однако в СУБД MS SQL Server, оператор может применяться в транзакциях.
0 commit comments