pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

【数据类型和运算符】

【5.1 数据类型介绍】

1. 整数类型 smallint 、int 、bigint

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

create table tmp1 (x smallint,y int,z bigint);

2.浮点数类型 real 和 double precision

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

create table tmp2 (x float(5),y real,z double precision);

3.任意精度类型 numeric

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

create table tmp3 (x numeric(5,1),y numeric(5,2));

insert into tmp3 values(9.12,9.15);

select * from tmp3;

pgSQL笔记02-数据类型和运算符

4.日期与时间类型 time 、 date 、 timestamp 、 interval

pgSQL笔记02-数据类型和运算符

◆ TIME 类型

pgSQL笔记02-数据类型和运算符

create table tmp4 (t TIME);

insert into tmp4 values('10:05:05'),('23:23');

select * from tmp4;

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

insert into tmp4 values('101112');

select * from tmp4;

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

【插入当前时间】 (CURRENT_TIME),(NOW())

alter table tmp4 alter column t TYPE time without time zone;

delete from tmp4;

insert into tmp4 values(CURRENT_TIME),(NOW());

select * from tmp4;

pgSQL笔记02-数据类型和运算符

◆ DATE 类型

pgSQL笔记02-数据类型和运算符

create table tmp5(d DATE);

insert into tmp5 values('1998-08-08'),('19980808'),('20101010');

select * from tmp5;

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

delete from tmp5;

insert into tmp5 values('99-09-09'),('990909'),('000101'),('121212');

select * from tmp5;

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

delete from tmp5;

insert into tmp5 values(NOW());

select * from tmp5;

pgSQL笔记02-数据类型和运算符

◆ TIMESTAMP类型

pgSQL笔记02-数据类型和运算符

create table tmp7 (ts TIMESTAMP);

insert into tmp7 values('1996-02-02 02:02:02'),(NOW() );

select * from tmp7;

pgSQL笔记02-数据类型和运算符

◆ 带时区的时间和日期

pgSQL笔记02-数据类型和运算符

create table tmp7h (th time with time zone);

insert into tmp7h values('10:05:05 PST'),('10:05:05');

select * from tmp7h;

pgSQL笔记02-数据类型和运算符

5.字符串类型 可以存储字符串、图片二进制、音频二进制。包括:char、varchar、text

pgSQL笔记02-数据类型和运算符

(案例略)

6.二进制类型 BYTEA

pgSQL笔记02-数据类型和运算符

create table tmp10(b BYTEA);

insert into tmp10 values (E'\\000');

select * from tmp10;

 

7.布尔类型 BOOLEAN

pgSQL笔记02-数据类型和运算符

create table tmp11(b BOOLEAN );

insert into tmp11 values (TRUE),(FALSE),('y'),('no'),('0');

select * from tmp11;

pgSQL笔记02-数据类型和运算符

8.数组类型★

pgSQL笔记02-数据类型和运算符

create table tmp12(bt int[] );

insert into tmp12 values ('{{1,1,1},{2,2,2},{3,3,3}}');

select * from tmp12;

pgSQL笔记02-数据类型和运算符

 

【如何选择数据类型】

为了优化存储,提高数据库性能,应该使用最精确的类型。

只记录时间——用TIME类型;只记录日期——用DATE类型;同时记录日期和时间——用TIMESTAMP类型。

CHAR是固定长度字符,VARCHAR是可变长度字符。CHAR比VARCHAR处理速度要快,但是浪费存储空间。

 

【常见运算符介绍】

◆运算符概述

算术运算符 + - * / %

比较运算符 > < = >= <= != IN BETWEEN...AND... GREATEST LEAST LIKE

逻辑运算符 NOT AND OR

位运算符 & | ~ ^ << >>

 

1.算术运算符

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

create table tmp14 (num INT);

insert into tmp14 values (64);

/* 【对num值进行加法和减法运算】 */

select num,num+10,num-10,num+5-3,num+36.5 from tmp14;

pgSQL笔记02-数据类型和运算符

 

pgSQL笔记02-数据类型和运算符

/* 【对num值进行乘法和除法运算】 */

select num,num*2,num/2,num/3,num%3 from tmp14;

pgSQL笔记02-数据类型和运算符

(任兴:为毛我测试的num/3不是21.3333,而是21?版本不同的原因?!)

 

2. 比较运算符 ——结果总是t、f或者空值。

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

/* 【使用“=” 进行相等的判断】 */

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

pgSQL笔记02-数据类型和运算符

总结:“=”符号不能用于空值NULL的判断。

pgSQL笔记02-数据类型和运算符

/* 【使用“!=”和“<>” 进行不相等的判断】 */

select 'good'<>'god',1<>2,4!=4,5.5!=5,(1+3)!=(2+1),NULL<>NULL;

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

/* 【使用LEAST运算符进行大小判断】 */

select least(2,0),least(20.0,3.0,100.5),least('a','b','c'),least(10,NULL);

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

/* 【使用greatest运算符进行大小判断】 */

select greatest(2,0),greatest(20.0,3.0,100.5),greatest('a','b','c'),greatest(10,NULL);

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

/* 【IN、NOT IN、存在NULL值得情况】 */

select 2 in (1,2,5,8),3 in (1,2,5,9),2 not in (1,2,5,8),3 not in (1,2,5,9),NULL in (1,3,5),10 in (1,3,NULL);

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

注意:匹配一个字符的是一个下划线: _

/* 【LIKE】 */

select 'stud' like 'stud','stud' like 'stu_','stud' like '%d','stud' like 's_u_','s' like NULL;

 

3. 逻辑运算符 ——结果总是t、f或者空值。

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

/* 【NOT,对于NULL运算结果为空值】 */

select not '1',not 'y',not '0',not NULL,not 'n';

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

/* 【AND,对于包含NULL运算结果为空值】 */

select '1' and 'y','1' and '0','1' and NULL,'0' and NULL;

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

/* 【OR,对于包含NULL运算结果为空值】 */

select '1' or 't' or '0','1' or 'y','1' or NULL,'0' or NULL,NULL or NULL;

pgSQL笔记02-数据类型和运算符

4. 位运算符 ——主要用于操作二进制的位串

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

pgSQL笔记02-数据类型和运算符

/* 【位运算 ||】 */

select '1000100' || '1010110';

pgSQL笔记02-数据类型和运算符

◆ 运算符的优先级

pgSQL笔记02-数据类型和运算符