关于PostgreSQL的遗忘记录

首先

我将写下我对PostgreSQL学到的东西作为本次的输出。

以下为主要内容:
– 创建数据库
– 创建表格
– 删除表格
– 搜索
– 插入、删除、更新列(记录)
– 事务处理

我想要对这个事情进行说明。

创建DB

#CREATE DATEBASE データベース名;

这里的CREATE DATEBASE虽然用大写字母,但小写字母也适用。
在SOL中,我们使用分号(;)作为句子的结束标志。
也就是说,在执行某项操作时,如果没有分号,操作将不会被执行,所以需要注意。

创建表格

#CREATE TABLE テーブル名
(〈列名1〉〈データ型〉〈制約〉
〈列名2〉〈データ型〉〈制約〉
       ・
       ・
〈テーブルの制約1〉,〈テーブルの制約2〉,・・・・・);

创建样例

# CREATE TABLE Resister
(name VARCHAR(50) NOT NULL,
name2 CHAR(10) ,
age INTEGER NOT NULL ,
age2 INTEGER ,
PRIMARY KEY (name));
CREATE TABLE

最后一行的CREATE TABLE 表明表格已成功创建。

表头, 数据类型, 约束说明

列名

在这里,您可以输入用于分类数据的列名。
这次,我已经在注册表中添加了两种名称和两种年龄。

数据类型

INTEGER类型:具有整数的意义,正如其名称所示,可以存放整数。

CHAR类型:以固定长度字符串的格式存储字符串。详细解释一下,由于字符串是固定的,可能会出现空隙。关于空隙的产生方式将在插入部分进行解释。

VARCHAR类型:使用可变长度字符串的格式来存储字符串。当指定了这个数据类型时,字符串就会变成没有空间的形式。

DATE类型:用于指定日期等数据。

限制

在这里,我们对于要插入列的数据设置了一些限制,例如必须填入值的约束等。就像前面提到的例子中,就包括了NOT NULL约束等。如果将其设置为约束,那么空值(即没有任何值)就不可行,因此在插入时,如果空值,处理将不会执行。接下来,我将在插入的部分进行说明。

搜索

#SELECT 列名
FROM テーブル名;

执行示例
让我们来看一下刚才创建的Resister表

#SELECT age 
FROM Resister;
--実行結果
 age
-----
(0 rows)

这表示(0行)没有任何列的情况。

关于这个行的放置方式, 在插入的部分会进行解释。

另外

# SELECT *
FROM テーブル名;

使用此选项,可以输出所有列。

实施案例

# SELECT *
FROM Resister;
 name | name2 | age | age2
------+-------+-----+------
(0 rows)

使用AS来显示别名

使用WHERE条件进行筛选

计算

使用ORDER BY进行排序

在中文中,对于”行(レコード)的插入、删除、更新”,可以使用以下方式进行表述:

插入、删除、更新行(记录)。

接下来, 我们想要解释关于向表格中的行(记录)添加数据、删除数据和更新数据的部分。

插入行

#INSERT INTO テーブル名 (列1,列2,....)
VALUES ('列1に対応した値','列2に対応した値'.....);

插入到:表示插入
数值:表示值的意思

换句话说,您需要在要插入的表名列中放入相应的值。
此外,根据数据类型,将在VALUES之后的值用”(单引号)括起来与否决定。如果指定为字符类型(CHAR或VARCHAR)或日期类型(DATE),则使用”,如果指定为整数类型(INTEGER),则不使用”。

执行示例

#INSERT INTO Resister (name,name2,age,age2)
VALUES ('taro','hanako',20,30);

--実行後
INSERT 0 1

我们将尝试展示是否实际执行过。

# SELECT *
FROM Resister;

 name |   name2    | age | age2
------+------------+-----+------
 taro | hanako     |  20 |   30
(1 row)

以下是曾在上方执行的内容

# INSERT INTO Resister VALUES ('toro','',30,40);
INSERT 0 1

也可以通过以下方式来表达。
结果如下所示。

# SELECT *
FROM Resister;
 name |   name2    | age | age2
------+------------+-----+------
 taro | hanako     |  20 |   30
 toro |            |  30 |   40
(2 rows)

在这种情况下,name2将被赋予一个空值(NULL),这是因为没有给它设定NOT NULL约束。
相反,name具有NOT NULL约束,因此如果不输入任何值,它将无法执行。
此外,由于name的数据类型是可变长度字符串VARCHAR,因此没有空间可以用,
而name2的数据类型是固定长度字符串CHAR,因此存在空间。

删除行

如果想要删除特定行的话,可以使用以下方法:

# DELETE FROM テーブル名
WHERE 削除したい箇所の条件;

只需要一种选择: 进行删除。
另外,如果想要删除表内的所有数据,

#
# SELECT *
FROM Resister;
 name |   name2    | age | age2
------+------------+-----+------
 taro | hanako     |  20 |   30
 toro |            |  30 |   40
(2 rows)

我认为这一行已经被删除了。

# DELETE FROM Resister
WHERE name = 'toro';
# SELECT *
FROM Resister;
 name |   name2    | age | age2
------+------------+-----+------
 taro | hanako     |  20 |   30
(1 row)

删除表

如果您想要删除表本身。

#DROP TABLE テーブル名;

我将执行删除操作。

请注意,这将彻底删除表格本身,所以需要谨慎操作。

刷新

交易

填補

关于注释的事项

广告
将在 10 秒后关闭
bannerAds