banner



How To Add Primary Key In Sql After Creating Table

Summary: in this tutorial, we will show you what the primary key is and how to manage PostgreSQL primary key constraints through SQL statements.

A primary key is a column or a group of columns used to identify a row uniquely in a table.

You define primary keys through primary key constraints. Technically, a primary key constraint is the combination of a not-null constraint and a UNIQUE constraint.

A table can have one and only one primary key. It is a good practice to add a primary key to every table. When you add a primary key to a table, PostgreSQL creates a unique B-tree index on the column or a group of columns used to define the primary key.

Define primary key when creating the table

Normally, we add the primary key to a table when we define the table's structure using CREATE TABLE statement.

            

CREATE TABLE TABLE ( column_1 data_type PRIMARY KEY, column_2 data_type, … );

Code language: SQL (Structured Query Language) ( sql )

The following statement creates a purchase order (PO) header table with the name po_headers.

            

CREATE TABLE po_headers ( po_no INTEGER PRIMARY KEY, vendor_no INTEGER, description TEXT, shipping_address TEXT );

Code language: SQL (Structured Query Language) ( sql )

The po_no is the primary key of the po_headers table, which uniquely identifies purchase order in the po_headers table.

In case the primary key consists of two or more columns, you define the primary key constraint as follows:

            

CREATE TABLE TABLE ( column_1 data_type, column_2 data_type, … PRIMARY KEY (column_1, column_2) );

Code language: SQL (Structured Query Language) ( sql )

For example, the following statement creates the purchase order line items table whose primary key is a combination of purchase order number ( po_no) and line item number ( item_no).

            

CREATE TABLE po_items ( po_no INTEGER, item_no INTEGER, product_no INTEGER, qty INTEGER, net_price NUMERIC, PRIMARY KEY (po_no, item_no) );

Code language: SQL (Structured Query Language) ( sql )

If you don't specify explicitly the name for primary key constraint, PostgreSQL will assign a default name to the primary key constraint. By default, PostgreSQL uses table-name_pkey as the default name for the primary key constraint. In this example, PostgreSQL creates the primary key constraint with the name po_items_pkey for the po_items table.

In case you want to specify the name of the primary key constraint, you use CONSTRAINT clause as follows:

            

CONSTRAINT constraint_name PRIMARY KEY(column_1, column_2,...);

Code language: SQL (Structured Query Language) ( sql )

Define primary key when changing the existing table structure

It is rare to define a primary key for existing table. In case you have to do it, you can use the ALTER TABLE statement to add a primary key constraint.

            

ALTER TABLE table_name ADD PRIMARY KEY (column_1, column_2);

Code language: SQL (Structured Query Language) ( sql )

The following statement creates a table named products without defining any primary key.

            

CREATE TABLE products ( product_no INTEGER, description TEXT, product_cost NUMERIC );

Code language: SQL (Structured Query Language) ( sql )

Suppose you want to add a primary key constraint to the products table, you can execute the following statement:

            

ALTER TABLE products ADD PRIMARY KEY (product_no);

Code language: SQL (Structured Query Language) ( sql )

How to add an auto-incremented primary key to an existing table

Suppose, we have a vendors table that does not have any primary key.

            

CREATE TABLE vendors (name VARCHAR(255));

Code language: SQL (Structured Query Language) ( sql )

And we add few rows to the vendors table using INSERT statement:

            

INSERT INTO vendors (NAME) VALUES ('Microsoft'), ('IBM'), ('Apple'), ('Samsung');

Code language: SQL (Structured Query Language) ( sql )

To verify the insert operation, we query data from the vendors table using the following SELECT statement:

            

SELECT * FROM vendors;

Code language: SQL (Structured Query Language) ( sql )
vendors table

Now, if we want to add a primary key named id into the vendors table and the id field is auto-incremented by one, we use the following statement:

            

ALTER TABLE vendors ADD COLUMN ID SERIAL PRIMARY KEY;

Code language: SQL (Structured Query Language) ( sql )

Let's check the vendors table again.

            

SELECT id,name FROM vendors;

Code language: SQL (Structured Query Language) ( sql )
vendors table with primary key

Remove primary key

To remove an existing primary key constraint, you also use the ALTER TABLE statement with the following syntax:

            

ALTER TABLE table_name DROP CONSTRAINT primary_key_constraint;

Code language: SQL (Structured Query Language) ( sql )

For example, to remove the primary key constraint of the products table, you use the following statement:

            

ALTER TABLE products DROP CONSTRAINT products_pkey;

Code language: SQL (Structured Query Language) ( sql )

In this tutorial, you have learned how to add and remove primary key constraints using CREATE TABLE and ALTER TABLE statements.

Was this tutorial helpful ?

How To Add Primary Key In Sql After Creating Table

Source: https://www.postgresqltutorial.com/postgresql-primary-key/

Posted by: richardswhishour.blogspot.com

0 Response to "How To Add Primary Key In Sql After Creating Table"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel