PostgreSQL⼊门教程(命令⾏)
初次安装完成后
1.默认⽣成⼀个名为postgres的数据库
2.⼀个名为postgres的数据库⽤户
3.这⾥需要注意的是,同时还⽣成了⼀个名为postgres的Linux系统⽤户。
下⾯,我们使⽤postgres⽤户,来⽣成其他⽤户和新数据库。好⼏种⽅法可以达到这个⽬的,这⾥介绍两种。
第⼀种⽅法:使⽤PostgreSQL控制台
⾸先,新建⼀个Linux新⽤户,可以取你想要的名字,这⾥为dbuser。
sudo adduser dbuser
然后,切换到postgres⽤户。
sudo su - postgres
下⼀步,使⽤psql命令登录PostgreSQL控制台
psql
这时相当于系统⽤户postgres以同名数据库⽤户的⾝份,登录数据库,这是不⽤输⼊密码的。如果⼀切正常,系统提⽰符会变
为”postgres=#”,表⽰这时已经进⼊了数据库控制台。以下的命令都在控制台内完成。
第⼀件事是使⽤\password命令,为postgres⽤户设置⼀个密码。
\password postgres
第⼆件事是创建数据库⽤户dbuser(刚才创建的是Linux系统⽤户),并设置密码。
CREATE USER dbuser WITH PASSWORD 'password';
第三件事是创建⽤户数据库,这⾥为exampledb,并指定所有者为dbuser。
CREATE DATABASE exampledb OWNER dbuser;
第四件事是将exampledb数据库的所有权限都赋予dbuser,否则dbuser只能登录控制台,没有任何数据库操作权限。
GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;
最后,使⽤\q命令退出控制台(也可以直接按ctrl+D)。
\q
第⼆种⽅法,使⽤shell命令⾏。
添加新⽤户和新数据库,除了在PostgreSQL控制台内,还可以在shell命令⾏下完成。这是因为PostgreSQL提供了命令⾏程序createuser和createdb。还是以新建⽤户dbuser和数据库exampledb为例。
⾸先,创建数据库⽤户dbuser,并指定其为超级⽤户。
sudo -u postgres createuser --superuser dbuser
然后,登录数据库控制台,设置dbuser⽤户的密码,完成后退出控制台。
sudo -u postgres psql
\password dbuser
\q
接着,在shell命令⾏下,创建数据库exampledb,并指定所有者为dbuser。
sudo -u postgres createdb -O dbuser exampledb
登录数据库
添加新⽤户和新数据库以后,就要以新⽤户的名义登录数据库,这时使⽤的是psql命令
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432
上⾯命令的参数含义如下:
-U指定⽤户,
-d指定数据库,
-
h指定服务器,
-p指定端⼝。
输⼊上⾯命令以后,系统会提⽰输⼊dbuser⽤户的密码。输⼊正确,就可以登录控制台了。
psql命令存在简写形式:
如果当前Linux系统⽤户,同时也是PostgreSQL⽤户,则可以省略⽤户名(-U参数的部分)。举例来说,我的 Linux系统⽤户名为ruanyf,且PostgreSQL数据库存在同名⽤户,则我以ruanyf⾝份登录Linux系统后,可以直接使⽤下⾯的命令登录数据库,且不需要密码。
psql exampledb
此时,如果PostgreSQL内部还存在与当前系统⽤户同名的数据库,则连数据库名都可以省略。⽐如,假定存在⼀个叫做ruanyf的数据库,则直接键⼊psql就可以登录该数据库。
psql
另外,如果要恢复外部数据,可以使⽤下⾯的命令。
psql exampledb < exampledb.sql
控制台命令
除了前⾯已经⽤到的\password命令(设置密码)和\q命令(退出)以外,控制台还提供⼀系列其他命令。
\h:查看SQL命令的解释,⽐如\h select。
\?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。postgre trunc函数的使用方法
\d [table_name]:列出某⼀张表格的结构。
\du:列出所有⽤户。
\e:打开⽂本编辑器。
\conninfo:列出当前数据库和连接的信息。
基本的数据库操作,就是使⽤⼀般的SQL语⾔:
# 创建新表
CREATE TABLE usertbl(name VARCHAR(20), signupdate DATE);
# 插⼊数据
INSERT INTO usertbl(name, signupdate) VALUES('张三', '2013-12-22'); # 选择记录
SELECT * FROM user_tbl;
# 更新数据
UPDATE user_tbl set name = '李四' WHERE name = '张三';
# 删除记录
DELETE FROM user_tbl WHERE name = '李四' ;
# 添加栏位
ALTER TABLE user_tbl ADD email VARCHAR(40);
# 更新结构
ALTER TABLE usertbl ALTER COLUMN signupdate SET NOT NULL; # 更名栏位
ALTER TABLE usertbl RENAME COLUMN signupdate TO signup;
# 删除栏位
ALTER TABLE user_tbl DROP COLUMN email;
# 表格更名
ALTER TABLE usertbl RENAME TO backuptbl;
# 删除表格
DROP TABLE IF EXISTS backup_tbl;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。