操作PostgreSQL的表格
关于PostgreSQL表操作的简要说明。
这次我们会在hoge数据库中创建一个customer表,并插入顾客信息进去。
以下是3位顾客的信息。
制作桌子的底座
首先,我们将在hogeDB中创建customer表。
为了使程序在分号之前执行,按照列进行行拆分是一条规则,使其易于阅读。
要将上述表格嵌入到表格中,可使用以下的代码。接下来,逐行解释这段代码。
hoge=# CREATE TABLE Customer
hoge-# (id char(4) NOT NULL,
hoge(# name varchar NOT NULL,
hoge(# age INTEGER ,
hoge(# PRIMARY KEY (id));
CREATE TABLE
创建表的声明(第一行)
首先,在<表名>中创建表的声明。
CREATE TABLE Customer
对于第2至第4行的列设置
因为本次的列是ID、姓名和年龄,所以接下来我会分别对每个列进行简洁明了的一行描述。
作为书写方式,可以使用<列> <类型> <约束>。每个列之间用逗号分隔。
[身份证列]
id被固定为4个字符长度的char型,并且作为主键,所以在约束部分包含了NOT NULL以防止空白。
id char(4) NOT NULL,
[姓名栏]
根据可变字符长度的varchar类型指定name,并且不能为空格,所以不能为NULL。
name varchar NOT NULL,
【年龄栏】
年龄设置为整数并且没有任何限制(允许为空插入)。
age INTEGER ,
设置主键(第5行)
由于关系型数据库的概念被破坏,所以要确保明确指定主键。写法是PRIMARY KEY (<主键>)。
PRIMARY KEY (id)
以上就是桌子底座设置完成了。
确认桌子的底座
可以使用psql的\d命令来确认是否已经创建了刚刚制作的customer表。
hoge=# \d
List of relations
Schema | Name | Type | Owner
--------+----------+-------+-------------
public | customer | table | sf213471118
(1 row)
在桌子上插入记录
插入唱片有两种方法。
如果要指定列名进行插入的话
如果有空白的部分或者需要改变顺序,这会更加方便。
年龄栏未填写的这条记录可以这样描述。
hoge=# INSERT INTO Customer(id, name)
VALUES('0002','中村花子');
INSERT 0 1
如果进行相应的处理,交换顺序也没问题。
hoge=# INSERT INTO Customer(name, id)
VALUES('加藤里子',`8888`);
如果省略列名插入的话
当想要插入所有的值时,这是很方便的。
虽然这样更轻松,但必须按顺序逐个进行赋值。
hoge=# INSERT INTO Customer VALUES('0003','佐藤信之',91);
INSERT 0 1
查看桌子里面的内容
由于已经插入了所有客户记录,因此可以使用SQL语句进行确认。
使用SELECT FROM
;就可以了。这次我们想要查看列表,所以将column设为*。hoge=# SELECT * FROM Customer;
更新表格记录以下是插入记录的示例:
id | name | age
------+----------+-----
0001 | 山田太郎 | 29
0002 | 中村花子 |
0003 | 佐藤信之 | 91
(3 rows)
如果想要进行此类更改
以以下方式描述。UPDATE <Table name> SET <column> = 'xxxxx' WHERE <Primary Key> ='vvvv';
首先,将中村花子更改为坂井花子。
hoge=# UPDATE Staff SET name = '坂井花子' WHERE id ='0002';
有关此事已得到更新。同样,将age的值从NULL更改为49试一试。
UPDATE 1
hoge=# UPDATE Staff SET age = 49 WHERE id ='0002';
在这一系列的过程中,我们先初步确认一下这张桌子。
UPDATE 1
hoge=# SELECT * FROM Customer;
已完成以上任务。注意事项如果使用UPDATE时不指定WHERE = ‘vvvv’,则会导致列中的所有内容都被更改。试验案例:
id | name | age
------+----------+-----
0001 | 山田太郎 | 29
0003 | 佐藤信之 | 91
0002 | 坂井花子 | 49
hoge=# UPDATE Staff SET age = 49;
实施结果:
hoge=# SELECT * FROM Customer;
尽管将整个记录的列设置为相同的值似乎很方便,但似乎不会被使用。删除数据删除数据有两种方式,一种是删除指定的记录,另一种是删除全部行。使用DELETE命令可以进行数据删除操作。
id | name | age
------+----------+-----
0001 | 山田太郎 | 49
0003 | 佐藤信之 | 49
0002 | 坂井花子 | 49
DELETE FROM <Table name> WHERE <Primary Key> = 'vvvv';
实际上删除以下记录
hoge=# DELETE FROM Customer WHERE id='0003';
我能确认它已经被彻底删除了。【注意事项】和UPDATE类似,当使用DELETE时,如果不使用WHERE = ‘vvvv’进行指定,将会删除所有记录(导致表变为空)。删除表格如果要删除表本身,请使用DROP TABLE命令。
DELETE 1
hoge=# SELECT * FROM Customer;
id | name | age
------+----------+-----
0001 | 山田太郎 | 29
0002 | 坂井花子 | 49
(2 rows)
DROP TABLE <Table name>;
我們試著刪除這個Customer表。現在的表格內容如下:
hoge=# \d
在这个状态下删除表。
List of relations
Schema | Name | Type | Owner
--------+----------+-------+-------------
public | customer | table | sf213471118
(1 row)
hoge=# DROP TABLE Customer;
可以尝试确认是否已被\d删除。
DROP TABLE
hoge=# \d
能够确认已经彻底删除了。
Did not find any relations.
ID | name | age |
---|---|---|
0002 | 中村花子 | – |
ID | name | age |
0002 | 坂井花子 | 49 |
ID | name | age |
0003 | 佐藤信之 | 91 |