📜  postgresql 中的多个表 (1)

📅  最后修改于: 2023-12-03 15:33:45.149000             🧑  作者: Mango

PostgreSQL中的多个表

在数据库设计中,我们往往需要拆分数据到多个表中以避免数据冗余、提高查询效率等问题。PostgreSQL是一个关系型数据库管理系统,支持多个表的创建、关联等操作,下面介绍一些在PostgreSQL中使用多个表的相关知识。

创建多个表

在PostgreSQL中可以使用CREATE TABLE命令创建多个表,命令格式如下:

CREATE TABLE table_name (
   column1 datatype1,
   column2 datatype2,
   column3 datatype3,
   .....
);

下面是一个创建多个表的例子:

CREATE TABLE customers (
   id INT PRIMARY KEY NOT NULL,
   name TEXT NOT NULL,
   age INT NOT NULL,
   email TEXT
);

CREATE TABLE orders (
   id INT PRIMARY KEY NOT NULL,
   customer_id INT NOT NULL,
   product_name TEXT NOT NULL,
   price FLOAT NOT NULL,
   FOREIGN KEY (customer_id) REFERENCES customers(id)
);

上面的例子中,创建了两个表:一个是customers表,包含idnameageemail字段;另一个是orders表,包含idcustomer_idproduct_nameprice字段,并通过FOREIGN KEY语句将customer_id字段关联到了customers表的id字段。

查询多个表

查询多个表时,我们通常需要使用JOIN关键字,将多个表连接起来。下面是一个查询customers表和orders表的例子:

SELECT customers.name, orders.product_name, orders.price 
FROM customers 
   INNER JOIN orders 
   ON customers.id = orders.customer_id;

上面的例子中,使用了INNER JOIN语句将customers表和orders表连接,连接条件是customers.id = orders.customer_id,然后查询了customers表的name字段和orders表的product_nameprice字段。

更新多个表

更新多个表时,也需要使用JOIN关键字将多个表连接起来。下面是一个更新customers表和orders表的例子:

UPDATE customers
   SET age = 30
FROM orders
WHERE customers.id = orders.customer_id 
   AND orders.price > 100;

上面的例子中,使用了FROM语句将orders表与customers表连接,连接条件是customers.id = orders.customer_id,然后更新了customers表的age字段,条件是orders.price > 100

删除多个表

删除多个表时,也需要使用JOIN关键字将多个表连接起来。下面是一个删除customers表和orders表数据的例子:

DELETE FROM customers
USING orders
WHERE customers.id = orders.customer_id 
   AND orders.price > 100;

上面的例子中,使用了USING语句将orders表与customers表连接,连接条件是customers.id = orders.customer_id,然后删除了customers表的数据,条件是orders.price > 100

以上就是在PostgreSQL中使用多个表的相关知识。