成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PostgreSQL的實(shí)踐一:數(shù)據(jù)類型(一)

高璐 / 2378人閱讀

摘要:數(shù)據(jù)類型類型轉(zhuǎn)換數(shù)值類型數(shù)值類型序列類型不同于的自增長(zhǎng),和都是序列的方式創(chuàng)建使用創(chuàng)建序列關(guān)聯(lián)列表架構(gòu)模式名稱類型擁有者數(shù)據(jù)表數(shù)據(jù)表序列數(shù)行記錄數(shù)據(jù)

數(shù)據(jù)類型


類型轉(zhuǎn)換
select bit"10101010";
select int4"123";
select CAST("123" as int4);
select numeric"123.2352342";
select "123"::int4;
select true::BOOLEAN; -- t
select ("f" is true)::BOOLEAN; -- f
數(shù)值類型

數(shù)值類型 - 序列類型

不同于mysql的自增長(zhǎng),Postgres和Oracle都是序列的方式創(chuàng)建

# 使用SERIAL創(chuàng)建序列
testdb=# create table test2 (id SERIAL, title varchar(20));
CREATE TABLE
testdb=# d
                  關(guān)聯(lián)列表
 架構(gòu)模式 |     名稱     |  類型  |  擁有者
----------+--------------+--------+----------
 public   | test1        | 數(shù)據(jù)表 | postgres
 public   | test2        | 數(shù)據(jù)表 | postgres
 public   | test2_id_seq | 序列數(shù) | postgres
(3 行記錄)

testdb=# d test2
                                  數(shù)據(jù)表 "public.test2"
 欄位  |         類型          | Collation | Nullable |              Default
-------+-----------------------+-----------+----------+-----------------------------------
 id    | integer               |           | not null | nextval("test2_id_seq"::regclass)
 title | character varying(20) |           |          |

# 使用CREATE SEQUENCE創(chuàng)建序列
testdb=# CREATE SEQUENCE test3_id_seq;
CREATE SEQUENCE
testdb=# CREATE TABLE test3 (id int4 NOT NULL DEFAULT nextval("test3_id_seq"), name varchar(20));
CREATE TABLE
testdb=# ALTER SEQUENCE test3_id_seq OWNED BY test3.id;
ALTER SEQUENCE
testdb=# d
                  關(guān)聯(lián)列表
 架構(gòu)模式 |     名稱     |  類型  |  擁有者
----------+--------------+--------+----------
 public   | test1        | 數(shù)據(jù)表 | postgres
 public   | test2        | 數(shù)據(jù)表 | postgres
 public   | test2_id_seq | 序列數(shù) | postgres
 public   | test3        | 數(shù)據(jù)表 | postgres
 public   | test3_id_seq | 序列數(shù) | postgres
(5 行記錄)


testdb=# d test3
                                  數(shù)據(jù)表 "public.test3"
 欄位 |         類型          | Collation | Nullable |              Default
------+-----------------------+-----------+----------+-----------------------------------
 id   | integer               |           | not null | nextval("test3_id_seq"::regclass)
 name | character varying(20) |           |          |
數(shù)值類型 - 貨幣類型

貨幣類型可以存儲(chǔ)固定小數(shù)的貨幣數(shù)目,于浮點(diǎn)數(shù)不同,它是完全保證精度的。其輸出格式和余燦lc_monetary的設(shè)置有關(guān),不同國(guó)家的貨幣輸出格式不一樣

# 我安裝的是中文版本,默認(rèn)中國(guó)
postgres=# show lc_monetary;
                     lc_monetary
-----------------------------------------------------
 Chinese (Simplified)_People"s Republic of China.936
(1 行記錄)


postgres=# select "100.5"::money;
  money
----------
 ¥100.50
(1 行記錄)

# 設(shè)置默認(rèn)美元
postgres=# set lc_monetary="C";
SET
postgres=# select "100.5"::money;
  money
---------
 $100.50
(1 行記錄)
數(shù)值運(yùn)算
select 4+7; --加

select 4-7; --減

select 4*7; --乘

select 7/3; --除(整數(shù)除法講截?cái)嘟Y(jié)果)

select 6%4; --求模(求余)

select 3^3;  --冪(指數(shù)運(yùn)算)

select |/36.0; --平方根

select ||/8.0; --立方根

select 5!;     --階乘

select !!5;    --階乘(前綴操作)

select @-0.5;     --絕對(duì)值

select 31&15;  --二進(jìn)制 AND

select 31|15;  --二進(jìn)制 OR

select 31#15;  --二進(jìn)制 XOR

select ~1;  --二進(jìn)制 NOT

select 1<<8;  --二進(jìn)制 左移
字符串類型

select "Post" || "greSQL";  -- 字符串連接

SELECT BIT_LENGTH("PostgreSQL");  -- 字符串里的二進(jìn)制位的個(gè)數(shù),位長(zhǎng)度

SELECT CHAR_LENGTH("PostgreSQL");  -- 字符串李的字符個(gè)數(shù)    字符個(gè)數(shù)

--SELECT CONVERT("PostgreSQL" using iso_8859_l_to_utf8);  -- 使用指定的轉(zhuǎn)換名字改變編碼

