postgresql資料庫——資料類型總結

來源:互聯網
上載者:User

標籤:zone   固定   table   postgre   欄位   超出   tab   定義   區分大小寫   

postgresql資料庫的 資料類型 


postgresql支援多種資料類型,主要有:整數類型、浮點數類型、任意精度數值、日期時間類型、字串類型、二進位類型、布爾類型和數群組類型等。


1、整數類型

   postgresql提供了多種數值資料類型,不同的資料類型提供不同的取值範圍,可以儲存的值範圍越大,所需要的儲存空間也會越大。

  postgresql提供的整數類型有:mallint、int、bigint。


《類型名稱》  《說明》     《儲存需求》   《取值範圍》

smallint   小範圍的整數       2位元組        -32768----32767

int        普通大小的整數     4位元組        -2147483648----2147483647

bigint     大整數            8位元組        -9223372036854775808----9223372036854775807



2、浮點數類型:

postgresql中使用浮點數來表示小數。浮點類型有兩種:real和double precision,如下所示:

《類型名稱》            《說明》         《儲存需求》  

real                 6位十進位數字精度          4位元組

double precision     15位十進位數字精度         8位元組


3、任意精度類型

  postgresql中使用numeric表示任意精度的類型是數值,使用numeric(m,n)來表示,其中m稱為精度,表示總共的位元;n稱為標度,是表示小數的位元。例如:563.129的精度為9,標度為3

注意:numeric的有效取值範圍由M和D的值決定。如果改變M而固定D,那麼其取值範圍將隨M的變大而變大。另外,如果使用者指定的精度超出精度外,就會四捨五入進行處理。如下:

testdb=# create table emp (t numeric(5,1),y numeric(5,3));  

testdb=# insert into emp values (9.12,9.156);

testdb=# select * from emp;

  t  |   y   

-----+-------

 9.1 | 9.156



4、日期與時間類型:

   postgresql中有多種表示日期的資料類型,主要有:time、date、timestamp和interval。每一個類型都有合法的取值範圍,當指定確實不合法的值時系統將“零”值插入資料庫中。如下類型介紹:

《類型名稱》     《含義》            《日期範圍》         《儲存需求》      《儲存格式》

time        只用於一日內的時間   00:00:00---24:00:00        8位元組           HH:MM:SS     

date        只用於日期          4713BC---58784897AD         4位元組          YYYY-MM-DD   

timestamp   日期和時間          4713BC---58784897AD         8位元組       YYYY-MM-DD HH:MM:SS 


注意:time和timestamp類型,預設情況下為without time zone(不帶時區);如果需要,可以設定為帶時區(with time zone )


4.1、time:類型使用

time類型用在時間上,在儲存時需要8位元組,格式為:HH:MM:SS。HH表示小時;MM表示分鐘;SS表示秒。

例子:

testdb=# create table test (t time);

testdb=# insert into test values ('11:10:25 '),('23:45');   ---注意,第一個時間值最後有一個空格,

testdb=# select * from test;

    t     

----------

 11:10:25

 23:45:00

(2 rows)


從上面的結果可以看出,兩個時間都正確插入,而且格式都為:HH:MM:SS


testdb=# insert into test values (current_time),(now());    ---插入系統目前時間

INSERT 0 2

testdb=# select * from test;

        t        

-----------------

 11:10:25

 23:45:00

 04:56:57.034863

 04:56:57.034863

(4 rows)

從上面可以看出,會顯示時區;



4.2、date:類型

   date類型用在日期值時,沒有時間部分,儲存需要4位元組。日期格式為:'YYYY-MM-DD',其中YYYY表示年;MM表示月;DD表示日;。在給date類型的欄位賦值時,可以使用字串類型或者數字類型的資料插入,只要符合date的日期格式即可。

①:以“YYYY-MM-DD”或者“YYYYMMDD”字串格式表示的日期。例如,輸入‘2018-12-31’或者‘20181231’,插入資料庫的日期都為2018-12-31.

②:以“YY-MM-DD”或者“YYMMDD”字串格式表示的日期,在這裡YY表示兩位的年值。postgresql使用以下規則解釋兩位年值:“00-69”轉換年值為‘2000--2069’;‘70-99’轉換年值為‘1970-1999’;

③:利用current_date或者now()插入當前系統日期。

例子:


testdb=# create table emp (d date);

testdb=# insert into emp values ('1998-08-08'),('19980808'),('20180808');

