1-Install and use
Peer authention problem: 将配置文件里面的postgre peer改为posgres trust
2-Postgresql command
- 创建用户: createuser myusername/CREATE USER myusername WITH PASSWORD 'mypassword'
sudo -u postgres createuser myusername
- 创建数据库: createdb mydbname
sudo -u postgres createdb testdb -O myusername
- 操作: psql里面
3-Postgresql SQL
-
Basic Knowledge
1.语句的结束符:";"
2.注释:-- : 行注释
/* */: 块注释,和C语言注释不同的是,可以嵌套。
3.关键字和标识符都是非大小写敏感的,但是惯例是将关键字大写,而其他名字用小写
4.在SQL语句标准中,$标志符是不被允许出现在标识符中
5.字符串常量使用', 要想在字符串常量中带有',可以通过使用两个连续的'实现。如:'Dianne''s horse'
6.两个字符串常量当通过空格分开时,如果两者之间至少有一个换行符,则认为它们是相连的。下面两个写法是等价的。
SELECT 'foobar'
而如下的写法是错误:
SELECT 'foo' 'bar'
2.The Common Data Type
smallint: 16位带符号整数
integer: 32位的带符号整数
bigint: 64位带符号整数
real: 32位浮点数
double precision/float8 : 64位浮点数
boolean
character: 定长字符串
text :不定长字符串
date:
time:
3.CRUD
1.定义基本表:
CREATE TABLE <表名> (<列名> <数据类型> [列级完整性约束条件]
(<列名> <数据类型> [列级完整性约束条件]...
[,<表级完整性约束条件>]
);
CREATE TABLE Student(
Sno Integer PRIMARY KEY,
Sname character UNIQUE,
Sage smallint
);
2.数据查询
SELECT [ALL | DISTINCT] <目标列表达式>[, <目标列表达式>]...
FROM <表名或视图名>[, <表名或视图名>]...
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]]
[ORDER BY [列名2][ASC | DESC]];
SELECT Sno, Grade
FROM SC
WHERE Cno='3'
ORDER BY Grade DESC;
3.数据插入
INSER
INTO <表名> [(<属性列1>[,<属性列2>])...]
VALUES (<常量1>[, <常量2>]...);
INSERT
INTO Student(Sno, Sname, Sage)
VALUES ('XXX', 'YY', 'ZZ')
INSER
INTO <表名> [(<属性列1>[,<属性列2>])...]
子查询;
INSERT
INTO Dept_age(Sdept, Avg_age)
SELECT Sdept, AVG(Sage)
FROM Student
GROUP BY Sdept;
4.数据更新
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]...
[WHERE <条件>];
UPDATE Student
SET Sage=22
WHERE Sno='2012211494';
5.数据删除
DELETE
FROM <表名>
[WHERE <条件>];
DELETE
FROM Student
WHERE Sno='xxxx';
DELETE
FROM SC
WHERE 'CS' = (
SELECT Sdept
FROM Student
WHERE Student.Sno=SC.Sno)
4-Postgresql整体架构