【PostgreSQL】通过docker的方式运行部署PostgreSQL与go操作数据库

目录

1、docker的方式运行部署PostgreSQL

 2、控制台命令

3、go操作增删改查


1、docker的方式运行部署PostgreSQL

docker pull postgres
docker run --name learn_postgres -e POSTGRES_PASSWORD=docker_user -e POSTGRES_USER=docker_user -p 5433:5432 -d postgres

 进入容器:

docker exec -it a1adf294c991 bash

 进入数据库:

docker exec -ti a1adf294c991 psql -U docker_user 

CREATE TABLE user(name VARCHAR(20), create_date DATE);

 2、控制台命令

\h:查看SQL命令的解释,比如\h select。
\?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\conninfo:列出当前数据库和连接的信息。
# 创建新表
CREATE TABLE user(name VARCHAR(20), create_date DATE);

# 插入数据
INSERT INTO user(name, create_date ) VALUES('张三', '2922-07-27');

# 选择记录
SELECT * FROM user;

# 更新数据
UPDATE userset name = '李四' WHERE name = '张三';

# 删除记录
DELETE FROM user WHERE name = '李四' ;

# 添加栏位
ALTER TABLE user ADD email VARCHAR(40);

# 更新结构
ALTER TABLE user ALTER COLUMN create_date SET NOT NULL;

# 更名栏位
ALTER TABLE user RENAME COLUMN create_date TO update_time;

# 删除栏位
ALTER TABLE user DROP COLUMN email;

# 表格更名
ALTER TABLE user RENAME TO user_rename;

# 删除表
DROP TABLE IF EXISTS user_rename;

3、go操作增删改查

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/lib/pq"
)

var db *sql.DB

func main() {
	var err error
	//参数根据自己的数据库进行修改
	db, err = sql.Open("postgres", "host=localhost port=5432 user=docker_user password=docker_user dbname=docker_user sslmode=disable")
	defer db.Close()

	checkErr(err)

	// insert("宋", "2022-08-01")

	//query()

	//delete()

	revise()

}

// 核对错误
func checkErr(err error) {
	if err != nil {
		fmt.Println(err)
	}
}

// 插入数据
func insert(arg1 string, arg2 string) {
	//插入数据
	stmt, err := db.Prepare("INSERT INTO test(name, create_date ) VALUES($1, $2)")
	checkErr(err)

	res, err := stmt.Exec(arg1, arg2)
	checkErr(err)

	id, err := res.RowsAffected()
	checkErr(err)
	fmt.Println(id)
}

// 查询接口
func query() {
	rows, err := db.Query("SELECT * FROM PUBLIC.test")
	checkErr(err)
	for rows.Next() {
		var name string
		var create_date string
		err = rows.Scan(&name, &create_date)
		checkErr(err)
		fmt.Printf("%s  %s\n", name, create_date)
	}

}

// 删除数据
func delete() {
	//删除数据
	stmt, err := db.Prepare("DELETE FROM PUBLIC.test where name=$1")
	checkErr(err)
	res, err := stmt.Exec("宋")
	checkErr(err)

	affect, err := res.RowsAffected()

	fmt.Println(affect)
}

// 修改数据
func revise() {
	stmt, err := db.Prepare("UPDATE  PUBLIC.test set name=$1 where create_date=$2")
	checkErr(err)

	res, err := stmt.Exec("张", "2922-07-27")
	checkErr(err)

	affect, err := res.RowsAffected()
	checkErr(err)

	fmt.Println(affect)
}

猜你喜欢

转载自blog.csdn.net/fanjufei123456/article/details/130055662
今日推荐