PG 基本使用!

一次PostgreSQL会话过程:
  1,一个服务器进程,它管理数据库文件,接受来自客户端应用与数据库的连接,并且代表客户端在数据库上执行操作,客户端通过程序发布命令,服务器进行数据库操作
  2, 客户端应用(不一定在本机之上!),通过 TCP/IP 网络连接通讯
  3,PostgreSQL服务器可以处理来自客户端的多个并发连接。 因此,它为每个连接启动("forks")一个新的进程
  4,你需要变成安装PostgreSQL的操作系统用户的身份(通常是 postgres)才能创建用户帐号。 也有可能是赋予你的PostgreSQL用户名和你的操作系统用户名不同,你需要使用-U选项或者使用PGUSER环境变量指定你的PostgreSQL用户名
5,通常我们会为每个项目和每个用户单独使用一个数据库。
PostgreSQL 用户名与 操作系统用户名的区别
  1,PostgreSQL用户名 是和操作系统用户账号分开的。
  2,如果你与一个数据库连接,你可以指定以哪个 PostgreSQL用户名进行连接;如果你不指定,那么缺省 就是你当前的操作系统账号。
  3,如果你不想以该用户身份登陆,那么你也可以在任何地方(通过shell)声明一个-U选项来选择一个连接时使用的PostgreSQL用户名。创建用户(你完全可以在一个用户之下创建多个数据库),并且赋予权限!
-- 当下载 postgres 的时候,就会创建一个linux 用户,此用户是 postgres的超级用户
--默认生成一个名为postgres的数据库和一个名为postgres的数据库用户
sudo su - postgres
-- 为 sxu 创建一个用户!
create user sxu with password 'x'
--增加一个linux 用户 sxu
sudo adduser sxu
--将所有的权限都赋予linux用户 sxu ,并且为其创建一个数据库 名字叫做 mydb
grant all privileges on database mydb to sxu
\q
exit

--切换到linux su用户 
sudo su - sxu
--切换到 mydb 数据库
psql mydb


-- 远程登录数据库
psql -U sxu -d mydb -h 127.0.0.1 -p 5432
-- 当下载 postgres 的时候,就会创建一个linux 用户,此用户是 postgres的超级用户
--默认生成一个名为postgres的数据库和一个名为postgres的数据库用户
sudo su - postgres

切换成 postgres
psql postgres

--  创建一个用户 sxu !
create user sxu with password 'x'

# 新建数据库 mydb
CREATE DATABASE mydb;

--对于 mydb 将所有的权限都赋予 sxu
grant all privileges on database mydb to sxu

\q
exit

-- 远程登录数据库
psql -U sxu -d mydb -h 127.0.0.1 -p 5432
常见的 postgres 操作!
--切换到 postgres 用户
sudo su postgres
--查看 pg 版本
psql --version
--查看有多少数据库
psql -l
--创建数据库 mydb
createdb mydb
--切换到 mydb 数据库
psql mydb
--查看有多少表(进入某个数据库之后)
psql -l
-- 删除数据库
dropdb mydb;
-- 创建表 post
create table post(title varchar(225),content text);
-- 查看当前数据库的信息
\dt
-- 查看 post 表的字段信息
\d post
--更改表的名称
alter table post rename to  posts;
-- 删除post表
drop table post;

-- 创建表 test1
create CREATE TABLE test1 (id integer,content varchar);
-- 插入表 数据
INSERT INTO test1 values(1,1);
--更新表数据
update test1 set content='a',id =4 where id=1;
-- 删除表数据
DELETE FROM test1  WHERE id = 1;

--创建 sql文件
nano db.sql
--文件书写以下内容
create table post(title varchar(225),content text);
--check() 自定义类型
create table post(id serial primary key,title varchar(233) not null,content text check(length(content)>3),is_draft boolean default TRUE,is_del boolean default FALSE)
--ctrl + x 退出
--进入mydb
--执行sql 文件保存的语句
\i db.sql
两个复杂查询
--完全可以在选择列表之中使用函数
select city,(temp_hi+temp_lo)/2 as temp_avg from weather;

--自连接查询!选择列表的重命名,与表的重新命名(可以省略 as)
select W1.city, W1.temp_lo AS low, W1.temp_hi AS high,
    W2.city, W2.temp_lo AS low, W2.temp_hi AS high
    from weather as W1, weather W2
    where W1.temp_lo < W2.temp_lo
    and W1.temp_hi > W2.temp_hi;

 

posted @ 2018-08-26 23:09  十七楼的羊  阅读(763)  评论(0编辑  收藏  举报