πŸ“· Как Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² SQL Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ: пошаговая инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Для вставки изобраТСния Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ SQL, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… BLOB (Binary Large Object).

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

CREATE TABLE Images (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    image BLOB
);

INSERT INTO Images (id, name, image)
VALUES (1, 'MyImage', LOAD_FILE('/path/to/image.jpg'));

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ "Images" с трСмя столбцами: "id", "name" ΠΈ "image". Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ† "image" ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… BLOB.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ вставляСм Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, указывая ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ "LOAD_FILE()".

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² SQL Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΈΡ€ SQL! Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² SQL Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΉ Π½Π°Π²Ρ‹ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ изобраТСниями Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ!

Π¨Π°Π³ 1: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ столбца для хранСния ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ смоТСм Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ столбСц, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Ρ…. Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с ΠΈΠΌΠ΅Π½Π΅ΠΌ "Images":


CREATE TABLE Images (
    id INT PRIMARY KEY,
    image BLOB
);
    

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ "Images" с двумя столбцами - "id" (цСлочислСнный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…) ΠΈ "image" (Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… BLOB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для хранСния Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…).

Π¨Π°Π³ 2: ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ для вставки

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅ для вставки. НапримСр, допустим Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΈΠΌΠ΅Π½Π΅ΠΌ "image.jpg". Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ для чтСния содСрТимого ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ:


DECLARE @BLOB AS VARBINARY(MAX);
SELECT @BLOB = BulkColumn
FROM OPENROWSET(BULK N'C:\path\to\image.jpg', SINGLE_BLOB) AS x
    

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ OPENROWSET для чтСния содСрТимого ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ "image.jpg" ΠΈ сохранСния Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° VARBINARY(MAX) с ΠΈΠΌΠ΅Π½Π΅ΠΌ @BLOB.

Π¨Π°Π³ 3: Вставка ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ содСрТимоС ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:


INSERT INTO Images (id, image)
VALUES (1, @BLOB);
    

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ INSERT INTO для вставки значСния @BLOB Π² столбСц "image" Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ "Images". ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 для столбца "id".

Π¨Π°Π³ 4: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° вставки

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ вставки ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос:


SELECT * FROM Images;
    

Π­Ρ‚ΠΎΡ‚ запрос Π²Π΅Ρ€Π½Π΅Ρ‚ всС строки ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ "Images" вмСстС со значСниями столбцов. Если вставка Π±Ρ‹Π»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ запись, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ вставили.

Π¨Π°Π³ 5: ИспользованиС ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² своих прилоТСниях ΠΈΠ»ΠΈ запросах. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:


DECLARE @Image VARBINARY(MAX);
SELECT @Image = image
FROM Images
WHERE id = 1;
    

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ SELECT для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ значСния столбца "image" ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ "Images", Π³Π΄Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ столбца "id" Ρ€Π°Π²Π½ΠΎ 1. ΠœΡ‹ сохраняСм содСрТимоС ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° VARBINARY(MAX) с ΠΈΠΌΠ΅Π½Π΅ΠΌ @Image.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ пСрСмСнная @Image, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ для отобраТСния ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² своСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ для выполнСния Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² SQL Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях, особСнно Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ большим количСством ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Ρ‚ΡŒ оТидания вашСй Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΈ ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΠΎΠ½ΡΡ‚ΡŒ вопрос. УспСхов Π² Π²Π°ΡˆΠΈΡ… Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

#15. Вставка Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ (insert into) | ΠžΡΠ½ΠΎΠ²Ρ‹ SQL

6. Qt 5.5.0+MS SQL Server 2008 Express - Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ изобраТСния (Adding an image)

Вставка ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² SQL | ΠžΡΠ½ΠΎΠ²Ρ‹ SQL

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сумму Π² SQL: простой способ для расчСта ΠΎΠ±Ρ‰Π΅ΠΉ суммы Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…

Как ΡΠΆΠ°Ρ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ SQL: Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ совСты

πŸ” Как Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ SQL запрос: простоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ“· Как Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² SQL Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ: пошаговая инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