postgres 命令行建数据库表_PostgreSQL操作-psql基本命令

本文介绍了如何通过psql命令行连接到PostgreSQL数据库,包括列出数据库、选择数据库、查看表结构等操作。此外,还展示了如何查询数据库中的表、切换数据库以及设置字符集。文章提供了常用psql命令和SQL命令,如`l`、`dt`、`c`、`d`等,并讲解了创建、删除数据库和表的方法。
摘要由CSDN通过智能技术生成

一、建立数据库连接

----------------

接入PostgreSQL数据库: psql -h IP地址 -p 端口 -U 数据库名

之后会要求输入数据库密码

二、访问数据库

1、列举数据库:\l

2、选择数据库:\c 数据库名

3、查看该某个库中的所有表:\dt

4、切换数据库:\c interface

5、查看某个库中的某个表结构:\d 表名

6、查看某个库中某个表的记录:select * from apps limit 1;

7、显示字符集:\encoding

8、退出psgl:\q

==================================================================================

列出当前数据库所有表

\dt

列出表名

SELECT tablename FROM pg_tables;

WHERE tablename NOT LIKE 'pg%'

AND tablename NOT LIKE 'sql_%'

ORDER BY tablename;

列出数据库名

\l

SELECT datname FROM pg_database;

切换数据库

\c 数据库名

1、通过命令行查询

\d 数据库 —— 得到所有表的名字

\d 表名 —— 得到表结构

2、通过SQL语句查询

"select * from pg_tables" —— 得到当前db中所有表的信息(这里pg_tables是系统视图)

"select tablename from pg_tables where schemaname='public'" —— 得到所有用户自定义表的名字(这里"tablename"字段是表的名字,"schemaname"是schema的名字。用户自定义的表,如果未经特殊处理,默认都是放在名为public的schema下)

General

\copyright show PostgreSQL usage and distribution terms

\g [FILE] or ; execute query (and send results to file or|pipe)

\h [NAME] help on syntax of SQL commands,* forall commands

\q quit psql

Query Buffer

\e [FILE] [LINE] edit the query buffer (or file) with external editor

\ef [FUNCNAME [LINE]] edit function definition with external editor

\p show the contents of the query buffer

\r reset (clear) the query buffer

\s [FILE] display history or save it to file

\w FILE write query buffer to file

Input/Output

\copy ... perform SQL COPY with data stream to the client host

\echo [STRING] writestringto standard output

\i FILE execute commandsfromfile

\o [FILE] send all query results to file or|pipe

\qecho [STRING] writestringto query output stream (see \o)

Informational

(options: S= show system objects, + =additional detail)

\d[S+] list tables, views, and sequences

\d[S+] NAME describe table, view, sequence, or index

\da[S] [PATTERN] list aggregates

\db[+] [PATTERN] list tablespaces

\dc[S] [PATTERN] list conversions

\dC [PATTERN] list casts

\dd[S] [PATTERN] show comments on objects

\ddp [PATTERN] listdefaultprivileges

\dD[S] [PATTERN] list domains

\det[+] [PATTERN] list foreign tables

\des[+] [PATTERN] list foreign servers

\deu[+] [PATTERN] list user mappings

\dew[+] [PATTERN] list foreign-data wrappers

\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions

\dF[+] [PATTERN] list text search configurations

\dFd[+] [PATTERN] list text search dictionaries

\dFp[+] [PATTERN] list text search parsers

\dFt[+] [PATTERN] list text search templates

\dg[+] [PATTERN] list roles

\di[S+] [PATTERN] list indexes

\dl list large objects, sameas\lo_list

\dL[S+] [PATTERN] list procedural languages

\dn[S+] [PATTERN] list schemas

\do[S] [PATTERN] list operators

\dO[S+] [PATTERN] list collations

\dp [PATTERN] list table, view, and sequence access privileges

\drds [PATRN1 [PATRN2]] list per-database role settings

\ds[S+] [PATTERN] list sequences

\dt[S+] [PATTERN] list tables

\dT[S+] [PATTERN] list data types

\du[+] [PATTERN] list roles

\dv[S+] [PATTERN] list views

\dE[S+] [PATTERN] list foreign tables

\dx[+] [PATTERN] list extensions

\l[+] list all databases

\sf[+] FUNCNAME show a function's definition

\z [PATTERN] same as\dp

Formatting

\a toggle between unaligned and aligned output mode

\C [STRING]set table title, or unset ifnone

\f [STRING] show orset field separator forunaligned query output

\H toggle HTML output mode (currently off)

\pset NAME [VALUE]settable output option

(NAME := {format|border|expanded|fieldsep|footer|null|numericlocale|recordsep|tuples_only|title|tableattr|pager})

\t [on|off] show only rows (currently off)

\T [STRING]set HTML

\x [on|off] toggle expanded output (currently off)

Connection

\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] |conninfo}

connect tonew database (currently "postgres")

\encoding [ENCODING] show orsetclient encoding

