PostgreSQL数据库Dig3

来源:互联网 发布:浩方魔兽不能连入网络 编辑:程序博客网 时间:2024/06/05 19:17

1. 创建一个数据库并且连接到指定数据库

[postgres@localhost ~]$ createdb lockey[postgres@localhost ~]$ psql lockey

这里写图片描述

note:
1.1 如果创建数据库的过程中出现以下问题:

createdb: command not found

愿意要么就是PostgreSQL数据库没有正常安装,要么就是没有安装,尝试使用绝对路径取执行命令:

$ /usr/local/pgsql/bin/createdb mydb

1.2 问题如果类似以下:

createdb: could not connect to database postgres: could not connect to server: No such fileIs the server running locally and acceptingconnections on Unix domain socket "/tmp/.s.PGSQL.5432"?

这意味着你的数据库服务没有启动或者没有在期望位置启动,请联系数据库管理员解决
1.3 如果问题如下:

createdb: could not connect to database postgres: FATAL:role "joe" does not exist

如果数据库管理员没有为你创建一个数据库的管理帐号,那么这个问题就会出现 (PostgreSQL用户账户和系统账户不同)

2. The SQL Language

本主题下将简单介绍一下基本的SQL操作语句
2.1 引入
在接下来的部分示例中,假设我们已经正确安装并且可以启动数据库服务,且创建了一个名为mydb的数据库,在数据库中建立了两个数据表如下:

CREATE TABLE weather (        city            varchar(80),        temp_lo         int,            -- low temperature        temp_hi         int,            -- high temperature        prcp            real,           -- precipitation        date            date);CREATE TABLE cities (        name            varchar(80),        location        point);

此内容示例可以在PostgreSQL源码目录src/tutorial/(二进制的PostgreSQL发布版可能没有编译过这些文件)下找到。为了使用这些文件,你需要首先进入这个目录然后执行make

$find / -name *tutorial*

#如果不知道这个目录在哪里可以首先查找定位一下

$ cd .... /src/tutorial$ make

以上命令将创建脚本并且编译包含用户定义函数和类型的C语言文件接下来:

$ cd .... /tutorial$ psql -s mydb...mydb= > \i basics.sql

这里写图片描述

注意:\i命令从指定的文件中读取命令, psql 的 -s 使得你可以进入单步执行模式

2.2 创建数据表(Creating a New Table)
我们可以通过指定表名和列名以及列的类型来创建一个新的数据表,示例如下(\d 可以用来显示数据表):

CREATE TABLE weather (    city varchar(80),    temp_lo int,    temp_hi int,    prcp real,    date date);

这里写图片描述

PostgreSQL支持标准的SQL类型:int , smallint , real , double precision ,char( N ) , varchar( N ) , date , time , timestamp , and interval以及其他一些类型。

2.3 数据的插入

INSERT语句用来向数据库中插入数据行
如果说你对于数据库中数据的插入顺序非常清楚,那么你可以使用以下精简的插入命令

INSERT INTO TABLE VALUES(item1, item2, ...);

如下例:

INSERT INTO weather VALUES (’San Francisco’, 46, 50, 0.25, ’1994-11-27’);

如果说你没有记住字段的顺序或者说你为了避免记忆失误导致插入失败,一般情况下可以使用以下的命令格式将字段与插入的值进行对应:

INSERT INTO TABLE (field1, field2,...) VALUES(item1, item2, ...);

如下例:

INSERT INTO weather (city, temp_lo, temp_hi, prcp, date)VALUES (’San Francisco’, 43, 57, 0.0, ’1994-11-29’);

这里写图片描述
2.4 数据表查询(Querying a Table)

完全或整体查询命令:

SELECT * FROM TABLE;

在这里*代表着“all columns”
我们也可以使用表达式来进行过滤查询,然后对结果计算重新贴标签(AS 从句是用来将输出结果定义为指定的标签,它是可选项):

SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather;

我们也可以使用WHERE定语来对查询条件进行指定,常用WHERE的表达式可以使用以下操作符( AND , OR , and NOT )以及一些数学符号:

SELECT * FROM weather WHERE city = ’San Francisco’ AND prcp > 0.0;

我们也是以对查询结果根据特定字段进行排序输出

SELECT * FROM weather ORDER BY city;

这里写图片描述
2.5 数据更新(Updates)
UPDATE命令的一般用法格式:

UPDATE TABLE SET filed=value WHERE...#注意WHERE从句是可选的

示例如下,修改日期大于’1994-11-28’的天气的最好温度为原最高温度加2

UPDATE weatherSET temp_hi = temp_hi - 2,WHERE date > ’1994-11-28’;

这里写图片描述
2.6 数据删除(Deletions)

一般删除命令的安全格式为:

DELETE FROM TABLE WHERE...;

示例如下,删除城市名字为’Hayward’的天气数据:

DELETE FROM weather WHERE city = ’Hayward’;

这里写图片描述
请谨慎执行以下命令!!!

DELETE FROM tablename ;

没有条件指明的话会删除给定表中的所有数据,然而系统不会给出询问确认提示,所以千万小心执行。

2.7 表连接(Joins Between Tables)

到目前为止我们都只是对单表进行查询,我们也可以进行多表查询,这叫做连接查询(join query)。
比如说我们要将weather记录和城市对应:

SELECT *FROM weather, citiesWHERE city = name;

上边的查询也可以写成这样(内连接,虽然很少使用):

SELECT * FROM weather INNER JOIN cities ON (weather.city = cities.name);

上面的查询对于没有匹配结果的数据会被忽略掉,所以就有了以下连接操作(右内连接left outer join):

SELECT * FROM weather LEFT OUTER JOIN cities ON (weather.city = cities.name);

这里写图片描述
2.8 求和函数(Aggregate Functions)
和其他许多关系数据库产品一样, PostgreSQL也支持求和函数,如:sum , avg (average), max (maximum) and min (minimum)
示例如下:

SELECT max(temp_lo) FROM weather;SELECT city FROM weather WHERE temp_lo = (SELECT max(temp_lo) FROM weather);

这里写图片描述

原创粉丝点击