一、前提:之前第一次用PostgreSQL,浅浅地记录一下
二、表名大小写问题
1.MySQL中(通常情况下库表表名都是小写(原因请自行百度)
)
①lower_case_file_system是只读属性,由你的操作系统的文件系统决定;当你的操作系统Windows系统时,通常为ON(大小写不敏感),当你的操作系统为Unix时,通常为OFF(大小写敏感)
②只有当lower_case_file_system为OFF时,lower_case_table_names才是有用的,通过设置为0表示不同大小写代表不同的表,为1表示不同大小写相同的表;当lower_case_file_system为ON时,lower_case_table_names是没有用的
2.PostgreSQL中
①PostgreSQL是大小写敏感的,当你创建的表名包含大写字母时,他会将其转换为小写字母的表名
②如果你想创建大写字母的表名,用双引号包起来,如下
CREATE TABLE "AAA" (
ID VARCHAR(255) NOT NULL
);
三、列名大小写问题
1.MySQL中(windows下,linux同上面的表名)
①mysql中列名是大小写不敏感的,但是他并不会将大小写进行转换,如下图名称依然是大写的ID,并不会自动转换为小写,但是你如果想添加id字段是不可以的
2.PostgreSQL中
①PostgreSQL中列名和表名一样是大小写敏感,他会将其转换为小写字母;如果你想创建大写字母的列表,请用双引号包裹即可
GBRQ$4@1V]UB89UQY%GXE.png" title="
GBRQ$4@1V]UB8
9UQY%GXE.png">
四、引申一下,既然提到了表名、列名,那么数据的大小写又会对我们产生什么影响呢?
1.mysql中varchar类型的数据不区分大小写问题(默认唯一字段也不区分大小写,无法插入大小写不同的数据,但可以设置达到效果)
2.这里我们不设置唯一索引,表中数据如下
①直接查询结果和去重查询结果如下
3.如何才能查询出想要的数据呢?
①解决方案1:查询时加入大小写敏感
1.SELECT * FROM student WHERE BINARY name=“ZhangSan”
2.SELECT * FROM student WHERE name= BINARY “ZhangSan”
注:由于该字段创建索引时可能是大小写不敏感的,因此这样查询时经常会无法使用索引
②解决方案2:定义表结构时定义大小写敏感
1.name varchar(64) BINARY NOT NULL
注:这样定义时该字段生成的索引也是区分大小写的
③解决方案3:设置collate关键字为utf8mb4_general_bin
1.show create table <tablename>中可以看到
collate关键字,默认值是utf8_unicode_ci,其中ci表示case ingore即忽略大小写
2.该字段会影响字符类型比较排序,如group by,having,索引的创建
五、创建主键自增的方式
1.MySQL中
① AUTO_INCREMENT实现,内部维护了一个计数器
2.PostgreSQL中(底层用序列实现,有符号位32位存储)
①SERIAL数据类型
②使用指定序列实现
CREATE SEQUENCE example_sequence START 1;
CREATE TABLE example_table (
id INTEGER DEFAULT NEXTVAL('example_sequence') PRIMARY KEY,
name VARCHAR(100)
);
③从PostgreSQL10版本开始,引入了IDENTITY列
CREATE TABLE example_table (
id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name VARCHAR(100)
);
六、时间类型
1.MySQL中
DATE: 这个数据类型存储日期。它以'YYYY-MM-DD'的格式存储日期,不包含时间部分。
DATETIME: 存储日期和时间。它以'YYYY-MM-DD HH:MM:SS'的格式存储日期和时间。
TIME - 时间,不带日期信息,以HH:MM:SS的格式存储时间
TIMESTAMP: 也存储日期和时间,表示为时间戳(这里的时间戳只能以1970年开始的时间)
2.PostgreSQL中
DATE: 在PostgreSQL中,与MySQL类似,DATE数据类型存储日期,以'YYYY-MM-DD'的格式存储日期,不包含时间部分
TIME - 时间,不带日期信息,以HH:MM:SS的格式存储时间
TIMESTAMP - 日期和时间信息(任意时间都可以)
有写的不好的地方,请多多见谅!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。