title=Databases: Data definition language
Data Definition Language (DDL) is a way to adjust the structure of a database. You might have created databases in the past using a GUI such as Access or even MySQL. DDL allows you to create databases from pure code including the ability to:
- Create tables: CREATE TABLE
- Change the structure of a table: ALTER
- Delete tables: DROP
You need to know what they all do (as listed above), though you only need to know how to implement the CREATE TABLE command. Let's look at how we could have made the crooks table above:
CREATE TABLE crooks ( ID INTEGER PRIMARY KEY, NAME VARCHAR(16), GENDER VARCHAR(6), DOB DATE, TOWN VARCHAR(20), NUMSCARS INTEGER )
CREATE TABLE customer ( CustomerID INTEGER PRIMARY KEY, CustomerName VARCHAR(16), Address VARCHAR(30), Postcode VARCHAR(8), Email VARCHAR(20) )
An ALTER statement in SQL changes the properties of a table in a relational database without the need to access the table manually.
ALTER TABLE crooks ADD convictions INTEGER ALTER TABLE crooks DROP COLUMN convictions
Dropping a table is like dropping a nuclear bomb. It is irreversible and is frowned upon in modern society.
DROP TABLE crooks
By running this line of code, the table "crooks" will be removed from the database with no chance of it being recovered unless backups have been previously made.
Setting Primary KeysEdit
Primary keys can be set after table creation via the alter statement.
ALTER TABLE Persons ADD PRIMARY KEY (id)
Primary keys can also be set during table creation
CREATE TABLE users ( user_id int NOT NULL, username varchar(255) NOT NULL, password varchar(255) NOT NULL, Address varchar(255), PRIMARY KEY (user_id) )
Setting Composite KeysEdit
To set a primary key made up of two columns during table creation you could do something such as this
CREATE TABLE users ( user_id int NOT NULL, username varchar(255) NOT NULL, password varchar(255) NOT NULL, Address varchar(255), CONSTRAINT pk_UserId PRIMARY KEY (user_id,username) )
Where the constraint name would be UserId and the table's primary key would be made up of the user_id and the username columns.
This could also be done after table creation:
ALTER TABLE users ADD CONSTRAINT pk_UserID PRIMARY KEY (user_id,username)
Setting Foreign KeysEdit
To set a foreign key or group of foreign keys during table creation, you could do something like this:
CREATE TABLE FoodProduct ( product_id int NOT NULL, product_name varchar(255) NOT NULL, ingredients varchar(1023) NOT NULL, allergen varchar(511) NOT NULL )
Where the primary key is "product_id" and all the other attributes are declared within the ( ) structure and are followed by a comma.