PostgreSQL 基本语法小结

前端之家收集整理的这篇文章主要介绍了PostgreSQL 基本语法小结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Postgresql 8.0.0
1.创建新表
CREATE TABLE weather (
cityvarchar(80),
temp_loint,-- 最低气温
temp_hiint,-- 最高气温
prcpreal,-- 降水量
datedate
);

注:1).在 sql 命令中自由使用空白(也就是空格,tab,和换行符)。

2).两个划线("--") 引入注释。任何跟在它后面的东西直到该行的结尾都被忽略。

3).sql是对关键字和标识符大小写不敏感的语言,只有在标识符用双引号包围时
才能保留它们的大小写属性

4).类型名并不是语法关键字

CREATE TABLE cities (
namevarchar(80),
locationpoint
);

注:类型 point 就是一种 Postgresql 特有数据类型的例子。

2.删除已有表:DROP TABLE tablename;

3.向表中添加

INSERT 用于向表中添加行:

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

注:1).不是简单数字值的常量必须用单引号('')包围。

2).point类型要求一个坐标对作为输入,如下:

INSERTINTO cities VALUES ('San Francisco','(-194.0,53.0)');

3).明确列出字段而不用依赖隐含的顺序是更好的风格。

4.查询一个表

SELECT * FROM weather; --*是"所有字段" 的缩写。

SELECT city,temp_lo,temp_hi,prcp,date FROMweather;--与上面一句的查
询结果相同。

注:1).可以在选择列表中写任意表达式,而不仅仅是字段列表。比如:

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

2).AS子句是如何给输出字段重新命名的。(AS 子句是可选的。)

3).输出结果为:

city| temp_avg |date
---------------+----------+------------
San Francisco|48 | 1994-11-27
San Francisco|50 | 1994-11-29
Hayward|45 | 1994-11-29
(3 rows)

4).一个查询可以使用 WHERE 子句"修饰",声明需要哪些行。

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

5).要求返回的查询是排好序的:SELECT * FROM weather ORDER BY city;

6).要求查询的结果按照某种顺序排序, 并且消除重复的行输出

SELECT DISTINCT city FROM weather;

7). DISTINCT 和 ORDER BY 可以组合使用来获取一致的结果。

5.在表之间连接

查询可以一次访问多个表,或者用某种方式访问一个表,而同时处理该表的多个行。一个同时访问同一个或者不同表的多个行的查询叫连接(join)查询

SELECT * FROM weather,cities WHERE city = name;

city| temp_lo | temp_hi | prcp|date|name| location
---------------+---------+---------+------+------------+---------------+-----------
San Francisco|46|50 | 0.25 | 1994-11-27 | San Francisco | (-194,53)
San Francisco|43|57 | 0 |1994-11-29 | San Francisco | (-194,53)
(2 rows)


观察结果集的两个方面:

注:1).没有城市Hayward的结果行。这是因为在 cities 表里面没有 Hayward的匹配行,所以连

接忽略weather表里的不匹配行。我们稍后将看到如何修补这个毛病。

2).有两个字段包含城市名字。这是正确的, 因为 weather 和 cities表的字段是接在一

起的。不过,实际上我们不想要这些, 因此你将可能希望明确列出输出字段而不是使用 *

SELECT city,date,location FROM weather,cities
WHERE city = name;

3).在连接查询里使用字段全称是很好的风格:

SELECTweather.city,weather.temp_lo,weather.temp_hi,weather.prcp,weather.date,cities.location
FROMweather,cities
WHEREcities.name = weather.city;

4).到目前为止,这种类型的连接查询也可以用下面这样的形式写出来:

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

5).将看看如何能把Hayward记录找回来。 我们想让查询干的事是扫描 weather 表, 并且

对每一行都找出匹配的 cities 表里面的行。 如果我们没有找到匹配的行,那么我们需要

一些"空值"代替cities表的字段。 这种类型的查询叫外连接。 (我们在此之前看到的连接

都是内部连接。)这样的命令看起来象这样:

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

city| temp_lo | temp_hi | prcp|date|name| location ---------------+---------+---------+------+------------+---------------+----------- Hayward|37|54|| 1994-11-29|| San Francisco|46|50 | 0.25 | 1994-11-27 | San Francisco | (-194,53) San Francisco|43|57 | 0 |1994-11-29 | San Francisco | (-194,53) (3 rows)

原文链接:https://www.f2er.com/postgresql/195827.html

猜你在找的Postgre SQL相关文章