关于PostgreSQL的基本部分的总结
首先
这篇文章的续写在这里。
我听说过自己动手实践是学习最好的方法,所以我在家的云虚拟机上搭建了一个数据库容器,记录了我边操作边学习的过程。
数据库操作
链接数据库
如果从DB服务器进行连接,可以省略-h选项。
# psql -U {DBユーザー名} -d {DB名} -h {DBサーバーのホスト名}
创建数据库
# CREATE DATABASE {DB名};
表操作
# CREATE TABLE Shohin(shohin_id CHAR(4) NOT NULL,
shohin_mei VARCHAR(100) NOT NULL,
shohin_bunrui VARCHAR(32) NOT NULL,
hanbai_tanka INTEGER,
shiire_tanka INTEGER,
torokubi DATE,
PRIMARY KEY (shohin_id));
CREATE TABLE
数据类型种类
型型種別備考INTEGER数値型整数のみCAHR文字列型固定長の文字列型。CHAR(10)のように、カッコ内に文字列の最大長を入れる。CHAR(10)に’abc’という文字を入れた場合、残りの7枠は半角スペースで埋められる。VARCHAR文字列型可変長文字列型。VARCHAR(10)に’abc’という文字を入れた場合でも、半角スペースで埋められない。DATE日付型年月日を入れる
约束
制約備考NOT NULL空データはNGPRIMARY KEY主キーに設定。PRIMARY KEY({カラム名})で、指定するカラム名を主キーに設定する。
删除表
# DROP TABLE {テーブル名};
增加一列
# ALTER TABLE {テーブル名} ADD COLUMN {列の定義};
删除列。
# ALTER TABLE {テーブル名} DROP COLUMN {列名};
对表格进行数据输入
在开始交易之前进行限制,直到进行提交或回滚为止。
# BEGIN TRANSACTION;
BEGIN
注册数据(记录)。
# INSERT INTO Shohin VALUES ('0001', 'Tシャツ', '衣服', 1000, 500, '2009-09-20');
INSERT 0 1
确认注册并解除交易。
# COMMIT;
COMMIT
如果不确认注册,则解除交易。
# ROLLBACK
ROLLBACK
搜索桌子
选择查询
在搜索表中的数据时,使用SELECT语句。
SELECT子句和FROM子句可以大写书写,但是小写也可以运行。
使用SELECT * FROM {表名}进行搜索。
# SELECT * FROM shohin;
shohin_id | shohin_mei | shohin_bunrui | hanbai_tanka | shiire_tanka | torokubi
-----------+----------------+---------------+--------------+--------------+------------
0001 | Tシャツ | 衣服 | 1000 | 500 | 2009-09-20
0002 | 穴あけパンチ | 事務用品 | 500 | 320 | 2009-09-11
0003 | カッターシャツ | 衣服 | 4000 | 2800 |
通过在*的位置插入列名称,可以仅提取所需的列。
列名称可以用逗号分隔并指定多个。
列的顺序可以自由调整。
# SELECT shohin_mei, shohin_bunrui FROM shohin;
shohin_mei | shohin_bunrui
----------------+---------------
Tシャツ | 衣服
穴あけパンチ | 事務用品
カッターシャツ | 衣服
# SELECT shohin_bunrui, shohin_mei FROM shohin;
shohin_bunrui | shohin_mei
---------------+----------------
衣服 | Tシャツ
事務用品 | 穴あけパンチ
在Column中,也可以为其添加别名。如果使用日语,请使用双引号括起来。
# SELECT shohin_mei AS name, shohin_bunrui AS "分類" FROM shohin;
name | 分類
----------------+--------------
Tシャツ | 衣服
穴あけパンチ | 事務用品
カッターシャツ | 衣服
请提供一个独特的句子
您可以进行重复删除的搜索。
您也可以选择多列。
# SELECT DISTINCT shohin_bunrui FROM shohin;
shohin_bunrui
---------------
キッチン用品
衣服
事務用品
(3 rows)
哪里的句子
可以写出条件式。
SELECT ~ FROM ~ WHERE {条件式};
以下的例子是仅限于搜索商品分类列为“衣服”的数据。
# SELECT * FROM shohin WHERE shohin_bunrui='衣服';
shohin_id | shohin_mei | shohin_bunrui | hanbai_tanka | shiire_tanka | torokubi
-----------+----------------+---------------+--------------+--------------+------------
0001 | Tシャツ | 衣服 | 1000 | 500 | 2009-09-20
0003 | カッターシャツ | 衣服 | 4000 | 2800 |
(2 rows)
比较运算符
比較演算子内容 =等しい<>等しくない>=以上<=以下>より大きい<より小さい
逻辑运算符
当需要否定WHERE语句条件或使其多次匹配时使用。
# SELECT * FROM shohin WHERE shohin_bunrui='衣服' AND hanbai_tanka > 1000;
shohin_id | shohin_mei | shohin_bunrui | hanbai_tanka | shiire_tanka | torokubi
-----------+----------------+---------------+--------------+--------------+----------
0003 | カッターシャツ | 衣服 | 4000 | 2800 |
(1 row)
論理演算子内容AND複数条件に合致する場合ORいずれかの条件が合致する場合NOT条件に合致しない場合
参考书籍:请给出一种选项。
我在这本书中学习了很多。这本书是以PostgreSQL为主题,并且非常适合初学者的我。
数据的汇集
使用COUNT函数来计算记录数量。
在括号内指定列名时,指定的列的数据为NULL的记录将被排除。
# SELECT COUNT(*) FROM shohin;
count
-------
8
(1 row)
# SELECT COUNT(shiire_tanka) FROM shohin;
count
-------
6
(1 row)
使用SUM函数计算总和。
# SELECT SUM(shiire_tanka) FROM shohin;
sum
-------
12210
(1 row)
还有其他几个函数可进行数值计算。
関数内容COUNTレコード数SUM合計AVG平均MAX最大MIN最小
根据分类进行计数
使用GROUP BY句可以按类别进行汇总。
# SELECT shohin_bunrui, COUNT(*) FROM shohin GROUP BY shohin_bunrui;
shohin_bunrui | count
---------------+-------
キッチン用品 | 4
衣服 | 2
事務用品 | 2
(3 rows)
排序
你可以使用ORDER BY子句进行排序。
# SELECT * FROM shohin ORDER BY hanbai_tanka DESC;
shohin_id | shohin_mei | shohin_bunrui | hanbai_tanka | shiire_tanka | torokubi
-----------+----------------+---------------+--------------+--------------+------------
0006 | 圧力鍋 | キッチン用品 | 6800 | 5000 | 2009-09-20
0003 | カッターシャツ | 衣服 | 4000 | 2800 |
0004 | 包丁 | キッチン用品 | 3000 | 2800 | 2009-01-15
ソートキー内容ASC昇順で並べる。ソートキーを省略した場合は昇順となる。DESC降順で並べる。