1新用戶
2SQL查询语言环境,数据类型和函数,用户角色,性能调优
3安装和服务端的管理
4客户端程序的接口
5服务端大可扩展性,包含用户自定义数据类型和函数.
6sql语句的参考信息,客户端和服务端的程序.
7Postgresql开发者需要的信息
www.postgresql.org/docs/ 9.4/interactive/tutorial-advanced.html
1.新用户
Postgresql所对象关系数据库.
有些特性:复杂查询,外键,触发器,可更新的视图,事物的完整性,多并发控制
Postgresql可以被任何没有特权的用户安装,非root帐号也能访问.
切换到posgres用户(未进入数据库中),创建数据库:
createdbdb_name
createdb(默认创建postgres数据库)
dropdbdb_name
访问数据库
psqldb_name
dbname= #selectversion();(查看版本号)
\hhelp
\qquit
\lshowdatabases
\c dbname #change current database
2.sql基本的使用
创建表
CREATETABLEweather(
cityvarchar( 80),
temp_lo int,--lowtemperature
temp_hi int,--hightemperature
prcpreal,--precipitation
datedate
);
CREATETABLEcities(
namevarchar( 80),
locationpoint
);
可以使用大数据类型有 int,smallint,real,doubleprecision,char(N),varchar(N),date,time,timestamp,andinterval等.
'--'表示后面的内容被注释掉了.
删除表
DROPTABLEtablename;
插入数据
INSERTINTOweatherVALUES( 'SanFrancisco',46,50,0.25,'1994-11-27');
INSERTINTOcitiesVALUES( 'SanFrancisco','(-194.0,53.0)');
更易读的语句
INSERTINTOweather(city,temp_lo,temp_hi,prcp,date)
VALUES( 'SanFrancisco',43,57,0.0,'1994-11-29');
插入的数据不需要使用特定的序列:
INSERTINTOweather(date,city,temp_lo)
VALUES( '1994-11-29','Hayward',54,37);
从文本框读取数据:
COPYweatherFROM '/home/user/weather.txt';
查询表
SELECT*FROMweather;
查询精准的数据列:
SELECTcity,dateFROMweather;
查询使用简单的数学表达式:
SELECTcity,(temp_hi+temp_lo)/ 2AStemp_avg,dateFROMweather;
筛选查询:
SELECT*FROMweatherWHEREcity= 'SanFrancisco'ANDprcp> 0.0;
排序查询:
SELECT*FROMweatherORDERBYcity;
多排序查询:
SELECT*FROMweatherORDERBYcity,temp_lo;
排重性查询:
SELECTDISTINCTcityFROMweather;
排重与排序查询:
SELECTDISTINCTcityFROMweatherORDERBYcity;
多表查询
SELECT*FROMweather,citiesWHEREcity=name;
精准而正确的查询语句:
SELECTweather.city,weather.temp_lo,weather.temp_hi,
weather.prcp,weather.date,cities.location
FROMweather,cities
WHEREcities.name=weather.city;
#大致等于SELECT*FROMweatherINNERJOINcitiesON(weather.city=cities.name);
INNERJOIN使用了内查询,但有时候我们更需要外查询如LEFTOUTERJOIN.
SELECT*FROMweatherLEFTOUTERJOINcitiesON(weather.city=cities.name);
#以wether表作为准则表,以cities作为辅助表,把符合条件的辅助表内容匹配到wether表中导出为结果
自连接,比如查询一个表中较小的两个数据和最大的两个数据:
SELECTW1.city,W1.temp_loASlow,W1.temp_hiAShigh,
W2.city,W2.temp_loASlow,W2.temp_hiAShigh
FROMweatherW1,weatherW2
WHEREW1.temp_lo<W2.temp_lo
ANDW1.temp_hi>W2.temp_hi;
使用别名查询:
SELECT*FROMweatherw,citiescWHEREw.city=c.name;
函数查询
SELECT max(temp_lo)FROMweather;
还有其它的函数,如avg(average),max(maximum),min(minimum)
查询最大值的数据:
SELECTcityFROMweatherWHEREtemp_lo=(SELECT max(temp_lo)FROMweather);
或者使用groupby:SELECTcity,max(temp_lo)FROMweatherGROUPBYcity;
过滤输出结果,用have函数:
SELECTcity,max(temp_lo)FROMweatherGROUPBYcityHAVING max(temp_lo)< 40;
使用like匹配内容:
SELECTcity,max(temp_lo)FROMweatherWHEREcityLIKE 'S%'( 1)GROUPBYcityHAVING max(temp_lo)< 40;
更新
UPDATEweatherSETtemp_hi=temp_hi- 2,temp_lo=temp_lo- 2WHEREdate> '1994-11-28';
删除
DELETEFROMweatherWHEREcity= 'Hayward';