PostgreSQL是一款对象关系型数据库管理系统;因为自由宽松的许可证,任何人都可以以任何目的免费使用、修改和分发PostgreSQL, 不管是私用、商用还是学术研究目的。
中文官网:http://www.postgres.cn/v2/document
优点:
1.丰富的数据类型,并且很多数据类型没有过细的区分,举个例子:text类型,mysql就存在small text, middle text, large text... PG只有text,最大存储1GB;
2.PG可以存储Json和数组Array;
注意事项:
创建主键: 唯一索引只有B-Tree能被设置,一个表中最多可以创建32个列索引,
1.在创建主键选择自增id:
serial类型:
serial和bigserial并不是真正意义上的数据类型,只是为了在表中设置唯一标识做的概念上的便利。
CREATE TABLE TABLENAME{
columnName SERIAL
};
CREATE TABLE TABLENAME{
columnName integer DEFAULT nextval('tableName_columnName_seq')NOT NULL
};
2.大小写敏感问题:
关键词和不被引号修饰的标识符是大小写不敏感的。受限标识符或被引号修饰的标识符。它是由双引号(")包围的一个任意字符序列。一个受限标识符总是一个标识符而不会是一个关键字。因此"select"可以用于引用一个名为“select”的列或者表,而一个没有引号修饰的select则会被当作一个关键词,从而在本应使用表或列名的地方引起解析错误。
大写字段需要用“”引号(pg字段名使用“”,MySQL字段名使用``)
******表名以及字段名如果是小写但是为关键字,比如name,则也需使用"";
3.分页查询:
limit ${limit} offset ${start}
4.日期格式转化:
举个例子:
to_char(timestamp, text) 将时间戳转换为字符串to_char(current_timestamp, 'HH12:MI:SS')
5.模糊查询:
SELECT * FROM public."user" WHERE CONCAT(username) LIKE CONCAT('%', #{username}, '%');
6.null替换:
coalesce(msg,'')