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