postgresql中网络地址类型和布尔类型
时间:2022-05-14
本文章向大家介绍postgresql中网络地址类型和布尔类型,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
创建测试用户,表空间,以及数据库,赋予权限
postgres=# create role pguser with encrypted password 'pguser';
CREATE ROLE
postgres=# create tablespace tbs_mydb owner pguser location '/data/10/tbs_mydb';
CREATE TABLESPACE ^
postgres=# create database mydb with owner=pguser template=template0 encoding='UTF8' tablespace=tbs_mydb;
CREATE DATABASE
postgres=# grant all on database mydb to pguser with grant option;
GRANT
postgres=# grant all on tablespace tbs_mydb to pguser;
GRANT
postgres=# alter role pguser login;
ALTER ROLE
1.布尔类型
字符类型名称 存储长度 描述
boolean 1byte 值为TRUE或者FALSE,0,1,yes,no,t,f,y,n
mydb=> create table test_bool(a boolean,b boolean);
CREATE TABLE
mydb=> insert into test_bool values('true','false');
INSERT 0 1
mydb=> select * from test_bool;
a | b
---+---
t | f
(1 row)
mydb=> insert into test_bool values('y','n');
INSERT 0 1
mydb=> select * from test_bool;
a | b
---+---
t | f
t | f
(2 rows)
mydb=> insert into test_bool values('t','f');
INSERT 0 1
mydb=> select * from test_bool;
a | b
---+---
t | f
t | f
t | f
(3 rows)
mydb=> insert into test_bool values('1','0');
INSERT 0 1
mydb=> select * from test_bool;
a | b
---+---
t | f
t | f
t | f
t | f
(4 rows)
HINT: You will need to rewrite or cast the expression.
mydb=> insert into test_bool values(null,null);
INSERT 0 1
HINT: You will need to rewrite or cast the expression.
mydb=> select * from test_bool;注意插入null之后,是由数据,只不过数据值为空
a | b
---+---
t | f
t | f
t | f
t | f
|
(5 rows)
2.网络地址类型
字符类型名称 存储长度 描述
cidr 7/19字节 IPV4/IPV6网络
inet 7/19字节 IPV4/IPV6网络
macaddr 7/19字节 MAC地址
macaddr8 7/19字节 MAC地址(EUI-64格式)
inet和cidr类型存储格式为IP地址/掩码,如果掩码省略,则IPV4掩码为32,IPV6掩码为128
mydb=> create table test_ipaddres(a cidr,b inet);
CREATE TABLE
mydb=>
mydb=> \d+ test_ipaddres
Table "public.test_ipaddres"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+------+-----------+----------+---------+---------+--------------+-------------
a | cidr | | | | main | |
b | inet | | | | main | |
mydb=> insert into test_ipaddres values ('192.168.1.10/32','192.168.1.10/16');
INSERT 0 1
mydb=>
mydb=> select * from test_ipaddres
mydb-> ;
a | b
-----------------+-----------------
192.168.1.10/32 | 192.168.1.10/16
**inet和cidr类型的数据都会对数据进行是否合法的检查**
mydb=> select '192.168.1.300'::cidr;
ERROR: invalid input syntax for type cidr: "192.168.1.300"
LINE 1: select '192.168.1.300'::cidr;
^
mydb=> select '192.168.1.300'::inet;
ERROR: invalid input syntax for type inet: "192.168.1.300"
LINE 1: select '192.168.1.300'::inet;
^
mydb=>
**cidr会默认输出掩码信息,inet不会输出掩码信息**
mydb=> select '192.168.1.100'::inet;
inet
---------------
192.168.1.100
(1 row)
mydb=> select '192.168.1.100'::cidr;
cidr
------------------
192.168.1.100/32
(1 row)
mydb=>
**cidr会对IP和掩码进行合法性检查,inet不会**
mydb=> select '192.168.1.100/24'::inet;
inet
------------------
192.168.1.100/24
(1 row)
mydb=>
mydb=>
mydb=> select '192.168.1.100/24'::cidr;
ERROR: invalid cidr value: "192.168.1.100/24"
LINE 1: select '192.168.1.100/24'::cidr;
^
DETAIL: Value has bits set to right of mask.
mydb=>
取IP值
mydb=> select host(cidr '192.168.1.232/32');
host
---------------
192.168.1.232
(1 row)
取IP和掩码
mydb=> select text(cidr '192.168.1.232/32');
text
------------------
192.168.1.232/32
(1 row)
取子网掩码
mydb=> select netmask(cidr '192.168.1.232/32');
netmask
-----------------
255.255.255.255
(1 row)
原文地址:https://www.cnblogs.com/nanblog/p/16269700.html
- 洛谷P3379 【模板】最近公共祖先(LCA)(树链剖分)
- 学习使用Jieba1.Jieba2. 特点3.功能4.安装5.使用6.其他中文分词工具
- 如何使用sklearn加载和下载机器学习数据集
- 洛谷P3224 [HNOI2012]永无乡
- 手把手教你使用sklearn快速入门机器学习
- 【 关关的刷题日记48】Leetcode 58. Length of Last Word
- RESTful API 设计指南
- 洛谷P1043 数字游戏
- 使用“空”对象替代引用是否为空判断
- 真是绝了!史上最详细的Jupyter Notebook入门教程
- 10.socket网络编程
- BZOJ1269: [AHOI2006]文本编辑器editor
- 开发人员为何需要企业服务总线?
- 搭建Visual Studio Code+Python开发环境1.对象简介2. 搭建步骤3.小结
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 显示DataGrid序号的一个适用的方法
- SAP Spartacus cms-components.service.ts里的config.cmsComponents
- ng-template和ng-container的嵌套使用
- SAP Spartacus pageSlot一览
- Angular @Hostbinding工作原理
- Python干货 | 遥感影像拼接
- SAP Spartacus 自定义指令的实现以及通过@HostBinding实现属性绑定
- Python气象绘图教程—(十九)剖面图
- Angular DefaultDomRenderer2.setProperty
- 在pandas中利用hdf5高效存储数据
- AMS机器学习课程:Keras深度学习 - 卷积神经网络
- python教程 | 最标准的地图调用方式(国家测绘局提供数据)
- 「万物生长」一个APK从诞生到活跃在Android手机上
- webpack实战——生产环境配置【下】
- R语言作图——Violin plot with dot