A Primary Key is a column (or a set of columns) that uniquely identifies each row in a table. It cannot contain NULL values, and each value must be unique. Each table can only have one primary key.
SQL Primary Key Syntax
When creating a table:
CREATE TABLE table_name ( column1 datatype PRIMARY KEY, column2 datatype );
For composite keys (multiple columns):
CREATE TABLE table_name ( column1 datatype, column2 datatype, PRIMARY KEY (column1, column2) );
SQLite does not support dropping primary keys directly using
ALTER TABLE
.
SQL Primary Key Example
SQL Primary Key on Create Table
This query sets up a table to store medical records with a unique record_id.
CREATE TABLE Records_Log ( record_id INTEGER PRIMARY KEY, patient_id INTEGER, notes TEXT );

This query shows how to create a composite primary key using two columns.
CREATE TABLE Appointment_Log ( patient_id INTEGER, doctor_id INTEGER, PRIMARY KEY (patient_id, doctor_id) );

SQL Primary Key on Alter Table
SQLite only supports adding a column using ALTER TABLE, but it doesn’t allow adding a primary key to an existing table. If you need to add a primary key to an existing table, you can follow this process:
This query creates a new table with a primary key:
CREATE TABLE NewPatients ( patient_id INTEGER PRIMARY KEY, first_name TEXT, last_name TEXT );
This query copies the data from the old table into the new one:
INSERT INTO NewPatients (patient_id, first_name, last_name) SELECT patient_id, first_name, last_name FROM Patients;
Then, you would drop the original table and rename the new one:
DROP TABLE Patients; ALTER TABLE NewPatients RENAME TO Patients;

SQL Primary Key Drop a Primary Key Constraint Example
SQLite does not support dropping a primary key using ALTER TABLE DROP CONSTRAINT. However, this is how it would normally look in standard SQL (like MySQL or SQL Server):
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
In SQLite, use the same workaround approach as above:
- Create a new version of the table without the primary key.
- Copy the data into it.
- Drop the old table.
- Rename the new one to match the original.