首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PostgreSQL基础(五):PostgreSQL基本操作和数据类型介绍

PostgreSQL基础(五):PostgreSQL基本操作和数据类型介绍

原创
作者头像
Lansonli
发布于 2024-09-17 15:30:55
发布于 2024-09-17 15:30:55
74800
代码可运行
举报
文章被收录于专栏:Lansonli技术博客Lansonli技术博客
运行总次数:0
代码可运行

PostgreSQL基本操作和数据类型介绍

一、单引号和双引号

在PGSQL中,写SQL语句时,单引号用来标识实际的值。双引号用来标识一个关键字,比如表名,字段名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 单引号写具体的值,双引号类似MySQL的``标记,用来填充关键字
-- 下面的葡萄牙会报错,因为葡萄牙不是关键字
select 1.414,'卡塔尔',"葡萄牙";

二、数据类型转换

第一种方式:只需要在值的前面,添加上具体的数据类型即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 将字符串转成位图类型
select bit '010101010101001';

第二种方式:也可以在具体值的后面,添加上 ::类型 ,来指定

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 数据类型
select '2011-11-11'::date;
select '101010101001'::bit(20);
select '13'::int;

第三种方式:使用CAST函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 类型转换的完整写法
select CAST(varchar '100' as int);

三、布尔类型

布尔类型简单的一批,可以存储三个值,true,false,null

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 布尔类型的约束没有那么强,truefalse大小写随意,他会给你转,同时yes,no这种他也认识,但是需要转换
select true,false,'yes'::boolean,boolean 'no',True,FaLse,NULL::boolean;

boolean类型在做and和or的逻辑操作时,结果

字段A

字段B

a and b

a or b

true

true

true

true

true

false

false

true

true

NULL

NULL

true

false

false

false

false

false

NULL

false

NULL

NULL

NULL

NULL

NULL

四、数值类型

1、整型

整型比较简单,主要就是三个:

  • smallint、int2:2字节
  • integer、int、int4:4字节
  • bigint、int8:8字节

正常没啥事就integer,如果要存主键,比如雪花算法,那就bigint。空间要节约,根据情况smallint

2、 浮点型

浮点类型就关注2个(其实是一个)

  • decimal(n,m):本质就是numeric,PGSQL会帮你转换
  • numeric(n,m):PGSQL本质的浮点类型

针对浮点类型的数据,就使用 numeric

3、序列

MySQL中的主键自增,是基于auto_increment去实现。MySQL里没有序列的对象。

PGSQL和Oracle十分相似,支持序列:sequence。

PGSQL可没有auto_increment。

序列的正常构建方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create sequence laozheng.table_id_seq;
-- 查询下一个值
select nextval('laozheng.table_id_seq');
-- 查询当前值
select currval('laozheng.table_id_seq');

默认情况下,seqeunce的起始值是0,每次nextval递增1,最大值9223372036854775807

告诉缓存,插入的数据比较多,可以指定告诉缓存,一次性计算出20个后续的值,nextval时,就不可以不去计算,直接去高速缓存拿值,效率会有一内内的提升。

序列大多数的应用,是用作表的主键自增效果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 表自增
create table laozheng.xxx(
    id int8 default nextval('laozheng.table_id_seq'),
    name varchar(16)
);
insert into laozheng.xxx (name) values ('xxx');
select * from laozheng.xxx;

上面这种写法没有问题,但是很不爽~很麻烦。

PGSQL提供了序列的数据类型,可以在声明表结构时,直接指定序列的类型即可。

bigserial相当于给bigint类型设置了序列实现自增。

  • smallserial
  • serial
  • bigserial
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 表自增(爽)
create table laozheng.yyy(
    id bigserial,   
    name varchar(16)
);
insert into laozheng.yyy (name) values ('yyy');

在drop表之后,序列不会被删除,但是序列会变为不可用的状态。 因为序列在使用serial去构建时,会绑定到指定表的指定列上。

如果是单独构建序列,再构建表,使用传统方式实现,序列和表就是相对独立的。

4、数值的常见操作

针对数值咱们可以实现加减乘除取余这5个操作

还有其他的操作方式

操作符

描述

示例

结果

^

2 ^ 3

8

|/

平方根

|/ 36

6

@

绝对值

@ -5

5

&

31 & 16

16

|

31|32

63

<<

左移

1<<1

2

>>

右移

16>>1

8

数值操作也提供了一些函数,比如pi(),round(数值,位数),floor(),ceil()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ​PostgreSQL基本操作和数据类型介绍
    • 一、单引号和双引号
    • 二、数据类型转换
    • 三、布尔类型
    • 四、数值类型
      • 1、整型
      • 2、 浮点型
      • 3、序列
      • 4、数值的常见操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档