PostgreSQL与MySQL语法对比总结
總結下PostgreSQL的語法, 對比MySQL的語法.
?
PostgreSQL兩種分頁方法查詢
第一種
SELECT * FROM test_table WHERE i_id>1000?limit 100;
第二種
SELECT * FROM test_table? limit 100 OFFSET?1000;
在3000W數據的時候,建議使用第一種.
mysql 的分頁就非常簡單了
SELECT * FROM test_table? limit 100, 10;
?
PostgreSQL的數據類型:
數值數據類型
| smallint | 存儲整數,小范圍 | 2字節 | -32768 至 +32767 |
| integer | 存儲整數。使用這個類型可存儲典型的整數 | 4字節 | -2147483648 至 +2147483647 |
| bigint | 存儲整數,大范圍。 | 8字節 | -9223372036854775808 至 9223372036854775807 |
| decimal | 用戶指定的精度,精確 | 變量 | 小數點前最多為131072個數字; 小數點后最多為16383個數字。 |
| numeric | 用戶指定的精度,精確 | 變量 | 小數點前最多為131072個數字; 小數點后最多為16383個數字。 |
| real | 可變精度,不精確 | 4字節 | 6位數字精度 |
| double | 可變精度,不精確 | 8字節 | 15位數字精度 |
| serial | 自動遞增整數 | 4字節 | 1 至 2147483647 |
| bigserial | 大的自動遞增整數 | 8字節 | 1 至 9223372036854775807 |
?
對比Mysql的區別很大,mysql 常用的就tinyint 和 int ,以及bigint?
?
字符串數據類型
String數據類型用于表示字符串類型值。
| char(size) | 這里size是要存儲的字符數。固定長度字符串,右邊的空格填充到相等大小的字符。 |
| character(size) | 這里size是要存儲的字符數。 固定長度字符串。 右邊的空格填充到相等大小的字符。 |
| varchar(size) | 這里size是要存儲的字符數。 可變長度字符串。 |
| character varying(size) | 這里size是要存儲的字符數。 可變長度字符串。 |
| text | 可變長度字符串。 |
比Mysql 擁有更加豐富的字符串類型
?
日期/時間數據類型
日期/時間數據類型用于表示使用日期和時間值的列。
| timestamp [ (p) ] [不帶時區 ] | 日期和時間(無時區) | 8字節 | 4713 bc | 294276 ad | 1微秒/14位數 |
| timestamp [ (p) ]帶時區 | 包括日期和時間,帶時區 | 8字節 | 4713 bc | 294276 ad | ? |
| date | 日期(沒有時間) | 4字節 | 4713 bc | 5874897 ad | 1微秒/14位數 |
| time [ (p) ] [ 不帶時區 ] | 時間(無日期) | 8字節 | 00:00:00 | 24:00:00 | 1微秒/14位數 |
| time [ (p) ] 帶時區 | 僅限時間,帶時區 | 12字節 | 00:00:00+1459 | 24:00:00-1459 | 1微秒/14位數 |
| interval [ fields ] [ (p) ] | 時間間隔 | 12字節 | -178000000年 | 178000000年 | 1微秒/14位數 |
一些其他數據類型
布爾類型:
| boolean | 它指定true或false的狀態。 | 1字節 |
貨幣類型:
| money | 貨幣金額 | 8字節 | -92233720368547758.08 至 +92233720368547758.07 |
幾何類型:
幾何數據類型表示二維空間對象。最根本的類型:點 - 形成所有其他類型的基礎。
| point | 16字節 | 在一個平面上的點 | (x,y) |
| line | 32字節 | 無限線(未完全實現) | ((x1,y1),(x2,y2)) |
| lseg | 32字節 | 有限線段 | ((x1,y1),(x2,y2)) |
| box | 32字節 | 矩形框 | ((x1,y1),(x2,y2)) |
| path | 16+16n字節 | 封閉路徑(類似于多邊形) | ((x1,y1),…) |
| polygon | 40+16n字節 | 多邊形(類似于封閉路徑) | ((x1,y1),…) |
| circle | 24字節 | 圓 | <(x,y),r>(中心點和半徑) |
?
對數據庫:
創建數據庫:
CREATE DATABASE database_name;
刪除數據庫:
drop database database_name;
?
對表:
創建表:
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);
?
刪除表:
drop table table_name;
?
?
插入:
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN);
查詢:
SELECT "column1", "column2".."column" FROM "table_name";
更新:
UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];
刪除:
DELETE FROM table_name WHERE [condition];
?
還有 order by / group by /? having / and? ?/? or? /? like? /? in /? not in??? 這些和Mysql 的沒啥不同,一樣用.
?
Not
NOT? 條件與WHERE子句一起使用以否定查詢中的條件。
SELECT column1, column2, ..... columnN?
FROM
? ? ? table_name
WHERE [search_condition] NOT [condition];
?
Between
BETWEEN條件與WHERE子句一起使用,以從兩個指定條件之間的表中獲取數據。
SELECT column1, column2, ..... columnN
FROM table_name
WHERE [search_condition] BETWEEN [condition];
示例:
SELECT * FROM EMPLOYEES WHERE AGE BETWEEN 24 AND 27;
?
連接:
- 內連接(INNER JOIN)
- 左外連接(LEFT OUTER JOIN)
- 右外連接(RIGHT OUTER JOIN)
- 全連接(FULL OUTER JOIN)
- 跨連接(CROSS JOIN)
事務:
- BEGIN TRANSACTION:開始事務。
- COMMIT:保存更改,或者您可以使用END TRANSACTION命令。
- ROLLBACK:回滾更改。
其實也和mysql 的差不多.語法區別不是很大.
?
?
總結
以上是生活随笔為你收集整理的PostgreSQL与MySQL语法对比总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Fast R-CNN算法
- 下一篇: Oracle和MySQL语法区别