Таблица PAYMENTS определена следующим образом:
CREATE TABLE PAYMENTS (
ID NUMBER PRIMARY KEY,
DATE_PAY DATE DEFAULT SYSDATE,
AMOUNT NUMBER) и имеет данные:
ID DATE_PAY AMOUNT
1 22.04.2025 300
2 22.04.2025 150
3 23.04.2025 null
CREATE TABLE PAYMENTS (
ID NUMBER PRIMARY KEY,
DATE_PAY DATE DEFAULT SYSDATE,
AMOUNT NUMBER) и имеет данные:
ID DATE_PAY AMOUNT
1 22.04.2025 300
2 22.04.2025 150
3 23.04.2025 null
Какое значение будет получено в результате запроса:
SELECT SUM(AMOUNT) AS PAY_SUM FROM PAYMENTS
SELECT SUM(AMOUNT) AS PAY_SUM FROM PAYMENTS
Anonymous Quiz
1%
0
1%
150
0%
300
70%
450
14%
null
14%
Будет ошибка выполнения запроса
Всем привет!
Предлагаю небольшую задачу по SQL на тему оптимизации запросов и индексов. В базе данных есть таблица ORDERS, определенная так:
CREATE TABLE ORDERS (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
DATE_CREATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
USER_ID INT NOT NULL,
STATUS VARCHAR(20) NOT NULL
);
В таблице миллионы записей. Часто используется следующий запрос:
SELECT * FROM ORDERS WHERE USER_ID = 123 AND STATUS = 'completed';
При этом выполнение запроса занимает значительное время.
Предлагаю небольшую задачу по SQL на тему оптимизации запросов и индексов. В базе данных есть таблица ORDERS, определенная так:
CREATE TABLE ORDERS (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
DATE_CREATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
USER_ID INT NOT NULL,
STATUS VARCHAR(20) NOT NULL
);
В таблице миллионы записей. Часто используется следующий запрос:
SELECT * FROM ORDERS WHERE USER_ID = 123 AND STATUS = 'completed';
При этом выполнение запроса занимает значительное время.
Какой из способов наиболее эффективно улучшит производительность этого запроса?
Anonymous Quiz
8%
Добавить индекс по полю STATUS
23%
Добавить индекс по полю USER_ID
1%
Добавить индекс по полю DATE_CREATE
61%
Добавить составной индекс по полям (USER_ID, STATUS)
6%
Поменять условия во WHERE местами: ... WHERE STATUS = 'completed' AND USER_ID = 123;
Всем доброе утро!
Есть таблица сессий TBL_SESSIONS:
ID DATE_ST DATE_EN
1 12.03.25 14.03.25
2 15.03.25 16.03.25
3 19.03.25 22.03.25
Есть таблица сессий TBL_SESSIONS:
ID DATE_ST DATE_EN
1 12.03.25 14.03.25
2 15.03.25 16.03.25
3 19.03.25 22.03.25
👍4
Требуется удалить дату DATE_EN для сессии с идентификатором 3. Для этого необходимо воспользоваться командой:
Anonymous Quiz
48%
DELETE
6%
DROP
6%
TRUNCATE
39%
UPDATE
👍3
Как можно в команде SELECT при генерации данных в столбцы использовать значения других столбцов, не используя запросы из запросов и CTE.
Значения в некоторые столбцы могут формироваться сложным расчетами или подзапросами. Теперь представь, что при определённом получаемом значении в одном из таких столбцов, значение в соседнем столбце должно формировать по-другому, или даже своим подзапросом на основании полученного значения в предыдущем столбце. Как реализовать подобное, не прибегая к запросу из получаемой таблицы данных и не используя CTE?
В СУБД MySql и MariaDB есть пользовательские переменные (те, что с собачкой @), которые можно использовать прямо пока выводятся данные командой SELECT, строчка за строчкой. Посмотри:
SELECT t.*,
@id_table := (select ...) ID_TABLE,
(select count(*) from places where id_table = @id_table and is_busy = 0) COUNT_FREE_PLACES
FROM .....
В ПРЕДПОСЛЕДНИЙ(!) столбец формируется значение идентификатора некоторого столика ресторана.
В ПОСЛЕДНИЙ(!) столбец рассчитывается количество свободных мест того столика ресторана, идентификатор которого выведен в предыдущем столбце. В пользовательскую переменную @id_table будет положено некоторое значение, оно же и будет выведено в качестве данных этого столбца. В следующий столбец подзапрос получит данные, опираясь на значение этой переменной. Главное, чтобы эти столбцы формировать в указанном порядке. Сначала столбец, в результате расчёта которого получим значение в переменную, а затем столбец, который будет использовать значение этой переменной. Удобно и легко, да? И эта возможность - лишь верхушка айсберга возможностей использования пользовательских переменных!
В примере выше для каждой строки такой расчёт выводит данные независимо от предыдущей строки, так как в каждой новой строке переменная @id_table получает новое значение и по-новой выполняется подзапрос на основании её значения.
Ещё про пользовательские переменные я писал здесь: https://dzen.ru/a/Zcv6A63PZGDLYLHc
Значения в некоторые столбцы могут формироваться сложным расчетами или подзапросами. Теперь представь, что при определённом получаемом значении в одном из таких столбцов, значение в соседнем столбце должно формировать по-другому, или даже своим подзапросом на основании полученного значения в предыдущем столбце. Как реализовать подобное, не прибегая к запросу из получаемой таблицы данных и не используя CTE?
В СУБД MySql и MariaDB есть пользовательские переменные (те, что с собачкой @), которые можно использовать прямо пока выводятся данные командой SELECT, строчка за строчкой. Посмотри:
SELECT t.*,
@id_table := (select ...) ID_TABLE,
(select count(*) from places where id_table = @id_table and is_busy = 0) COUNT_FREE_PLACES
FROM .....
В ПРЕДПОСЛЕДНИЙ(!) столбец формируется значение идентификатора некоторого столика ресторана.
В ПОСЛЕДНИЙ(!) столбец рассчитывается количество свободных мест того столика ресторана, идентификатор которого выведен в предыдущем столбце. В пользовательскую переменную @id_table будет положено некоторое значение, оно же и будет выведено в качестве данных этого столбца. В следующий столбец подзапрос получит данные, опираясь на значение этой переменной. Главное, чтобы эти столбцы формировать в указанном порядке. Сначала столбец, в результате расчёта которого получим значение в переменную, а затем столбец, который будет использовать значение этой переменной. Удобно и легко, да? И эта возможность - лишь верхушка айсберга возможностей использования пользовательских переменных!
В примере выше для каждой строки такой расчёт выводит данные независимо от предыдущей строки, так как в каждой новой строке переменная @id_table получает новое значение и по-новой выполняется подзапрос на основании её значения.
Ещё про пользовательские переменные я писал здесь: https://dzen.ru/a/Zcv6A63PZGDLYLHc
❤5
Друзья, всем привет!
Можете поделиться, пожалуйста, какие СУБД (базы данных) Вы преимущественно используете для своих проектов (не связанных с работой по найму)?
Можете поделиться, пожалуйста, какие СУБД (базы данных) Вы преимущественно используете для своих проектов (не связанных с работой по найму)?
Anonymous Poll
7%
MySql
35%
Postgresql
6%
SQLite
28%
MS SQL Server или ORACLE
5%
Другое
20%
Я не использую базы данных или нет своих проектов
Анекдот на тему баз данных 😀
Почему программист расстался с девушкой-администратором баз данных?
— Она постоянно проверяла его связи.
Почему программист расстался с девушкой-администратором баз данных?
— Она постоянно проверяла его связи.
😁17👍2👀1
Всем привет! Предлагаю очередную задачу по базам данных.
Есть таблицы PRODUCTS (товары) и PRICES_HIST (история цен товаров), с которыми мы уже работали ранее:
CREATE TABLE PRODUCTS (
ID INT PRIMARY KEY,
NAME VARCHAR(100) NOT NULL,
DESCRIPTION VARCHAR(300) NULL DEFAULT NULL);
CREATE TABLE PRICES_HIST (
ID_PRODUCT INT,
DATE_PRICE DATE /* дата, начиная с которой будет действовать цена товара */,
VALUE_PRICE DECIMAL(10, 2),
PRIMARY KEY (ID_PRODUCT, DATE_PRICE),
CONSTRAINT FK1 FOREIGN KEY (ID_PRODUCT) REFERENCES PRODUCTS (ID)
)
Есть два SQL-запроса:
1)
SELECT ID,
NAME,
(SELECT MAX(VALUE_PRICE)
FROM PRICES_HIST
WHERE ID_PRODUCT = PRODUCTS.ID) AS PRICE
FROM PRODUCTS
2)
SELECT PRODUCTS.ID,
PRODUCTS.NAME,
MAX(PRICES_HIST.VALUE_PRICE) AS PRICE
FROM PRODUCTS
LEFT JOIN PRICES_HIST
ON PRICES_HIST.ID_PRODUCT = PRODUCTS.ID
GROUP BY PRODUCTS.ID,
PRODUCTS.NAME
Есть таблицы PRODUCTS (товары) и PRICES_HIST (история цен товаров), с которыми мы уже работали ранее:
CREATE TABLE PRODUCTS (
ID INT PRIMARY KEY,
NAME VARCHAR(100) NOT NULL,
DESCRIPTION VARCHAR(300) NULL DEFAULT NULL);
CREATE TABLE PRICES_HIST (
ID_PRODUCT INT,
DATE_PRICE DATE /* дата, начиная с которой будет действовать цена товара */,
VALUE_PRICE DECIMAL(10, 2),
PRIMARY KEY (ID_PRODUCT, DATE_PRICE),
CONSTRAINT FK1 FOREIGN KEY (ID_PRODUCT) REFERENCES PRODUCTS (ID)
)
Есть два SQL-запроса:
1)
SELECT ID,
NAME,
(SELECT MAX(VALUE_PRICE)
FROM PRICES_HIST
WHERE ID_PRODUCT = PRODUCTS.ID) AS PRICE
FROM PRODUCTS
2)
SELECT PRODUCTS.ID,
PRODUCTS.NAME,
MAX(PRICES_HIST.VALUE_PRICE) AS PRICE
FROM PRODUCTS
LEFT JOIN PRICES_HIST
ON PRICES_HIST.ID_PRODUCT = PRODUCTS.ID
GROUP BY PRODUCTS.ID,
PRODUCTS.NAME
Какой из этих запросов отобразит список товаров и их последнюю по дате стоимость?
Anonymous Quiz
11%
Первый запрос
22%
Второй запрос
16%
Оба запроса
51%
Ни один из этих запросов
В таблице CLIENTS есть три строки:
ID NAME DESCRIPTION
-----------------------------------------------------
1 АО Волга NULL
2 ИП Иванов
3 ИП Петров Договор
ID NAME DESCRIPTION
-----------------------------------------------------
1 АО Волга NULL
2 ИП Иванов
3 ИП Петров Договор
Сколько строк вернёт запрос
SELECT * FROM CLIENTS WHERE DESCRIPTION <> NULL AND DESCRIPTION <> ''
SELECT * FROM CLIENTS WHERE DESCRIPTION <> NULL AND DESCRIPTION <> ''
Anonymous Quiz
36%
0
40%
1
19%
2
5%
3
❤1
🧠 Как не потерять интерес к SQL (если учишь сам)
Учить SQL — просто, но легко заскучать🙂. Вот как держать фокус:
1️⃣ Реальные данные — пиши запросы к таблицам с фильмами, заказами или играми. Учись на том, что интересно.
2️⃣ Своя база — попробуй сделать мини-ERP: товары, клиенты, заказы. И JOIN-ы сразу станут осмысленными.
3️⃣ Мини-задачи — решай 1 SQL-задачу в день: sqlbolt.com, LeetCode, Mode.
4️⃣ Связь с кодом — попробуй писать SQL-запросы в Go или Python. Реальный эффект = реальный интерес.
5️⃣ Маленькие шаги — 20 минут в день лучше попытки "проглотить всё за выходные".
🔥 SQL — это не только слово "SELECT", это умение говорить с базами данных. А базы — везде.
Учить SQL — просто, но легко заскучать🙂. Вот как держать фокус:
1️⃣ Реальные данные — пиши запросы к таблицам с фильмами, заказами или играми. Учись на том, что интересно.
2️⃣ Своя база — попробуй сделать мини-ERP: товары, клиенты, заказы. И JOIN-ы сразу станут осмысленными.
3️⃣ Мини-задачи — решай 1 SQL-задачу в день: sqlbolt.com, LeetCode, Mode.
4️⃣ Связь с кодом — попробуй писать SQL-запросы в Go или Python. Реальный эффект = реальный интерес.
5️⃣ Маленькие шаги — 20 минут в день лучше попытки "проглотить всё за выходные".
🔥 SQL — это не только слово "SELECT", это умение говорить с базами данных. А базы — везде.
❤16👍2🫡1
Всем отличного понедельника!
Есть таблица клиентов CLIENTS:
ID DATE_CREATE NAME
1 15.01.2024 ИП Иванов
2 27.01.2024 АО Вагон
3 04.02.2024 ИП Крупицкая
...
99 19.06.2025 АО Фонтанка
Требуется написать SQL-запрос, выводящий месяца за 2024 год, в которые было заведено более 10 клиентов (DATE_CREATE = дата заведения). В отчёте отобразить номер или название месяца и количество заведённых клиентов. Результат отсортироваить по убыванию. Вначале отобразить месяца, в которых заведено больше всего клиентов.
Задачу можно решить любым способом. Один из вариантов решения задачи опубликую чуть позже, сначала буду ждать работу от Вас 🤗
Есть таблица клиентов CLIENTS:
ID DATE_CREATE NAME
1 15.01.2024 ИП Иванов
2 27.01.2024 АО Вагон
3 04.02.2024 ИП Крупицкая
...
99 19.06.2025 АО Фонтанка
Требуется написать SQL-запрос, выводящий месяца за 2024 год, в которые было заведено более 10 клиентов (DATE_CREATE = дата заведения). В отчёте отобразить номер или название месяца и количество заведённых клиентов. Результат отсортироваить по убыванию. Вначале отобразить месяца, в которых заведено больше всего клиентов.
Задачу можно решить любым способом. Один из вариантов решения задачи опубликую чуть позже, сначала буду ждать работу от Вас 🤗
👍4
Спасибо всем за активное участие!
Очень рад Вашим решениям!
Для того, чтобы отобразить месяца 2024 года, в которых заведено более 10ти клиентов, для начала просто отберём клиентов, заведённых именно в 2024 году:
SELECT *
FROM CLIENTS
WHERE DATE_CREATE >= DATE '2024-01-01'
AND DATE_CREATE < DATE '2025-01-01'
Было бы неплохо, если бы на столбце DATE_CREATE был индекс.
Мы получили всех клиентов, которых завели в 2024ом году. Выводя клиентов, выведем и ещё один столбец, в который будем извлекать номер месяца из даты заведения клиента (для того, чтобы позже клиентов группировать по одинаковому номеру месяца). Новому столбцу дадим алиас "MM". Наш запрос получит вид:
SELECT CLIENTS. *,
EXTRACT(MONTH FROM DATE_CREATE) MM
FROM CLIENTS
WHERE DATE_CREATE >= DATE '2024-01-01'
AND DATE_CREATE < DATE '2025-01-01'
В запросе выше мы вывели все имеющиеся столбцы из таблицы CLIENTS и добавили ещё один новый, в него мы получили месяц заведения клиента. У некоторых клиентов месяц заведения одинаковый, сгруппируем строки по одинаковом получаемому месяцу заведения клиента, подсчитав сколько в каждую группу сгруппировалось строк:
SELECT
EXTRACT(MONTH FROM DATE_CREATE) MM, COUNT(*) CLIENTS_COUNT
FROM CLIENTS
WHERE DATE_CREATE >= DATE '2024-01-01'
AND DATE_CREATE < DATE '2025-01-01'
GROUP BY EXTRACT(MONTH FROM DATE_CREATE)
В результате получим таблицу вида:
MM CLIENTS_COUNT
1 5
2 7
3 12
...
Сгруппировав клиентов 2024 года по месяцу заведения и подсчитав сколько клиентов заведено в каждом месяце, используя HAVING теперь оставим тех, где подсчитанное количество больше 10:
SELECT
EXTRACT(MONTH FROM DATE_CREATE) MM, COUNT(*) CLIENTS_COUNT
FROM CLIENTS
WHERE DATE_CREATE >= DATE '2024-01-01'
AND DATE_CREATE < DATE '2025-01-01'
GROUP BY EXTRACT(MONTH FROM DATE_CREATE)
HAVING COUNT(*) > 10
Обратите внимание, что в HAVING-е недопустимо для большинства СУБД (да и по ANSI стандарту тоже) использовать алиас (новое имя) столбца, ведь столбец с данными ещё не создан. Но в HAVING-е можно использовать такой же расчёт количества, что и в SELECT-е. В итоге и получилось не:
HAVING CLIENTS_COUNT > 10
а:
HAVING COUNT(*) > 10
Осталось добавить упорядочивание месяцов по количеству заведенных в них клиентов. Месяца с наибольшим количеством заведённых клиентов должны отображаться сверху. А вот в сортировке можно использовать алиасы столбцов. Конечный вариант нашего запроса:
SELECT
EXTRACT(MONTH FROM DATE_CREATE) MM, COUNT(*) CLIENTS_COUNT
FROM CLIENTS
WHERE DATE_CREATE >= DATE '2024-01-01'
AND DATE_CREATE < DATE '2025-01-01'
GROUP BY EXTRACT(MONTH FROM DATE_CREATE)
HAVING COUNT(*) > 10
ORDER BY CLIENTS_COUNT DESC
Очень рад Вашим решениям!
Для того, чтобы отобразить месяца 2024 года, в которых заведено более 10ти клиентов, для начала просто отберём клиентов, заведённых именно в 2024 году:
SELECT *
FROM CLIENTS
WHERE DATE_CREATE >= DATE '2024-01-01'
AND DATE_CREATE < DATE '2025-01-01'
Было бы неплохо, если бы на столбце DATE_CREATE был индекс.
Мы получили всех клиентов, которых завели в 2024ом году. Выводя клиентов, выведем и ещё один столбец, в который будем извлекать номер месяца из даты заведения клиента (для того, чтобы позже клиентов группировать по одинаковому номеру месяца). Новому столбцу дадим алиас "MM". Наш запрос получит вид:
SELECT CLIENTS. *,
EXTRACT(MONTH FROM DATE_CREATE) MM
FROM CLIENTS
WHERE DATE_CREATE >= DATE '2024-01-01'
AND DATE_CREATE < DATE '2025-01-01'
В запросе выше мы вывели все имеющиеся столбцы из таблицы CLIENTS и добавили ещё один новый, в него мы получили месяц заведения клиента. У некоторых клиентов месяц заведения одинаковый, сгруппируем строки по одинаковом получаемому месяцу заведения клиента, подсчитав сколько в каждую группу сгруппировалось строк:
SELECT
EXTRACT(MONTH FROM DATE_CREATE) MM, COUNT(*) CLIENTS_COUNT
FROM CLIENTS
WHERE DATE_CREATE >= DATE '2024-01-01'
AND DATE_CREATE < DATE '2025-01-01'
GROUP BY EXTRACT(MONTH FROM DATE_CREATE)
В результате получим таблицу вида:
MM CLIENTS_COUNT
1 5
2 7
3 12
...
Сгруппировав клиентов 2024 года по месяцу заведения и подсчитав сколько клиентов заведено в каждом месяце, используя HAVING теперь оставим тех, где подсчитанное количество больше 10:
SELECT
EXTRACT(MONTH FROM DATE_CREATE) MM, COUNT(*) CLIENTS_COUNT
FROM CLIENTS
WHERE DATE_CREATE >= DATE '2024-01-01'
AND DATE_CREATE < DATE '2025-01-01'
GROUP BY EXTRACT(MONTH FROM DATE_CREATE)
HAVING COUNT(*) > 10
Обратите внимание, что в HAVING-е недопустимо для большинства СУБД (да и по ANSI стандарту тоже) использовать алиас (новое имя) столбца, ведь столбец с данными ещё не создан. Но в HAVING-е можно использовать такой же расчёт количества, что и в SELECT-е. В итоге и получилось не:
HAVING CLIENTS_COUNT > 10
а:
HAVING COUNT(*) > 10
Осталось добавить упорядочивание месяцов по количеству заведенных в них клиентов. Месяца с наибольшим количеством заведённых клиентов должны отображаться сверху. А вот в сортировке можно использовать алиасы столбцов. Конечный вариант нашего запроса:
SELECT
EXTRACT(MONTH FROM DATE_CREATE) MM, COUNT(*) CLIENTS_COUNT
FROM CLIENTS
WHERE DATE_CREATE >= DATE '2024-01-01'
AND DATE_CREATE < DATE '2025-01-01'
GROUP BY EXTRACT(MONTH FROM DATE_CREATE)
HAVING COUNT(*) > 10
ORDER BY CLIENTS_COUNT DESC
👍8❤1
Здравствуйте, друзья!
На следующей неделе планирую новую группу по SQL и PostgreSql, и в этот раз обучение будет по будням! 👌
- Он-лайн обучение по вторникам и четвергам 19:30 - 21:00;
- Закрытая Телеграм группа куда я буду выкладывать записи наших он-лайн встреч (на случай, если пропустите или захотите повторить материал);
- Будут самостоятельные практические задачи на тренеровочной базе данных. Я буду проверять Ваши решения, помогать оптимизировать их и находить ошибки!
Посмотреть программу обучения и записаться можно тут: https://prime-soft.biz/courses/postgresql
Оплатить можно в два этапа. Вначале 50% (7.450 ₽) и столько же после пятого урока. Всего будет 10 онлайн встреч.
График обучения:
- вт, чт 19:30 - 21:00;
- 08.07.2025 - 07.08.2025!
Оставляйте вопросы прямо под постом или отправляйте на почту: info@prime-soft.biz
На следующей неделе планирую новую группу по SQL и PostgreSql, и в этот раз обучение будет по будням! 👌
- Он-лайн обучение по вторникам и четвергам 19:30 - 21:00;
- Закрытая Телеграм группа куда я буду выкладывать записи наших он-лайн встреч (на случай, если пропустите или захотите повторить материал);
- Будут самостоятельные практические задачи на тренеровочной базе данных. Я буду проверять Ваши решения, помогать оптимизировать их и находить ошибки!
Посмотреть программу обучения и записаться можно тут: https://prime-soft.biz/courses/postgresql
Оплатить можно в два этапа. Вначале 50% (7.450 ₽) и столько же после пятого урока. Всего будет 10 онлайн встреч.
График обучения:
- вт, чт 19:30 - 21:00;
- 08.07.2025 - 07.08.2025!
Оставляйте вопросы прямо под постом или отправляйте на почту: info@prime-soft.biz
prime-soft.biz
Prime | Курс SQL, PostgreSql
Уроки и курсы SQL, PostgreSQL, Базы данных.
👍2
Интересно было бы узнать сколько сейчас работает удалённо.
Вы работаете в офисе или из дома?
Вы работаете в офисе или из дома?
Anonymous Poll
28%
Всегда работаю в офисе
22%
Несколько дней в неделю в офисе
10%
Редко работаю в офисе, почти всегда из дома
31%
У меня полный хом офис. Я работаю из дома
9%
Я не работаю
Всем привет!
Решая практические задачи и даже проходя небольшие тесты по SQL, мы становимся умнее: освежаем в памяти возможности языка SQL, узнаём и закрепляем новые знания! Поэтому, не ленимся и принимаем участие!😉
Предлагаю очередной интересный вопрос по базам данных.
В базе данных, среди прочих, есть таблица клиентов CLIENTS, определённая так:
CREATE TABLE CLIENTS (
ID INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
NAME VARCHAR(100) NOT NULL,
INN VARCHAR(20));
CREATE UNIQUE INDEX CLIENTS_INN ON CLIENTS (INN);
В таблице CLIENTS две строки:
ID NAME INN
1 АО Волга 12345
2 ИП Пятаков NULL
Что произойдёт при выполнении следующей команды?
INSERT INTO CLIENTS
(NAME, INN)
VALUES
('АО Зелёный дом', NULL)
Решая практические задачи и даже проходя небольшие тесты по SQL, мы становимся умнее: освежаем в памяти возможности языка SQL, узнаём и закрепляем новые знания! Поэтому, не ленимся и принимаем участие!😉
Предлагаю очередной интересный вопрос по базам данных.
В базе данных, среди прочих, есть таблица клиентов CLIENTS, определённая так:
CREATE TABLE CLIENTS (
ID INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
NAME VARCHAR(100) NOT NULL,
INN VARCHAR(20));
CREATE UNIQUE INDEX CLIENTS_INN ON CLIENTS (INN);
В таблице CLIENTS две строки:
ID NAME INN
1 АО Волга 12345
2 ИП Пятаков NULL
Что произойдёт при выполнении следующей команды?
INSERT INTO CLIENTS
(NAME, INN)
VALUES
('АО Зелёный дом', NULL)
Что произойдёт при выполнении SQL команды?
Anonymous Quiz
66%
В таблицу CLIENTS добавится строка
34%
Будет SQL-ошибка