引言
源代码示例src/tutorial/
1. \i命令从指定的文件中读取命令。
2. psql的-s选项为单步模式,在向服务器发送每个语句之前暂停
一个新表
1. PostgreSQL支持标准的SQL类型int、smallint、real(单精度浮点数)、double precision(双精度)、char(N)、varchar(N)、date、time、timestamp和interval
2. 还支持其他的通用功能的类型和丰富的几何类型。
3. 可定制任意数量的用户定义数据类型。因而类型名并不是语法关键字,除了SQL标准要求支持的特例外。
4. eg
INSERT INTO weather (date, city, temp_hi, temp_lo) VALUES ('1994-11-29', 'Hayward', 54, 37);
明确列出列要比依赖隐含的顺序是更好的风格
不是简单数字值的常量通常必需用单引号(')包围
5. 可以使用COPY从文本文件中装载大量数据——COPY weather FROM '/home/user/weather.txt'
表连接
1. 连接查询——一个同时访问同一个或者不同表的多个行的查询
2. 内连接——两个都存在且匹配
SELECT *
FROM weather, cities
WHERE city = name;
<=>
SELECT *
FROM weather INNER JOIN cities ON (weather.city = cities.name);
2. 外连接
SELECT *
FROM weather LEFT OUTER JOIN cities ON (weather.city = cities.name);
左外连接——连接操作符左部的表中的行在输出中至少要出现一次, 而在右部的表的行只有在能找到匹配的左部表行时才被输出。 如果输出的左部表的行没有对应匹配的右部表的行,那么右部表行的列将填充空值(null)
***left/right/full outer join ...on
3.、表的缩写标记
SELECT *
FROM weather w, cities c
WHERE w.city = c.name;
SELECT W1.city, W2.city
FROM weather W1, weather W2
WHERE W1.temp_lo < W2.temp_lo;
聚集函数
从多个输入行中计算出一个结果
1. count(计数)、sum(和)、avg(均值)、max(最大值)和min(最小值)。。。
2. GROUP BY子句组合,每个分组给个聚集结果
3. WHERE和HAVING的基本区别:
WHERE在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算)
HAVING在分组和聚集之后选取分组行。
因此,WHERE子句不能包含聚集函数; 因为试图用聚集函数判断哪些行应输入给聚集运算是没有意义的。相反,HAVING子句总是包含聚集函数(严格说来,你可以写不使用聚集的HAVING子句, 但这样做很少有用。同样的条件用在WHERE阶段会更有效)
删除
delete from tablename 删空表 !