[PostgreSQL] Run and deploy PostgreSQL and go to operate the database through docker

Table of contents

1. Run and deploy PostgreSQL in docker mode

 2. Console command

3. Go operation addition, deletion, modification and query


1. Run and deploy PostgreSQL in docker mode

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

 into the container:

docker exec -it a1adf294c991 bash

 Enter the database:

docker exec -ti a1adf294c991 psql -U docker_user 

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

 2. Console command

\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 operation addition, deletion, modification and query

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)
}

Guess you like

Origin blog.csdn.net/fanjufei123456/article/details/130055662