关于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 テーブル名;
我将执行删除操作。
请注意,这将彻底删除表格本身,所以需要谨慎操作。