SELECT LOWER("PostgreSQL");  -- 轉(zhuǎn)小寫(xiě)

SELECT UPPER("PostgreSQL");  -- 轉(zhuǎn)大寫(xiě)

SELECT OCTET_LENGTH("PostgreSQL");  -- 字符串中的字節(jié)數(shù)

SELECT OVERLAY("PostgreSQL" placing "hello" from 2 for 4);  -- 替換子字符串

SELECT POSITION("gre" in "PostgreSQL");  -- 指定的子字符串的位置

SELECT SUBSTRING("PostgreSQL" from 2 for 3);  -- 抽取子字符串

SELECT SUBSTRING("PostgreSQL123" from "d{1,}$");  -- 抽取匹配POSIX正則表達(dá)式的子字符串

SELECT SUBSTRING("PostgreSQL123" from "%#"123#"%" for "#");  -- 抽取匹配SQL正則表達(dá)式的子字符串,for "#"為設(shè)置轉(zhuǎn)移字符

SELECT TRIM(" PostgreSQL ");  -- 從字符串的開(kāi)頭/結(jié)尾兩邊刪除只包含characters中字符(默認(rèn)是一個(gè)空白)最長(zhǎng)的字符串

SELECT TRIM("xo" from "oxPostgreSQLxo");  -- 從字符串的開(kāi)頭/結(jié)尾兩邊刪除只包含characters中字符(默認(rèn)是一個(gè)空白)最長(zhǎng)的字符串
位串
# a必須3位,b可以是少于5的任意位數(shù)
create table test5(a BIT(3), b BIT VARYING(5));
INSERT INTO test(a, b) values(B"101", B"1010");
INSERT INTO test(a, b) values(B"101", B"1010");

# 操作
# 十進(jìn)制轉(zhuǎn)二進(jìn)制
select 66::bit(8); -- 01000010
# 十六進(jìn)制轉(zhuǎn)二進(jìn)制
select "x42"::bit(8);  -- 01000010
# 十六進(jìn)制轉(zhuǎn)十進(jìn)制
select "x42"::bit(8)::int; -- 66
# 十進(jìn)制轉(zhuǎn)十六進(jìn)制
select to_hex(66); -- 42
日期/時(shí)間類型

postgres=# select date("infinity");
   date
----------
 infinity
(1 行記錄)


postgres=# select current_date;
 current_date
--------------
 2018-11-06
(1 行記錄)


postgres=# select current_time;
   current_time
-------------------
 17:04:57.71863+08
(1 行記錄)


postgres=# select current_timestamp;
       current_timestamp
-------------------------------
 2018-11-06 17:05:01.710637+08
(1 行記錄)


postgres=# select clock_timestamp();
        clock_timestamp
-------------------------------
 2018-11-06 17:05:05.982679+08
(1 行記錄)


postgres=# select now();
              now
-------------------------------
 2018-11-06 17:05:11.710406+08
(1 行記錄)

postgres=# select date"2018-11-06";
    date
------------
 2018-11-06
(1 行記錄)


postgres=# select time "16:51:08";
   time
----------
 16:51:08
(1 行記錄)


postgres=# select time "16:51:08 PST";
   time
----------
 16:51:08
(1 行記錄)


postgres=# select time with time zone"16:51:08 PST";
   timetz
-------------
 16:51:08-08
(1 行記錄)


postgres=# select time "10:51:08 PM";
   time
----------
 22:51:08
(1 行記錄)


postgres=# select time "10:51:08 AM";
   time
----------
 10:51:08
(1 行記錄)


postgres=# select time"10:51:08+8";
   time
----------
 10:51:08
(1 行記錄)


postgres=# select time"10:51:08+6";
   time
----------
 10:51:08
(1 行記錄)


postgres=# select time"10:51:08 CCT";
   time
----------
 10:51:08
(1 行記錄)
                               ^
postgres=# select time with time zone"2018-11-06 10:51:08 Asia/Chongqing";
   timetz
-------------
 10:51:08+08
(1 行記錄)


postgres=# select time with time zone"165408+00";
   timetz
-------------
 16:54:08+00
(1 行記錄)

postgres=# select extract(century from timestamp"2019-11-06 170722");
 date_part
-----------
        21
(1 行記錄)


postgres=# select extract(year from timestamp"2019-11-06 170722");
 date_part
-----------
      2019
(1 行記錄)


postgres=# select extract(decade from timestamp"2019-11-06 170722");
 date_part
-----------
       201
(1 行記錄)


postgres=# select extract(millennium from timestamp"2019-11-06 170722");
 date_part
-----------
         3
(1 行記錄)


postgres=# select extract(month from timestamp"2019-11-06 170722");
 date_part
-----------
        11
(1 行記錄)


postgres=# select extract(quarter from timestamp"2019-11-06 170722");
 date_part
-----------
         4
(1 行記錄)


postgres=# select extract(day from timestamp"2019-11-06 170722");
 date_part
-----------
         6
(1 行記錄)


postgres=# select extract(doy from timestamp"2019-11-06 170722");
 date_part
-----------
       310
(1 行記錄)


postgres=# select extract(hour from timestamp"2019-11-06 170722");
 date_part
-----------
        17
(1 行記錄)
幾何類型

此處不做練習(xí),因?yàn)楸容^復(fù)雜,場(chǎng)景也沒(méi)有不好演示,當(dāng)然此類型很重要,我們后續(xù)有場(chǎng)景的話會(huì)專文講
大家可以自己參考百度下幾何類型的操作符幾何類型的函數(shù)