\password [USERNAME] securely change the passwordfora user

\conninfo display information about current connection

Operating System

\cd [DIR] change the current working directory

\timing [on|off] toggle timing of commands (currently off)

\! [COMMAND] execute command inshell or start interactive shell

Variables

\prompt [TEXT] NAME prompt user toset internalvariable

\set [NAME [VALUE]] set internal variable, or list all ifno parameters

\unset NAME unset (delete)internalvariable

Large Objects

\lo_export LOBOID FILE

\lo_import FILE [COMMENT]

\lo_list

\lo_unlink LOBOID largeobject operations

View Code

==================================================================================

postgresql数据管理系统使用命令方式有两种:

1. 内部命令,以反斜线开始 \ ,如: \l 显示所有数据库

2. 标准SQL命令,以分号 ; 或 \g 结束,可以使用多行

数据库的关键操作:

1. 启动服务  2. 登录  3. 建立数据库  4. 建立表  5. 插入记录到表中

6. 更新/删除/查询/修改操作           7. 退出    8. 停止服务

在windows7中安装的postgresql默认使用GBK字符集,经常不能使用显示中文的数据表,解决办法:

注意:在windows 7下的postgresql中写操作时要使用GBK,读操作时要用UTF8;

设置字符集为 utf-8 就可以了.

postgres=# \encoding utf-8       // 设置客户端的字元集

postgres=# \encoding                  // 显示客户端的字元集

postgres=# show client_encoding;      // 显示客户端的字元集

postgres=# show server_encoding;      // 显示服务器的字元集

启动服务:

net start postgresql-9.5

停止服务:

net stop postgresql-9.5

获取命令帮助:

c:\> psql --help

登录( 注意: postgres 是默认用户即管理员 ):

路径 psql -h 服务器 -U 用户名  -d 数据库 -p 端口地址  // -U 是大写

C:\> psql -h localhost -U postgres -p 5432            // 默认打开postgres数据库

C:\> psql -h 127.0.0.1 -U postgres -d fengdos -p 5432 // 打开fengdos数据库

C:\> psql -U postgres                                 // 快速登录(全部使用默认设置)

// 使用某些有密码的用户的情况下, 会提示输入密码.

用户 postgres 的口令: ILoveYou         // 输入时不会显示任何字符

// 成功后显示:

psql (9.5.3)

输入 "help" 来获取帮助信息.

// 进入postgresql数据库系统提示符状态, ******=# 中=#前面为当前使用的数据库

postgres=# help          // 获取系统帮助,显示如下:

---------------------------------------------------------

您正在使用psql, 这是一种用于访问PostgreSQL的命令行界面

键入:\copyright 显示发行条款

\h 显示 SQL 命令的说明

\? 显示 pgsql 命令的说明 (pgsql内部命令)

\g 或者以分号(;)结尾以执行查询

\q 退出注: 数据库名称区分大小写的。

---------------------------------------------------------

postgres=# \help         // 获取SQL命令的帮助,同 \h

postgres=# \quit         // 退出,同 \q

postgres=# \password dlf // 重新设置用户dlf的密码,然后需要 \q退出后才生效

c:\>psql exampledb < user.sql  // 将user.sql文件导入到exampled数据库中

postgres=# \h select   // 精细显示SQL命令中的select命令的使用方法

postgres=# \l          // 显示所有数据库

postgres=# \dt         // 显示当前数据库中的所有表

postgres=# \d [table_name]  // 显示当前数据库的指定表的表结构

postgres=# \c [database_name]  // 切换到指定数据库,相当于use

postgres=# \du                 // 显示所有用户

postgres=# \conninfo           // 显示当前数据库和连接信息

postgres=# \e   // 进入记事本sql脚本编辑状态(输入批命令后关闭将自动在命令行中执行)

postgres=# \di  // 查看索引(要建立关联)

postgres=# \prompt [文本] 名称    // 提示用户设定内部变数

postgres=# \encoding [字元编码名称]  // 显示或设定用户端字元编码

*可以将存储过程写在文本文件中aaa.sql,然后在psql状态下:

postgres=# \i aaa.sql    // 将aaa.sql导入(到当前数据库)

postgres=# \df           // 查看所有存储过程(函数)

postgres=# \df+ name     // 查看某一存储过程

postgres=# select version();            // 获取版本信息

postgres=# select usename from pg_user; // 获取系统用户信息

postgres=# drop User 用户名             // 删除用户

其它SQL命令通用如(标准化SQL语句):

*创建数据库:

create database [数据库名];

*删除数据库:

drop database [数据库名];

*创建表:

create table ([字段名1] [类型1] ;,[字段名2] [类型2],......;);

*在表中插入数据:

insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);

*显示表内容:

select * from student;

*重命名一个表:

alter table [表名A] rename to [表名B];

*删除一个表:

drop table [表名];

*在已有的表里添加字段:

alter table [表名] add column [字段名] [类型];

