PostgreSQL自学笔记:5 数据类型和运算符
5 数据类型和运算符
5.1 PostgreSQL 数据类型介绍
5.1.1 整数类型
| 整型类型 | 字节 | 取值范围 |
|---|---|---|
| smallint | 2字节 | -2^15 ~ 2^15 |
| int integer | 4字节 | -2^31 ~ 2^31 |
| bigint | 8字节 | -263~263 |
5.1.2 浮点类型
| 类型名称 | 说明 | 存储需求 |
|---|---|---|
| real | 6位十进制数字精度 | 4字节 |
| double precision | 15位十进制数字进度 | 8字节 |
- Infinity表示正无穷大,
- -Infinity表示负无穷大,
- NaN表示不是一个数字
5.1.3 任意精度类型
numeric(m,n)
m表示总共位数,n表示小数位数
5.1.4 日期与时间类型
now() 当前时间
- cookie:
PostgreSQL的now()比MySQL更具体
- cookie:
time:
一日内的时间,00:00:00~24:00:00,8字节创建:
create table tmp4(t time);插入:
insert into tmp4 values('10:05:05'),('23:23');
insert into tmp4 values(now());查询:
select * from tmp4;
date:
只用于日期,4713BC~5874879AD,4字节YYYY-MM-DD 或者 YYYYMMDD
2012-12-31 20121231YY-MM-DD 或者 YYMMDD
00~69 = 2000~2069
70~99 = 1970~1999
12-12-31 : 2012-12-31
981231 : 1998-12-31current_date 或者 now()插入当前系统时间
- 创建:
create table tmp5(d date); - 插入:
insert into tmp5 values ('20190114'),('190115')
,(now()),(current_date);
- 查询:
select * from tmp5;
timestamp:
日期和时间,4713BC~5874879AD,8字节- 创建:
create table tmp7(ts timestamp); - 插入:
insert into tmp7 values('190116 13:44:00'),(now()) - 查询:
select * from tmp7;
- 创建:
5.1.5 字符串类型
char(n)和character(n):
固定长度非二进制字符串,不足补空白varchar(n)和character varying(n):
变长非二进制字符串,有长度限制
超过长度限制会报错create table tmp8(ch char(4),vch varchar(4));
insert into tmp8 values('ab','ab'),
('abcd','abcd'),('ab ','ab ');
select concat('|',ch,'|'),concat('|',vch,'|') from tmp8;
select * from tmp8;
text:
变长非二进制字符串,无长度限制create table tmp9(te text);
insert into tmp9 values('ab'),('abcd'),('ab ');
select concat('|',te,'|') from tmp9;
cookie:
PostgreSQL中字符串用单引号,MySQL中单双引都可以
5.1.6 二进制类型
PostgreSQL提供了bytea类型,用于存储二进制字符串,存储空间为4字节
加上实际的二进制字符串
create table tmp10(b bytea);
insert into tmp10 values(e'\\000');
select * from tmp10;
5.1.7 布尔类型
create table tmp11(b boolean);
insert into tmp11 values(true),(false),('y'),('no'),('0');
select * from tmp11;
5.1.8 数组类型
数组声明
numb int[];一维int数组
xuehao text[][];二维text数组
zuoye text[4][4];二维text数组,并且声明了数组的长度pay_by_quarter int array[5];
插入数组数值
create table tmp12(bt int[]);
insert into tmp12 values('{{1,2,3},{4,5,6},{7,8,9}}');
select * from tmp12;
5.3 常见运算符介绍
5.3.1 运算符概述
算术运算符
+ - * / %- cookie:
MySQL中 / 是除法,
PostgreSQL中 / 是地板除
- cookie:
比较运算符
\> < = >= <= !=
inbetween andgreatestleastlike逻辑运算符
notandor位操作符
位与&位或|位非~位异或^左移<<右移>>
5.3.2 算术运算符
create table tmp14(num int);
insert into tmp14 values(64);
select num,num+10,num-10,num*2,num/3,num%3 from tmp14;
5.3.3 比较运算符
=
判断数字\字符串\表达式是否相等
select 1=0,'2'=2,'b'='b',(1+3)=(2+1),null=null;- 若有一个参数参数为null,则比较运算符为空
- 若一个字符串和数字进行相等判断,则将字符串转换为数字
<> 或 != ,不能用于判断空值null
< <= > >= ,,不能用于判断空值null
between and
expr between min and max
expr 不大于max不小于minselect 'x' between 'f' and 'g', 'b' between 'a' and 'c';least
least(值1,值2,...,值n)
返回最小值,空值忽略不计select least(1,2,3),least('a','b','c'),least(10,null);greatest
greatest(值1,值2,...,值n)
返回最大值,空值忽略不计in \ not in
like
匹配字符串
expr like 匹配条件- % 匹配人数数目的字符,包括零字符
- _ 只能匹配一个字符
select 'stud' like 'stu_','stud' like '%d','s' like null;- 与null匹配时,结果为空值null
5.3.4 逻辑运算符
- not
select not '1',not 'y',not '0',not 'n'; - and
select '1' and 'y','1' and '0','y' and '0'; - or
select '1' or 'y','1' or '0','y' or '0';
- cookie:
- MySQL中'y'不能表示true,字符串为false,
数值类型\时间类型为true - PostgreSQL中'yes''y''1'能表示true,
'no''n''0'能表示false,其他值会报错
- MySQL中'y'不能表示true,字符串为false,
5.3.5 运算符的优先级
从低到高如下:
- =(赋值运算), :=
- or
- and
- not
- between and, case, when, then, else
- =(比较运算), >=, >, <, <=, <>, !=, is, like, in
- -, +
- *, /, %
- -(负号)
- !
PostgreSQL自学笔记:5 数据类型和运算符的更多相关文章
- IOS开发新手教程(一)-数据类型和运算符
OC语法入门(一) 数据类型和运算符 1.1凝视 凝视和其它语言一样,同意单行 ,多行凝视,一份规范的代码里面须要有一些正式的凝视,例如以下凝视: /* 这是多行 凝视 */ //这是多行凝视 OC语 ...
- Java 第二章 变量、数据类型和运算符
第二章 变量.数据类型和运算符 什么是变量: 变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样. #在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据. ...
- Java1变量数据类型和运算符
day02_变量数据类型和运算符 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class jh_01_数据类型说明 { public ...
- Java中的变量,数据类型和运算符
变量,数据类型和运算符 1.变量是一个数据存储空间的表示,它是储存数据的基本单元. 如何理解这句话,下面用一个表格可以形象的表达: 变量与房间之间的对应关系 房间名称 变量名 房间类型 变量类型 入住 ...
- 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果
查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...
- C#学习笔记(二):变量、数据类型和运算符
变量.数据类型 给变量赋值,如果想指定float,在数字后面加上F/f:如果想指定decimal,在数字后面加上m. 0-9:48-57 A-Z:65-90 a-z:97-122 ...
- JavaScript(二)---- 变量、数据类型和运算符
变量 javaScript中的变量变量是弱类型的,用var来声明. javascript的变量声明格式: var 变量名 = 数据; 声明变量要注意的事项: 1. 在javascript中声明变量是 ...
- PostgreSQL自学笔记:8 查询数据
8 查询数据 8.1 基本查询语句 select语句的基本格式是: select {* | 字段1[,字段2,...]} [ from 表1,表2... [where 表达式] [group by & ...
- PostgreSQL自学笔记:6 PostgreSQL函数
6 PostgreSQL函数 6.2 数学函数 abs(x) 绝对值 pi() 圆周率π select abs(-3),pi(); cookie: MySQL中的pi()默认值3.141593, Po ...
随机推荐
- 使pre的内容自动换行(转)
<pre> 元素可定义预格式化的文本.被包围在 pre 元素中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre> 标签的一个常见应用就是用来表示计算机的源代码 ...
- 部分安卓机型1px边框无法显示解决方法
实践发现css样式中使用1px solid 在部分安卓机型无法显示. 网上找到解决方案:使用行内样式设置边框.
- ubuntu16.04+cuda9+cudnn7+tensorflow+pycharm环境搭建
安装环境:ubuntu16.04+cuda9+cudnn7+tensorflow+pycharm 1)前期搭建过程主要是按照这篇博文,对于版本选择,安装步骤都讲得很详细,亲测有效! https://b ...
- (四)窗口mainwindow
常用控件: lable: 可以放文本,图片,动态图片,链接 Text Edit: 富文本编辑框:多行文本,HTML,图片 Line Edit: 只能放一行 Plain Edit: 只能显示多行文本 ...
- vegas 为盖斯
vegas 为盖斯 S键 分割素材U键 分开视频和音频I键渲染开始O渲染结束 默认布局 为盖斯新建项目的参数 剪好后渲染 插入字幕
- Linux 命令详解(十三)如何启动、关闭和设置ubuntu防火墙
sudo ufw enable|disable 由于LInux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw. ubuntu 9.1 ...
- NOI-OJ 1.13 ID:23 区间内的真素数
整体思路 这里需要大量使用素数,必须能够想到只求出M到N之间的素数是不够的,因为M到N之间数字的反序有可能是大于M或小于N的数字,例如M=2,N=20,那么19的反序91大于20,所以使用埃拉拖色尼算 ...
- “字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛 1010 Count
思路:矩阵快速幂.推一下初始矩阵就好了 #include<bits/stdc++.h> #define LL long long #define fi first #define se s ...
- Java入门——多态
Java引用变量有两个类型分别是 编译时类型:声明的类型 运行时类型:实际赋值的类型 如果这两个类型不一样就会出现多态 举例现有类A class A{ public int field = 5; pu ...
- python中的转义字符
当我们需要在字符中添加特殊符号时,我们需要用\(即反斜杠来转义字符) 常用的转义字符: 注:如果不想转义添加的特殊字符,需要显示字符串原来的意思的时候,需要用r或R来定义 结果是这样的