Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Классика карточных игр! Яркий геймплей, простые правила. Развивайте стратегию, бросайте вызов соперникам и станьте королем карт! Играйте прямо сейчас!

Дурак подкидной и переводной

Карточные, Настольные, Логическая

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
0
VelStyling
VelStyling
Серия SQL: знакомство

INSERT INTO - Простая команда с непростым характером⁠⁠

2 месяца назад

INSERT — это оператор для добавления новых строк в таблицу.

Классика выглядит так:

INSERT INTO customers (name, age, city)

VALUES ('Оля', 28, 'Москва');

Главные слова:

  • INSERT INTO — куда добавляем,

  • VALUES — что именно добавляем.

INSERT INTO - Простая команда с непростым характером

А пока подписывайся на мой канал На связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков. Присоединяйся!

При вставке значений в таблицу можно выделить одиночную вставку и массовую вставку.
Одиночная - это когда в запросе содержится вставка одной строки, а массовая - нужно вставить больше чем одну строку.

INSERT INTO products (name, price) VALUES ('Яблоки', 100);

INSERT INTO products (name, price) VALUES ('Груши', 120);

-- и так 1000 раз 😅

INSERT INTO products (name, price)

VALUES

('Яблоки', 100),

('Груши', 120),

('Бананы', 150);

Один INSERT на 1000 строк работает быстрее, чем 1000 отдельных запросов, потому что база открывает и закрывает транзакцию только один раз.

Транзакция — это логическая единица работы с базой данных, набор действий (обычно INSERT, UPDATE, DELETE и т. д.), которые выполняются как одно целое.
База гарантирует, что или все действия внутри транзакции будут выполнены, или не выполнится ни одно.

Например:

  • Перевод денег с карты на карту.

    1. Снять деньги с карты А.

    2. Зачислить деньги на карту Б.

Если выполнить только первый шаг, а второй не получится — деньги «пропадут».
Транзакция гарантирует, что либо оба шага выполнятся, либо оба отменятся.

Так вот, даже если мы явно в коде не прописываем начало и окончание транзакции, то наша база автоматически оборачивает наш запрос началом и окончанием транзакции

BEGIN;
INSERT INTO products (name, price) VALUES ('Яблоки', 100);
COMMIT;

BEGIN;
INSERT INTO products (name, price) VALUES ('Груши', 120);
COMMIT;

-- и так 1000 раз 😅

BEGIN;

INSERT INTO products (name, price)

VALUES

('Яблоки', 100),

('Груши', 120),

('Бананы', 150);

COMMIT;

Но при этом вставлять одним запросом млн строк - это плохо. Можно словить блокировку. Поэтому для большого объема вставки - лучше дробить на несколько маленьких частей.

Оптимальный размер батча — подбирается экспериментально. Обычно от 5k до 50k строк за один заход.

При вставке данных в таблицу у нас часто используется уникальный идентификатор строки, часто этот идентификатор является автоинкрементом, т.е. база сама записывает значение в это поле.

CREATE TABLE users (

id SERIAL, -- автоинкремент

name TEXT

);

INSERT INTO users (name) VALUES ('Оля'); -- id = 1

INSERT INTO users (name) VALUES ('Маша'); -- id = 2

Каждый INSERT добавляет новую запись, а автоинкремент гарантирует уникальный идентификатор для этой строки.

  • Без него нужно было бы самому считать, какой следующий номер ставить.

  • Автоинкремент экономит время и предотвращает ошибки.

Но автоинкремент не гарантирует, что значения в поле id будут "последовательными", он гарантирует, что значения в этом поле будут уникальными.

Получается, что при INSERT в поле с автоинкрементом могут быть "дырки".
Это получается, например, в следующих кейсах:
1. отмененная вставка:
- Сделали INSERT, база выделила id = 5.
- Транзакцию откатили (ROLLBACK).
- Id 5 пропал, следующие вставки идут с 6.
2. Удаление строк:
- Если удалить записи, то номера исчезнут, но новые не «подтянутся» к освободившимся.
3. Параллельная вставка:
- Две транзакции одновременно вставляют строки.
- Каждая получает свой id, даже если одна потом откатится → тоже появляются пропуски.

В PostgreSQL номера генерируются через объект SEQUENCE.