testdb=# insert into emp values (now());  ---插入系統當前值


testdb=# select * from emp;

     d      

------------

 1998-08-08

 1998-08-08

 2018-08-08

 2018-06-23

(4 rows)

注意:now()函數返回日期和時間值,在儲存到資料庫時,只保留了日期部分。


4.3、timestamp:類型

timestamp的日期格式為YYYY-MM-DD HH:MM:SS。在儲存時需要8位元組。如:


testdb=# create table emp (ts timestamp);

testdb=# insert into emp values ('2018-08-10 11:00:02'),(now());

testdb=# select * from emp;

            ts             

---------------------------

 2018-08-10 11:00:02

 2018-06-23 05:14:17.52538

(2 rows)


4.4、建立帶時區的日期和時間類型

testdb=# create table emp (t time with time zone);

CREATE TABLE

testdb=# insert into emp values ('12:10:05 PST'),('12:10:10');

INSERT 0 2

testdb=# select * from emp;

      t      

-------------

 12:10:05-08

 12:10:10-04

(2 rows)

其中,PST為西8區,如果不指定時區,預設是東8區。



5、字串類型:

   字串類型用來儲存字串資料,除了可以儲存字串資料之外,還可以儲存其他資料,比片和聲音的位元據。除了可以進行區分或者不區分大小寫字串比較外,還可以進行模式比對尋找。postgresql的字串類型包括:char、varchar和text。

《類型名稱》                      《說明》

char(n)              固定長度非二進位字串,不足補空白

varchar(n)           變長非二進位字串,有長度限制

text                 變長非二進位字串,無長度限制


注意:

   char(n) varchar(n),其中n是一個正整數。表示可以儲存n個字元的字串。如果要儲存的字串比聲明的長度短,類型為char的數值將會用空白填滿;而類型為varchar的數值將只儲存短些的字串。

   char類型中填充的空白是無意義的。例如,比較兩個char值的時候填充的空白都會被忽略,在轉換成其他字串類型的時候,char值裡面的空白會被刪除,注意在varchar和text數值裡,結尾的空白是有意思的。


例子:

testdb=# create table emp (v1 char(5),v2 varchar(10));

CREATE TABLE

testdb=# insert into emp values ('ab','ab '),('abc','abc'),('ab   ','ab   ');

INSERT 0 3

testdb=# select * from emp;

  v1   |  v2   

-------+-------

 ab    | ab 

 abc   | abc

 ab    | ab   

(3 rows)


testdb=# select concat('(',v1, ')'),concat('(',v2, ')') from emp;

 concat  | concat  

---------+---------

 (ab   ) | (ab )

 (abc  ) | (abc)

 (ab   ) | (ab   )

(3 rows)


--text類型:

  postgresql提供text類型,它可以儲存任何長度的字串。雖然text類型不是sql標準,但是許多其他sql資料庫系統也有。

例子:

testdb=# create table emp (t1 text);

testdb=# insert into emp values ('ab'),('agcd'),('ab   ');

testdb=# select * from emp;

  t1   

-------

 ab

 agcd

 ab   

(3 rows)


testdb=# select concat('(',t1, ')') from emp;

 concat  

---------

 (ab)

 (agcd)

 (ab   )

(3 rows)



6、二進位類型

   postgresql支援兩類字元型資料:文本字串和二進位字串,postgresql提供了bytea類型,用於儲存二進位字串。bytea類型儲存空間為4位元組加上實際的二進位字串。


testdb=# create table emp (b bytea);                               ^

testdb=# insert into emp values (E'\\000');

INSERT 0 1

testdb=# select * from emp;

  b   

------

 \x00

(1 row)



7、布爾類型

   postgresql提供了Boolean布林值資料型別。Boolean用1位元組來儲存,提供了true(真),false(假)兩個值。另外,使用者可以使用其他有效文本值替代true和false。替代true的文本值為‘t’‘true’‘y’,'1'‘yes’;替代false的文本值為‘f’‘n’,'0'


testdb=# create table emp (b boolean);

CREATE TABLE

testdb=# insert into emp values (true),(false),('y'),('no'),('0');

INSERT 0 5

testdb=# select * from emp;

 b 

---

 t

 f

 t

 f

 f

(5 rows)


8、數群組類型

postgresql允許將欄位定義成定長或變長的一維或多維陣列。數群組類型可以是任何基本類型或使用者定義型別。


postgresql資料庫——資料類型總結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.