Запросы в SQL

Board index Программирование GoLand

Description: Программирование на языке Go

#1by mexan » 17.01.2025, 15:02

DELETE-запрос
Code: Select all
package main

import (
    "database/sql"
    "fmt"

    _ "modernc.org/sqlite"
)

func main() {
    db, err := sql.Open("sqlite", "demo.db")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer db.Close()

    _, err = db.Exec("DELETE FROM clients WHERE id = :id", sql.Named("id", 3))
    if err != nil {
        fmt.Println(err)
        return
    }
}
Если какого-то клиента из таблицы, например, заблокировали, его можно удалить через DELETE-запрос. Для этого снова пригодится функция Exec(). Клиент с идентификатором 3 удалён из таблицы clients.

UPDATE-запрос
Code: Select all
package main

import (
    "database/sql"
    "fmt"

    _ "modernc.org/sqlite"
)

func main() {
    db, err := sql.Open("sqlite", "demo.db")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer db.Close()

    productID := 1
    price := 700
    // обновление цены у продукта с заданным идентификатором
    // цена и идентификатор передаются через параметры запроса
    _, err = db.Exec("UPDATE products SET price = :price WHERE id = :id",
        sql.Named("price", price),
        sql.Named("id", productID))
    if err != nil {
        fmt.Println(err)
        return
    }
}
Допустим, нужно поменять цену продукта с идентификатором 1 и установить новое значение 700. Для этого нужно выполнить UPDATE-запрос. Для этого подойдёт уже знакомая функция Exec().

INSERT-запрос
Code: Select all
package main

import (
    "database/sql"
    "fmt"

    _ "modernc.org/sqlite"
)

func main() {
    db, err := sql.Open("sqlite", "demo.db")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer db.Close()

    product := "Облачное хранилище"
    price := 300
    // название продукта и цена передаются через параметры
    res, err := db.Exec("INSERT INTO products (product, price) VALUES (:product, :price)",
        sql.Named("product", product),
        sql.Named("price", price))
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(res.LastInsertId())
    fmt.Println(res.RowsAffected())
}
В конце через вызов функции LastInsertId() у объекта типа sql.Result получен последний добавленный идентификатор. Это значение выводится на консоль. Помните: не все БД поддерживают эту возможность, поэтому не всегда можно получить последний добавленный идентификатор таким способом.
Image
mexan
Администратор
Reputation: 0
Posts: 179
Topics: 138

Return to GoLand

cron