Если ты вручную добавил строку с id = 9999, а sequence «застрял» на 5000.
То, когда при следующих попытках осуществить вставку строки БД дойдет до значения 9999 - этот INSERT упадёт с ошибкой: «дубликат ключа». Потому что sequence не обновляется автоматически! Sequence не смотрит на максимальный id в таблице. Он просто отдаёт своё следующее число.

Решение может быть:

ALTER SEQUENCE … RESTART WITH <нужный номер>.

На вставку строк в таблицу может быть вызов триггера. Потому что вставка строки - это новая информация. А в зависимости от новой информации у нас могут быть разная логика подсчета того или иного показателя. Например, расчет бонусов для клиента зависит от суммы заказа. Поэтому при каждой вставке в таблицу заказов будет вызван триггер по расчету бонусов для клиента.

CREATE TRIGGER bonus

AFTER INSERT ON orders

FOR EACH ROW

EXECUTE FUNCTION bonus_cnt();

Каждая новая строка вызовет bonus_cnt().
Даже если ты вставляешь 1000 строк, триггер вызовется 1000 раз.

Есть еще такое понятие как UPSERT.

UPSERT = INSERT + UPDATE, т.е. «вставить новую запись, а если такая запись уже есть — обновить существующую».

Пример: у нас есть таблица users с колонкой id. Мы хотим добавить пользователя с id = 1.

  • Если пользователя нет → вставляем.

  • Если пользователь есть → обновляем его данные.

Но такой INSERT + UPDATE в каждой СУБД реализуется по разному.
Одна и та же логика «вставить или обновить» в коде не переносится напрямую между базами. То, что называется UPSERT в PostgreSQL, будет работать иначе в MySQL и совсем иначе в SQL Server.

INSERT ... ON CONFLICT (id) DO UPDATE ... -- Вставляет запись, если id ещё нет; иначе обновляет эту запись. PostgreSQL

INSERT ... ON DUPLICATE KEY UPDATE ... -- MySQL

MERGE ... -- SQL Server

По сути, UPSERT — это концепция, а не единый универсальный оператор.

На скорость INSERT влияет наличие индексов в таблице. Чем больше индексов, тем долше будет выполняться вставка. Каждая новая строка должна обновить все индексы. При массовых загрузках индексы иногда отключают, а потом создают заново

А еще, иногда база говорит: «Вставка прошла успешно», но на диск ещё ничего не записано.

  • PostgreSQL и MySQL (InnoDB) используют write-ahead log: запись сначала идёт в журнал, потом — на диск.

  • Если прямо в этот момент выключить сервер → можно потерять часть данных.

Решается настройкой fsync, commit и уровней надёжности транзакций.

INSERT — это не просто «добавить данные». Это про индексы, блокировки, автоинкременты, батчи и даже про то, как СУБД пишет на диск.

Показать полностью 1
[моё] SQL Аналитик Аналитика База данных Выгорание экрана Новая работа Большие данные Таблица Длиннопост
5
MashaApelsin
MashaApelsin
Серия Истории из жизни человечьей

Я сделала это фото в ноябре, когда шла с работы на электричку⁠⁠

10 месяцев назад
Я сделала это фото в ноябре, когда шла с работы на электричку

Первая мысль – надо писать пост.

Ага. Это так просто: возьми и напиши пост под ключ.

Но я взяла и написала. Отвратительный такой пост. Скучный, банальный, с очевидными выводами и ни к чему не ведущим заключением.

Два раза палец замахивался на кнопку "Опубликовать и забыть". Не смог.

Удалила к чертям тот текст.

Но фотография-то осталась.

Нужно было что-то делать, как-то спасать ситуацию. И вот только сейчас, спустя много времени и один месяц я наконец-то нажму на "Отправить".

Нет, вы только не подумайте, что то, что вы читаете в данный момент, и есть вторая версия текста. Нет. Текст всё ещё не написан.

Сегодня я опубликовала фото, написала это пояснение. Всё. Обратного пути нет. К завтрашнему дню я должна написать этот грёбаный текст и закрыть ноябрьский гештальт. Опубликую в своем ТГ-канале https://t.me/Mysha_pishet

Мосты сожжены.

// А кто-то говорит, что писать для своего блога легко. Вы тоже так считаете?

