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更具体
  • 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字节

    1. YYYY-MM-DD 或者 YYYYMMDD

      2012-12-31 20121231

    2. YY-MM-DD 或者 YYMMDD

      00~69 = 2000~2069

      70~99 = 1970~1999

      12-12-31 : 2012-12-31

      981231 : 1998-12-31

    3. current_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 数组类型

  1. 数组声明

    numb int[]; 一维int数组

    xuehao text[][]; 二维text数组

    zuoye text[4][4]; 二维text数组,并且声明了数组的长度

    pay_by_quarter int array[5];

  2. 插入数组数值

    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 运算符概述

  1. 算术运算符

    + - * / %

    • cookie:

      MySQL中 / 是除法,

      PostgreSQL中 / 是地板除
  2. 比较运算符

    \> < = >= <= !=

    in between and greatest least like

  3. 逻辑运算符

    not and or

  4. 位操作符

    位与& 位或| 位非~ 位异或^ 左移<< 右移>>

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 比较运算符

  1. =

    判断数字\字符串\表达式是否相等

    select 1=0,'2'=2,'b'='b',(1+3)=(2+1),null=null;

    1. 若有一个参数参数为null,则比较运算符为空
    2. 若一个字符串和数字进行相等判断,则将字符串转换为数字
  2. <> 或 != ,不能用于判断空值null

  3. < <= > >= ,,不能用于判断空值null

  4. between and

    expr between min and max

    expr 不大于max不小于min

    select 'x' between 'f' and 'g', 'b' between 'a' and 'c';

  5. least

    least(值1,值2,...,值n)

    返回最小值,空值忽略不计

    select least(1,2,3),least('a','b','c'),least(10,null);

  6. greatest

    greatest(值1,值2,...,值n)

    返回最大值,空值忽略不计

  7. in \ not in

  8. like

    匹配字符串

    expr like 匹配条件

    • % 匹配人数数目的字符,包括零字符
    • _ 只能匹配一个字符

    select 'stud' like 'stu_','stud' like '%d','s' like null;

    • 与null匹配时,结果为空值null

5.3.4 逻辑运算符

  1. not

    select not '1',not 'y',not '0',not 'n';
  2. and

    select '1' and 'y','1' and '0','y' and '0';
  3. 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,其他值会报错

5.3.5 运算符的优先级

从低到高如下:

  • =(赋值运算), :=
  • or
  • and
  • not
  • between and, case, when, then, else
  • =(比较运算), >=, >, <, <=, <>, !=, is, like, in
  • -, +
  • *, /, %
  • -(负号)
  • !

PostgreSQL自学笔记:5 数据类型和运算符的更多相关文章

  1. IOS开发新手教程(一)-数据类型和运算符

    OC语法入门(一) 数据类型和运算符 1.1凝视 凝视和其它语言一样,同意单行 ,多行凝视,一份规范的代码里面须要有一些正式的凝视,例如以下凝视: /* 这是多行 凝视 */ //这是多行凝视 OC语 ...

  2. Java 第二章 变量、数据类型和运算符

    第二章      变量.数据类型和运算符 什么是变量: 变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样. #在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据. ...

  3. Java1变量数据类型和运算符

    day02_变量数据类型和运算符   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class jh_01_数据类型说明 {     public  ...

  4. Java中的变量,数据类型和运算符

    变量,数据类型和运算符 1.变量是一个数据存储空间的表示,它是储存数据的基本单元. 如何理解这句话,下面用一个表格可以形象的表达: 变量与房间之间的对应关系 房间名称 变量名 房间类型 变量类型 入住 ...

  5. 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...

  6. C#学习笔记(二):变量、数据类型和运算符

    变量.数据类型       给变量赋值,如果想指定float,在数字后面加上F/f:如果想指定decimal,在数字后面加上m.   0-9:48-57 A-Z:65-90 a-z:97-122   ...

  7. JavaScript(二)---- 变量、数据类型和运算符

    变量 javaScript中的变量变量是弱类型的,用var来声明. javascript的变量声明格式: var 变量名 = 数据; 声明变量要注意的事项: 1. 在javascript中声明变量是 ...

  8. PostgreSQL自学笔记:8 查询数据

    8 查询数据 8.1 基本查询语句 select语句的基本格式是: select {* | 字段1[,字段2,...]} [ from 表1,表2... [where 表达式] [group by & ...

  9. PostgreSQL自学笔记:6 PostgreSQL函数

    6 PostgreSQL函数 6.2 数学函数 abs(x) 绝对值 pi() 圆周率π select abs(-3),pi(); cookie: MySQL中的pi()默认值3.141593, Po ...

随机推荐

  1. C#动态操作DataTable(新增行、列、查询行、列等)

    public void CreateTable() { //创建表 DataTable dt = new DataTable(); //1.添加列 dt.Columns.Add("Name& ...

  2. 洛谷P1776 宝物筛选

    一道很好的单调队列优化多重背包入门题 令\(v[i]\)表示重量,\(w[i]\)表示价格 ,\(c[i]\)表示最多可放的数量,不难推出朴素的转移方程如下: \(f[i][j]=max\{f[i-1 ...

  3. 【洛谷P3389 【模板】高斯消元法】

    这是个版子题,当然本蒟蒻也是看了好几天才明白 对于这样的线性方程组,我们可以看成是一个矩阵 对于百度百科给的定义(我感到很迷)赶脚和行列式有的一拼 但我们要注意的是: 行列式是一个确切的值(有关行列式 ...

  4. 关于QQ农场牧场等曾经流行的游戏的一些见解

    大概在上上周,我偶然间打开QQ空间玩了一会QQ农牧场,玩完之后我在想,在那个年代他们为什么那么红? 我觉得可能有以下几点: 1:凭借着QQ海量的用户,可以迅速推广 2:迎合了人们爱占小便宜的心理,不过 ...

  5. oldboy s21day11

    #!/usr/bin/env python# -*- coding:utf-8 -*- # 1.列举 str.list.dict.set 中的常用方法(每种至少5个),并标注是否有返回值.'''str ...

  6. Luogu P4321 随机漫游

    期望DP要倒着推 Luogu P4321 题意 LOJ #2542 不一定是树,询问点不一定均为1 $Solution$ 设计一个巧妙的DP状态 设$ F(S,x)$表示当前在点$ x$已经走遍了$ ...

  7. 设计模式六: 模板方法(Template Method)

    简介 模板方法属于行为型模式的一种. 实现层面上, 在抽象类中定义了算法或流程的骨架, 将其中易变的部分延迟到子类实现, 也就是允许它的子类实现其中的某些步骤. 模板方法适用于算法不变, 但算法中某些 ...

  8. DeepLearning.ai学习笔记(四)卷积神经网络 -- week4 特殊应用:人力脸识别和神经风格转换

    一.什么是人脸识别 老实说这一节中的人脸识别技术的演示的确很牛bi,但是演技好尴尬,233333 啥是人脸识别就不用介绍了,下面笔记会介绍如何实现人脸识别. 二.One-shot(一次)学习 假设我们 ...

  9. MySql的事务控制(TCL语言)

    ⒈事务 一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行. ⒉事务的特性(ACID) 1.原子性(Atomicity):一个事务不可再分割,要么都执行要么都不执行. 2. ...

  10. C++入门篇四

    常量引用:形参不能修改,节省开辟内存空间的开销 用一级指针代替二级指针常量引用,使用场景,修饰形参为只读const int a=10会分配内存如果使用引用,在前面加了一个const的话,那么就不可以修 ...