摘要:數(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ù)類型
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ù)
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
摘要:它在其他開(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是自由...
摘要:的實(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...
摘要:作者譚峰張文升出版日期年月頁(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...
摘要:每個(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...
閱讀 2867·2021-07-30 15:30
閱讀 562·2019-08-30 15:55
閱讀 1631·2019-08-26 17:04
閱讀 642·2019-08-26 11:36
閱讀 2082·2019-08-26 10:58
閱讀 3562·2019-08-23 14:34
閱讀 1566·2019-08-22 18:48
閱讀 2533·2019-08-21 17:51