Показать полностью 1
[моё] РЖД Писательство Автор Блог Работа Вдохновение Психология Выгорание экрана Истории из жизни Дневник Опыт Личный опыт Санкт-Петербург
17
3
Dorblue666
Dorblue666

Продам телевизор за 150$⁠⁠

1 год назад
Выгорело изображение из-за статичной картинки

Выгорело изображение из-за статичной картинки

System of a Down Lcd дисплей Выгорание экрана Юмор Chop Suey! Грустный юмор
1
papaf37217

Как удалить выгорание OLED/AMOLED рабочий способ⁠⁠

3 года назад

Всем привет сегодня я расскажу как на андроид убрать выгорание на экране OLED/AMOLED. Для начала скачиваем приложение AMOLED burn in fixer её нет в маркете поэтому ссылка ниже. Скачиваем и устанавливаем. Теперь запускаем и ждем пока приложение загрузится. У меня это заняло не более 5 минут. Далее жмем на кнопку "Start". После чего начнется сканирование телефона на наличие выгораний. После сканирования вам предложат несколько вариантов решения проблемы, выберите "Fix" и нажмите на кнопку. Если вам не понравился результат то жмите на "Reset" после чего телефон перезагрузится и вы увидите что проблема исчезла. Если же вам понравился результат, то просто нажмите на "Done"


Ссылка на AMOLED burn in fixer:

https://m.apkpure.com/amoled-burn-in-fixer/com.tinyroar.amol...

[моё] Android Смартфон Компьютер AMOLED Oled Выгорание экрана Текст
16
0
morkovka97

Не понятные символы позади основного экрана⁠⁠

3 года назад

Добрый вечер, подскажите пожалуйста. Самсунг а51. На светлом фоне экрана вижу взади основного экрана не понятные значки( точнее они то понятные) а вот откуда они взялись нет. Внизу (домик, плюс), с правой стороны (сердечко, знак сообщения, стрелка назад), сверху ( рекомендации). Как это можно убрать, может кто нибудь в курсе?)

Samsung Телефон Текст Дисплей Выгорание экрана Пиксель AMOLED
12
3
vadim4p
vadim4p

Гарантия DNS и SAMSUNG⁠⁠

4 года назад

Samsung Galaxy Tab S6 Lite

Показать полностью 3
[моё] Samsung Ремонт Планшет Выгорание экрана Длиннопост DNS
15
6497
SirVasian

Монитор⁠⁠

5 лет назад

Хреновасто видно? Ещё бы, он выключен, уже лет 10 как.

Монитор
Показать полностью 1
[моё] Монитор Выгорание Телетайп Выгорание экрана
384
0
metroved
metroved
Лига Юристов

Телефон SAMSUNG S8 выгорание дисплея и разбитый экран⁠⁠

6 лет назад

Обращаюсь за помощью к лиге юристов

В общем приключилась такая ситуация :

Имеется телефон Samsung S8 на гарантии, за 5 мес выгорел экран (статичные полосы приложений и кнопок сверху и снизу экрана), это частая проблема samsung-ов, много про это в инете написано. Но пользовался, т.к. времени не было идти в сервис.

И вот самое главное: на днях собрался идти в сервис, менять экран по гарантии. При выгорании дисплея его меняют без проблем. Но случилось страшное, я уронил телефон и стекло на нем пошло паутинкой. (разбилось само наружное стекло, экран всё так же работает)

В официальном сервисе Samsung мне отказали в гарантийной замене экрана, т.к. имеются механические повреждения. Не смотря на мои заявления что выгорание экрана – это производственный брак и никак не связан с тем, что на стекле экрана трещины.


На третьей  фотографии на экране белый фон и видно выгорание дисплея.


Вот в чем мой вопрос:

Можно ли при отказе от ремонта официального сервисного центра вернуть телефон продавцу (покупал в М.Видео) по причине неустранимого дефекта – выгорание дисплея телефона.

Ну может еще кто что посоветует.

P.S. Комментарии о том что я рукожоп писать не нужно, сам знаю.

Показать полностью 3
[моё] Телефон Samsung Galaxy S8 Выгорание экрана Юридическая помощь Юридическая консультация Длиннопост
58
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии