Пишем на SQL
1.93K subscribers
43 photos
7 videos
12 files
117 links
Уроки по SQL. Изучаем базы данных на примере СУБД ORACLE, MySQL, MS SQL Server, PostgreSql

Мой курс по SQL и базам данных:
https://prime-soft.biz/courses/sql

Связь со мной @iliahohlov
Download Telegram
Мини-вопрос:
Какая команда SQL используется для изменения объектов базы данных?
Anonymous Quiz
7%
TRUNCATE
36%
UPDATE
3%
CREATE
54%
ALTER
Уверен, что большинство ответили на прошлый вопрос не правильно потому, что поторопились🙂

Ключевое слово - Объекты.
Нужно было выбрать команду изменения ОБЪЕКТОВ базы данных, например, таблиц (а не данных в них), пользователей и т.д.
👍1
Предлагаю решить следующую задачу. На какой строке SQL запроса ошибка (при условии, что используемые в запросе таблицы и поля таблиц в базе данных существуют):
Anonymous Quiz
4%
SELECT DATE_CREATE,
33%
5 DOC_TYPE
1%
FROM PRIVATE_DOCS
10%
WHERE IS_EXPIRED IS NULL
32%
ORDER BY DATE_CREATE
0%
UNION ALL
4%
SELECT d.DATE_CREATE,
8%
d.VOUCHER_TYPE DOC_TYPE
1%
FROM VOUCHERS d
7%
ORDER BY DATE_CREATE
Друзья, если вы ответили не правильно и если не понятно пояснение правильного ответа, то можете написать в комментариях почему выбрали вашу строку (которую считаете ошибочной в запросе). Я поясню почему она правильная👍
Доброе утро, друзья!

Что оптимальнее для ORACLE писать в блоке SELECT подзапроса, проверяющего наличие записи в другой таблице, звёздочку:

SELECT *
FROM Persons p
WHERE EXISTS (SELECT * FROM PersonCars WHERE PersonID = p.PersonID)

или псевдостолбец:

SELECT *
  FROM Persons p
WHERE EXISTS (SELECT 1 FROM PersonCars WHERE PersonID = p.PersonID)

Как ответил, один из разработчиков ORACLE, для СУБД по трудозатратам это даст равнозначные показатели! Поэтому можно писать как больше нравится 🙂👍
👍8
В конце прошлой недели получил хорошую новость: моя книга "Курс SQL. Базы данных. ORACLE" стала доступна и в Google. Books!

https://play.google.com/store/books/details?id=MLSREAAAQBAJ
👍7
Предлагаю ещё одну похожую задачу. В следующем SQL-коде в одной из строчек ошибка.

SELECT v.VOUCHER_DATE,
               v.VOUCHER_STATE,
               NULL  CREATE_USER,
               NULL   ADD_INFO,
               v.USER_ID
  FROM VOUCHERS v
UNION ALL
SELECT ov.VOUCHER_DATE,
               2 VOUCHER_STATE,
               NULL  CREATE_USER,
               NULL
  FROM OLD_VOUCHERS ov
   LEFT JOIN CLIENTS c
      ON c.ID_CLIENT = ov.ID_CLIENT
WHERE c.ID_CLIENT IS NULL
ORDER BY 1
В каком блоке ошибка, если известно, что все используемые таблицы в базе данных существуют и имена столбцов написаны правильно?
Anonymous Quiz
38%
В блоке SELECT одного из запросов
26%
В соединении во втором SELECT-е
16%
В блоке WHERE во втором SELECT-е
20%
В блоке ORDER BY
👍5
Две из нижеприведённых функций в ORACLE во многих случаях могут равноценно заменять друг друга (работают одинаково), а другая работает по-другому. Какая?
Anonymous Quiz
9%
NVL
53%
NVL2
37%
COALESCE
👍3
Здравствуйте, друзья!

Следующий вопрос для тех, кто уже прошёл 25ый урок нашего курса. Посложнее 🙂💪
Имеется новая пустая таблица, с привязанным к ней сиквенсом для генерации значений идентификаторов в столбец ID. При выполнили первых двух команд INSERT, вставились две строки в таблицу с идентификаторами в столбце ID 1 и 2, соответственно. Потом решили начать добавление строк заново, выполнив ROLLBACK. Произведённая вставка двух строк, естественно, откатилась. Таблица стала снова пустой. Снова выполняем команду INSERT.
Строчка с каким идентификатором в столбец ID будет вставлена?
Anonymous Quiz
22%
1
4%
2
58%
3
4%
4
6%
NULL
6%
Будет ошибка выполнения команды INSERT
Спасибо всем за участие в тесте! 🙂 Почти все ответили правильно! 👍
С началом новой рабочей и учебной недели!

И вот ещё одна задачка на тему транзакций 😌

Есть пустая таблица Table1, выполнили следующие команды к ней:
Insert into Table1...;  вставка 1 строки
Insert into Table1...;  вставка 1 строки
Alter table ...;  добавили один столбец
Insert into Table1...; вставка 1 строки
Rollback;
Какая цифра будет в результате выполнения запроса:
Select count(*) from Table1
Anonymous Quiz
23%
0
10%
1
40%
2
12%
3
14%
NULL
👍3