摘要:數據類型類型轉換數值類型數值類型序列類型不同于的自增長,和都是序列的方式創建使用創建序列關聯列表架構模式名稱類型擁有者數據表數據表序列數行記錄數據
數據類型
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數值類型 數值類型 - 序列類型
不同于mysql的自增長,Postgres和Oracle都是序列的方式創建
# 使用SERIAL創建序列 testdb=# create table test2 (id SERIAL, title varchar(20)); CREATE TABLE testdb=# d 關聯列表 架構模式 | 名稱 | 類型 | 擁有者 ----------+--------------+--------+---------- public | test1 | 數據表 | postgres public | test2 | 數據表 | postgres public | test2_id_seq | 序列數 | postgres (3 行記錄) testdb=# d test2 數據表 "public.test2" 欄位 | 類型 | Collation | Nullable | Default -------+-----------------------+-----------+----------+----------------------------------- id | integer | | not null | nextval("test2_id_seq"::regclass) title | character varying(20) | | | # 使用CREATE SEQUENCE創建序列 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 關聯列表 架構模式 | 名稱 | 類型 | 擁有者 ----------+--------------+--------+---------- public | test1 | 數據表 | postgres public | test2 | 數據表 | postgres public | test2_id_seq | 序列數 | postgres public | test3 | 數據表 | postgres public | test3_id_seq | 序列數 | postgres (5 行記錄) testdb=# d test3 數據表 "public.test3" 欄位 | 類型 | Collation | Nullable | Default ------+-----------------------+-----------+----------+----------------------------------- id | integer | | not null | nextval("test3_id_seq"::regclass) name | character varying(20) | | |數值類型 - 貨幣類型
貨幣類型可以存儲固定小數的貨幣數目,于浮點數不同,它是完全保證精度的。其輸出格式和余燦lc_monetary的設置有關,不同國家的貨幣輸出格式不一樣
# 我安裝的是中文版本,默認中國 postgres=# show lc_monetary; lc_monetary ----------------------------------------------------- Chinese (Simplified)_People"s Republic of China.936 (1 行記錄) postgres=# select "100.5"::money; money ---------- ¥100.50 (1 行記錄) # 設置默認美元 postgres=# set lc_monetary="C"; SET postgres=# select "100.5"::money; money --------- $100.50 (1 行記錄)數值運算
select 4+7; --加 select 4-7; --減 select 4*7; --乘 select 7/3; --除(整數除法講截斷結果) select 6%4; --求模(求余) select 3^3; --冪(指數運算) select |/36.0; --平方根 select ||/8.0; --立方根 select 5!; --階乘 select !!5; --階乘(前綴操作) select @-0.5; --絕對值 select 31&15; --二進制 AND select 31|15; --二進制 OR select 31#15; --二進制 XOR select ~1; --二進制 NOT select 1<<8; --二進制 左移字符串類型
select "Post" || "greSQL"; -- 字符串連接 SELECT BIT_LENGTH("PostgreSQL"); -- 字符串里的二進制位的個數,位長度 SELECT CHAR_LENGTH("PostgreSQL"); -- 字符串李的字符個數 字符個數 --SELECT CONVERT("PostgreSQL" using iso_8859_l_to_utf8); -- 使用指定的轉換名字改變編碼 SELECT LOWER("PostgreSQL"); -- 轉小寫 SELECT UPPER("PostgreSQL"); -- 轉大寫 SELECT OCTET_LENGTH("PostgreSQL"); -- 字符串中的字節數 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正則表達式的子字符串 SELECT SUBSTRING("PostgreSQL123" from "%#"123#"%" for "#"); -- 抽取匹配SQL正則表達式的子字符串,for "#"為設置轉移字符 SELECT TRIM(" PostgreSQL "); -- 從字符串的開頭/結尾兩邊刪除只包含characters中字符(默認是一個空白)最長的字符串 SELECT TRIM("xo" from "oxPostgreSQLxo"); -- 從字符串的開頭/結尾兩邊刪除只包含characters中字符(默認是一個空白)最長的字符串位串
# a必須3位,b可以是少于5的任意位數 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"); # 操作 # 十進制轉二進制 select 66::bit(8); -- 01000010 # 十六進制轉二進制 select "x42"::bit(8); -- 01000010 # 十六進制轉十進制 select "x42"::bit(8)::int; -- 66 # 十進制轉十六進制 select to_hex(66); -- 42日期/時間類型
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 行記錄)幾何類型
此處不做練習,因為比較復雜,場景也沒有不好演示,當然此類型很重要,我們后續有場景的話會專文講
大家可以自己參考百度下幾何類型的操作符和幾何類型的函數
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 行記錄)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39018.html
摘要:它在其他開放源代碼數據庫系統和專有系統之外,為用戶又提供了一種選擇。將插入空間以填補任何額外的空間。始終被視為唯一值上述兩個約束的組合。表范圍的約束可以是,,或。如何在中創建表我們將創建一個名為的表,它定義了各種游樂場設備。 歡迎大家前往騰訊云+社區,獲取更多騰訊海量技術實踐干貨哦~ 本文由angel_郁 發表于云+社區專欄 什么是PostgreSQL? PostgreSQL是自由...
摘要:的實踐一數據類型一數據類型復合類型創建一個復合類型命令格式合成類型欄位類型沒有找到任何名稱為的關聯。數據庫會對輸人的數據進行檢查,讓一些不符合標準的數據不能存放到數據庫中,同時還提供了函數對其類型進行安全性檢査。 PostgreSQL的實踐一:數據類型(一) 數據類型 復合類型 # 創建一個復合類型person # 命令格式:create type xxx AS (); testdb...
摘要:作者譚峰張文升出版日期年月頁數頁定價元本書特色中國開源軟件推進聯盟分會特聘專家撰寫,國內多位開源數據庫專家鼎力推薦。張文升中國開源軟件推進聯盟分會核心成員之一。 很高興《PostgreSQL實戰》一書終于出版,本書大體上系統總結了筆者 PostgreSQL DBA 職業生涯的經驗總結,本書的另一位作者張文升擁有豐富的PostgreSQL運維經驗,目前就職于探探科技任首席PostgreS...
摘要:每個服務由多個進程組成,為首的進程名為。服務使用字節長的內部事務標識符,即時發生重疊后仍然繼續使用,這會導致問題,所以需要定期進行操作。操作被認為是緊跟操作后的操作。在涉及高比例插入刪除的表中,會造成索引膨脹,這時候可以重建索引。 簡介和認知 發音 post-gres-q-l 服務(server) 一個操作系統中可以啟動多個postgres服務。每個服務由多個進程組成,為首的進程名為p...
閱讀 2858·2021-07-30 15:30
閱讀 553·2019-08-30 15:55
閱讀 1621·2019-08-26 17:04
閱讀 633·2019-08-26 11:36
閱讀 2064·2019-08-26 10:58
閱讀 3549·2019-08-23 14:34
閱讀 1558·2019-08-22 18:48
閱讀 2522·2019-08-21 17:51