網(wǎng)絡(luò)地址類型

testdb=# select "192.168.10.10/32"::inet;
     inet
---------------
 192.168.10.10
(1 行記錄)


testdb=# select "192.168.10.10"::inet;
     inet
---------------
 192.168.10.10
(1 行記錄)


testdb=# select "DA01:0000:0000:0000:ABCD:0000:ACBD:0003"::inet;
        inet
---------------------
 da01::abcd:0:acbd:3
(1 行記錄)


testdb=# select "192.168.1.100/32"::cidr;
       cidr
------------------
 192.168.1.100/32
(1 行記錄)


testdb=# select "00e04c757d5a"::macaddr;
      macaddr
-------------------
 00:e0:4c:75:7d:5a
(1 行記錄)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39018.html

相關(guān)文章

  • 想熟悉PostgreSQL?這篇就夠了

    摘要:它在其他開(kāi)放源代碼數(shù)據(jù)庫(kù)系統(tǒng)和專有系統(tǒng)之外,為用戶又提供了一種選擇。將插入空間以填補(bǔ)任何額外的空間。始終被視為唯一值上述兩個(gè)約束的組合。表范圍的約束可以是,,或。如何在中創(chuàng)建表我們將創(chuàng)建一個(gè)名為的表,它定義了各種游樂(lè)場(chǎng)設(shè)備。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由angel_郁 發(fā)表于云+社區(qū)專欄 什么是PostgreSQL? PostgreSQL是自由...

    DTeam 評(píng)論0 收藏0
  • PostgreSQL實(shí)踐數(shù)據(jù)類型(二)

    摘要:的實(shí)踐一數(shù)據(jù)類型一數(shù)據(jù)類型復(fù)合類型創(chuàng)建一個(gè)復(fù)合類型命令格式合成類型欄位類型沒(méi)有找到任何名稱為的關(guān)聯(lián)。數(shù)據(jù)庫(kù)會(huì)對(duì)輸人的數(shù)據(jù)進(jìn)行檢查,讓一些不符合標(biāo)準(zhǔn)的數(shù)據(jù)不能存放到數(shù)據(jù)庫(kù)中,同時(shí)還提供了函數(shù)對(duì)其類型進(jìn)行安全性檢査。 PostgreSQL的實(shí)踐一:數(shù)據(jù)類型(一) 數(shù)據(jù)類型 復(fù)合類型 # 創(chuàng)建一個(gè)復(fù)合類型person # 命令格式:create type xxx AS (); testdb...

    Mr_houzi 評(píng)論0 收藏0
  • 新書(shū)推薦 |《PostgreSQL實(shí)戰(zhàn)》出版(提供樣章下載)

    摘要:作者譚峰張文升出版日期年月頁(yè)數(shù)頁(yè)定價(jià)元本書(shū)特色中國(guó)開(kāi)源軟件推進(jìn)聯(lián)盟分會(huì)特聘專家撰寫(xiě),國(guó)內(nèi)多位開(kāi)源數(shù)據(jù)庫(kù)專家鼎力推薦。張文升中國(guó)開(kāi)源軟件推進(jìn)聯(lián)盟分會(huì)核心成員之一。 很高興《PostgreSQL實(shí)戰(zhàn)》一書(shū)終于出版,本書(shū)大體上系統(tǒng)總結(jié)了筆者 PostgreSQL DBA 職業(yè)生涯的經(jīng)驗(yàn)總結(jié),本書(shū)的另一位作者張文升擁有豐富的PostgreSQL運(yùn)維經(jīng)驗(yàn),目前就職于探探科技任首席PostgreS...

    Martin91 評(píng)論0 收藏0
  • PostgreSQL實(shí)踐:初識(shí)

    摘要:每個(gè)服務(wù)由多個(gè)進(jìn)程組成,為首的進(jìn)程名為。服務(wù)使用字節(jié)長(zhǎng)的內(nèi)部事務(wù)標(biāo)識(shí)符,即時(shí)發(fā)生重疊后仍然繼續(xù)使用,這會(huì)導(dǎo)致問(wèn)題,所以需要定期進(jìn)行操作。操作被認(rèn)為是緊跟操作后的操作。在涉及高比例插入刪除的表中,會(huì)造成索引膨脹,這時(shí)候可以重建索引。 簡(jiǎn)介和認(rèn)知 發(fā)音 post-gres-q-l 服務(wù)(server) 一個(gè)操作系統(tǒng)中可以啟動(dòng)多個(gè)postgres服務(wù)。每個(gè)服務(wù)由多個(gè)進(jìn)程組成,為首的進(jìn)程名為p...

    yibinnn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

高璐

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<