*删除表中的字段:

alter table [表名] drop column [字段名];

*重命名一个字段:

alter table [表名] rename column [字段名A] to [字段名B];

*给一个字段设置缺省值:

alter table [表名] alter column [字段名] set default [新的默认值];

*去除缺省值:

alter table [表名] alter column [字段名] drop default;

*修改表中的某行某列的数据:

update [表名] set [目标字段名]=[目标值] where [该行特征];

*删除表中某行数据:

delete from [表名] where [该行特征];

delete from [表名];    // 删空整个表

*可以使用pg_dump和pg_dumpall来完成。比如备份sales数据库:

pg_dump drupal>/opt/Postgresql/backup/1.bak

===================================================================================================

1.列出所有表名的查询语句

SELECT tablename FROM pg_tables

WHERE tablename NOT

LIKE 'pg%'

AND

tablename NOT

LIKE 'sql_%'

ORDER BY tablename;

2.列出表中所有的数据

SELECT *

FROM someTable;

3.执行外部脚本

#/opt/PostgreSQL/8.

3/bin/psql -

Upostgres ;登陆到数据库的控制台界面

postgres=

#

\i /root/db.

sql

\i 命令用于执行一个外部的sql脚本文件。

4.导出数据库为外部的脚本

#/opt/PostgreSQL/8.

3/bin/

pg_dump -

Upostgres -

C -

fdb.

sql database

-C create    -f 是导出后的文件名

5.postgresql 插入16进制数

INSERT INTO

tableAAA VALUES(

x'0001f'

:

:

integer,

'鉴权'

,

'Authority'

)

6.使用 TG_RELNAME 报错ERROR:  syntax error at or near "$1" at character

[引]http://www.dbmonster.com/Uwe/Forum.aspx/postgresql/2051/TG-RELNAME-problem

Perhaps you will get some idea if

you read the document:

37.

6.

4.

Executing Dynamic Commands

改:执行动态语句

EXECUTE 'INSERT INTO TG_RELNAME VALUES (NEW.start_time , NEW.id , NEW.end_time)';

7. psql 常用命令

a.

\c tesdb1 -

-

将当前连接的testdb数据库改变成 testdb1 。

b

.

\q -

-

断开与Postgres服务器的连接

c

.

\l 列出所有数据库的名字

\l+

列出所有数据库的名字以及字符集编码

d.

\d [

名字]

描述表,

索引,

序列,

或者视图

列出表/索引/序列/视图/系统表

\d{t|

i|

s|

v|

S} [

模式]

(

加 "+"

获取更多信息)

-

-

列出表/索引/序列/视图/系统表

\d tablename -

-

查看表的结构

\dt -

-

列出数据库中所有表

8.在PostgreSQL中如何删除重复记录

在PostgreSQL中删除重复记录其实很简单,不论有多少行重复,只要在要删除重复记录的表中table加一列rownum字段(

id为table表中的主键)

,类型设置为serial类型即可,然后执行sql

delete from deltest where rownum not in(

select max(rownum) from deltest

);

最后删除列rownum即可

==============================================

正文:

连接数据库操作:

psql是postgresql数据库提供的连接数据库shell命令,格式 psql 【option】 dbname

在终端输入psql 会使用默认的方式连接本地数据库,使用的用户名是登陆linux系统使用的用户名,

psql -U username -W pass 以及psql -U username -W pass databasenaem都可以实现连接数据库的功能,第一种方式是使用用户名username密码pass连接默认数据库(具体链接那个数据库还没搞清 楚),第二种方式使用用户名username密码pass连接username数据库。如果登录成功之后将显示类似信息

Welcome to psql 8.0.6, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms

\h for help with SQL commands

\? for help with psql commands

\g or terminate with semicolon to execute query

\q to quit

连接成功之后所有的命令都是使用”\“+ 字符或者word完成相应的功能。现将常用的几个列车

\l      列出所有数据库

\dt   列出连接数据库中所有表

\di   列出连接数据库中所有index

\dv  列出连接数据库中所有view

\h    sql命令帮助

\?    \ 所有命令帮助

\q   退出连接

\d tablename  列出指定tablename的表结构

可以尝试执行下面两句sql

SELECT current_date

SELECT version()

是不是nothing happened,这是因为postgresql数据库要求必须使用;结尾否则不予执行,加上;之后就能看到结果了。

如果我们想创建数据库怎么办呢?

我们知道createdb和dropdb可以创建和删除数据库,但是如果我们这个时候执行出现什么问题呢?可以试一试,提示是个错误。

为什么呢?

createdb和dropdb是shell脚本,所以现在又两种方式执行

(1).退出连接进入终端,输入createdb test —U user -W pass 稍等提示创建数据库成功

dropdb test —U user -W pass    提示drop成功

(2).在未退出连接中使用 \! createdb test —U user -W pass 稍等提示创建数据库成功

\! dropdb test —U user -W pass    提示drop成功

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值