PostgreSQL是一個功能強(qiáng)大的開源對象關(guān)系數(shù)據(jù)庫管理系統(tǒng)(ORDBMS)旬昭。 用于安全地存儲數(shù)據(jù); 支持最佳做法,并允許在處理請求時檢索它們舱卡。
PostgreSQL(也稱為Post-gress-Q-L)由PostgreSQL全球開發(fā)集團(tuán)(全球志愿者團(tuán)隊)開發(fā)队萤。 它不受任何公司或其他私人實體控制。 它是開源的要尔,其源代碼是免費(fèi)提供的。
PostgreSQL是跨平臺的蝴簇,可以在許多操作系統(tǒng)上運(yùn)行熬词,如Linux,F(xiàn)reeBSD歪今,OS X,Solaris和Microsoft Windows等寄猩。
下面主要講講PostgreSQL在Go語言開發(fā)中的應(yīng)用
首先創(chuàng)建相應(yīng)的數(shù)據(jù)庫和表
CREATE DATABASE medex
WITH OWNER = kekang
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'C'
LC_CTYPE = 'C'
CONNECTION LIMIT = -1;
CREATE TABLE public.student
(
uid integer NOT NULL DEFAULT nextval('student_uid_seq'::regclass),
name character(256),
sex character(5),
address character(256),
age smallint,
CONSTRAINT uid PRIMARY KEY (uid)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.student
OWNER TO kekang;
一田篇、數(shù)據(jù)庫的鏈接
db, err := sql.Open("postgres", "user=kekang password=kkwangbiao dbname=medex sslmode=disable")
二泊柬、數(shù)據(jù)庫的插入
func instertToPostgresDB(db *sql.DB) {
stmt, err := db.Prepare("INSERT INTO student(name,sex,address,age) VALUES($1,$2,$3,$4)")
_, err = stmt.Exec("zhangcheng", "F", "yuuyyuu小學(xué)", 2)
}
三、數(shù)據(jù)庫的更新
func updatePostgresDB(db *sql.DB) {
stmt, err := db.Prepare("update student set name=$1 where uid=$2")
checkErr(err)
res, err := stmt.Exec("zhangsanup", 1)
checkErr(err)
affected, err := res.RowsAffected()
checkErr(err)
fmt.Println(affected)
}
四兽赁、數(shù)據(jù)庫的查詢
func selectFromPostgresDB(db *sql.DB) {
rows, err := db.Query("select * from student")
for rows.Next() {
var uid int
var name string
var sex string
var address string
var age int
err = rows.Scan(&uid, &name, &sex, &address, &age)
checkErr(err)
fmt.Println(uid)
fmt.Println(name)
fmt.Println(sex)
fmt.Println(address)
fmt.Println(age)
}
}
五刀崖、數(shù)據(jù)庫的刪除
func deleteFromPostgresDB(db *sql.DB) {
stmt, err := db.Prepare("delete from student where uid=$1")
checkErr(err)
res, err := stmt.Exec(1)
checkErr(err)
affect, err := res.RowsAffected()
fmt.Println(affect)
}
方法中用到的自定義函數(shù)
func checkErr(err error) {
if err != nil {
panic(err)
}
}
同mySQL的比較
PostgreSQL是通過$1,$2這種方式來指定要傳遞的參數(shù)亮钦,
MySQL中通過?方式來傳遞參數(shù)授翻,
在sql.Open函數(shù)中的dsn信息的格式也與MySQL的驅(qū)動中的dsn格式不一樣