0% found this document useful (0 votes)
30 views

06 Creating Databases and Tables

The document provides information about creating databases and tables in SQL. It discusses data types, primary keys, foreign keys, and constraints. It explains that when creating tables, careful consideration should be given to choosing appropriate data types for columns. The CREATE statement is used to build new tables, with the ability to define columns, primary keys, foreign keys and other constraints. Examples are provided of CREATE syntax to establish a table's structure.

Uploaded by

hughston.musashi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views

06 Creating Databases and Tables

The document provides information about creating databases and tables in SQL. It discusses data types, primary keys, foreign keys, and constraints. It explains that when creating tables, careful consideration should be given to choosing appropriate data types for columns. The CREATE statement is used to build new tables, with the ability to define columns, primary keys, foreign keys and other constraints. Examples are provided of CREATE syntax to establish a table's structure.

Uploaded by

hughston.musashi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 116

Creating Databases

and Tables
SQL

● We’ve focused on querying and reading data from


existing databases and tables.
● Let’s now shift our focus to creating our own
databases and tables.
SQL

● Section Overview
○ Data Types
○ Primary and Foreign Keys
○ Constraints
○ CREATE
○ INSERT
○ UPDATE
○ DELETE, ALTER, DROP
SQL

● We first focus on learning a few theoretical concepts,


such as choosing the correct data type for a stored
value and setting possible constraints on it.
● We will also learn about primary and foreign keys.
Data Types
SQL

● We’ve already encountered a variety of data types,


let’s quickly review the main data types in SQL.
SQL

● Boolean
○ True or False
● Character
○ char, varchar, and text
● Numeric
○ integer and floating-point number
● Temporal
○ date, time, timestamp, and interval
SQL

● UUID
○ Universally Unique Identifiers
● Array
○ Stores an array of strings, numbers, etc.
● JSON
● Hstore key-value pair
● Special types such as network address and geometric
data.
SQL

● When creating databases and tables, you should


carefully consider which data types should be used for
the data to be stored.
● Review the documentation to see limitations of data
types:
● postgresql.org/docs/current/datatype.html
SQL

● For example
○ Imagine we want to store a phone number, should it
be stored as numeric?
○ If so, which type of numeric?
● We could take a look at the documentation for
options...
SQL

● For example
SQL

● Based on the limitations, you may think it makes sense


to store it as a BIGINT data type, but we should really
be thinking what is best for the situation.
● Why bother with numerics at all?
● We don’t perform arithmetic with numbers, so it
probably makes more sense as a VARCHAR data type
instead.
SQL

● In fact, searching for best practice online, you will


discover its usually recommended to store as a text
based data type due to a variety of issues
○ No arithmetic performed
○ Leading zeros could cause issues, 7 and 07 treated
same numerically, but are not the same phone
number
SQL

● When creating a database and table, take your time to


plan for long term storage
● Remember you can always remove historical
information you’ve decided you aren’t using, but you
can’t go back in time to add in information!
Primary and Foreign Keys
SQL

● A primary key is a column or a group of columns used


to identify a row uniquely in a table.
● For example, in our dvdrental database we saw
customers had a unique, non-null customer_id column
as their primary key.
SQL

● Primary keys are also important since they allow us to


easily discern what columns should be used for joining
tables together.
SQL

● Example of Primary Key


SQL

● Example of Primary Key


SQL

● Notice its integer based and unique


SQL

● Later we will learn about SERIAL data type


SQL

● A foreign key is a field or group of fields in a table that


uniquely identifies a row in another table.
● A foreign key is defined in a table that references to the
primary key of the other table.
SQL

● The table that contains the foreign key is called


referencing table or child table.
● The table to which the foreign key references is called
referenced table or parent table.
● A table can have multiple foreign keys depending on its
relationships with other tables.
SQL

● Recall in the dvdrental database payment table, each


payment row had its unique payment_id ( a primary
key) and identified the customer that made the payment
through the customer_id (a foreign key since it
references the customer table’s primary key)
SQL

● Example
SQL

● Primary Key for Payment Table


SQL

● Multiple Foreign Key References


SQL

● Note pgAdmin won’t alert you to FK


SQL

● You may begin to realize primary key and foreign key


typically make good column choices for joining
together two or more tables.
SQL

● When creating tables and defining columns, we can use


constraints to define columns as being a primary key,
or attaching a foreign key relationship to another table.
● Let’s quickly explore table properties in pgAdmin to
see how to get information on primary and foreign
keys!
Constraints
SQL

● Constraints are the rules enforced on data columns on


table.
● These are used to prevent invalid data from being
entered into the database.
● This ensures the accuracy and reliability of the data in
the database.
SQL

● Constraints can be divided into two main categories:


○ Column Constraints
■ Constrains the data in a column to adhere to
certain conditions.
○ Table Constraints
■ applied to the entire table rather than to an
individual column.
SQL

● The most common constraints used:


○ NOT NULL Constraint
■ Ensures that a column cannot have NULL value.
○ UNIQUE Constraint
■ Ensures that all values in a column are different.
SQL

● The most common constraints used:


○ PRIMARY Key
■ Uniquely identifies each row/record in a
database table.
○ FOREIGN Key
■ Constrains data based on columns in other tables.
SQL

● The most common constraints used:


○ CHECK Constraint
■ Ensures that all values in a column satisfy certain
conditions.
SQL

● The most common constraints used:


○ EXCLUSION Constraint
■ Ensures that if any two rows are compared on the
specified column or expression using the
specified operator, not all of these comparisons
will return TRUE.
SQL

● Table Constraints
○ CHECK (condition)
■ to check a condition when inserting or updating
data.
○ REFERENCES
■ to constrain the value stored in the column that
must exist in a column in another table.
SQL

● Table Constraints
○ UNIQUE (column_list)
■ forces the values stored in the columns listed
inside the parentheses to be unique.
○ PRIMARY KEY(column_list)
■ Allows you to define the primary key that
consists of multiple columns.
SQL

● Now that we understand data types, primary keys,


foreign keys, and constraints we are ready to begin
using SQL syntax to create tables!
CREATE
SQL

● Let’s now learn the syntax to create a table in SQL


using the CREATE keyword and column syntax.
SQL

● Full General Syntax


○ CREATE TABLE table_name (
column_name TYPE column_constraint,
column_name TYPE column_constraint,
table_constraint table_constraint
) INHERITS existing_table_name;
SQL

● Full General Syntax


○ CREATE TABLE table_name (
column_name TYPE column_constraint,
column_name TYPE column_constraint,
table_constraint table_constraint
) INHERITS existing_table_name;
SQL

● Full General Syntax


○ CREATE TABLE table_name (
column_name TYPE column_constraint,
column_name TYPE column_constraint,
table_constraint table_constraint
) INHERITS existing_table_name;
SQL

● Full General Syntax


○ CREATE TABLE table_name (
column_name TYPE column_constraint,
column_name TYPE column_constraint,
table_constraint table_constraint
) INHERITS existing_table_name;
SQL

● Full General Syntax


○ CREATE TABLE table_name (
column_name TYPE column_constraint,
column_name TYPE column_constraint,
table_constraint table_constraint
) INHERITS existing_table_name;
SQL

● Full General Syntax


○ CREATE TABLE table_name (
column_name TYPE column_constraint,
column_name TYPE column_constraint,
table_constraint table_constraint
) INHERITS existing_table_name;
SQL

● Full General Syntax


○ CREATE TABLE table_name (
column_name TYPE column_constraint,
column_name TYPE column_constraint,
table_constraint table_constraint
) INHERITS existing_table_name;
SQL

● Common Simple Syntax


○ CREATE TABLE table_name (
column_name TYPE column_constraint,
column_name TYPE column_constraint,
);
SQL

● Example Syntax
○ CREATE TABLE table_name (
column_name TYPE column_constraint,
column_name TYPE column_constraint,
);
SQL

● Example Syntax
○ CREATE TABLE players(
column_name TYPE column_constraint,
column_name TYPE column_constraint,
);
SQL

● Example Syntax
○ CREATE TABLE players(
column_name TYPE column_constraint,
column_name TYPE column_constraint,
);
SQL

● Example Syntax
○ CREATE TABLE players(
column_name TYPE column_constraint,
column_name TYPE column_constraint,
);
SQL

● Example Syntax
○ CREATE TABLE players(
player_id TYPE column_constraint,
column_name TYPE column_constraint,
);
SQL

● Example Syntax
○ CREATE TABLE players(
player_id TYPE column_constraint,
column_name TYPE column_constraint,
);
SQL

● Example Syntax
○ CREATE TABLE players(
player_id SERIAL column_constraint,
column_name TYPE column_constraint,
);
SQL

● SERIAL
○ In PostgreSQL, a sequence is a special kind of
database object that generates a sequence of
integers.
○ A sequence is often used as the primary key column
in a table.
SQL

● SERIAL
○ It will create a sequence object and set the next
value generated by the sequence as the default value
for the column.
○ This is perfect for a primary key, because it logs
unique integer entries for you automatically upon
insertion.
SQL

● SERIAL
○ If a row is later removed, the column with the
SERIAL data type will not adjust, marking the fact
that a row was removed from the sequence, for
example
■ 1,2,3,5,6,7
● You know row 4 was removed at some point
SQL

● SERIAL
SQL

● SERIAL
SQL

● Example Syntax
○ CREATE TABLE players(
player_id SERIAL column_constraint,
column_name TYPE column_constraint,
);
SQL

● Example Syntax
○ CREATE TABLE players(
player_id SERIAL column_constraint,
column_name TYPE column_constraint,
);
SQL

● Example Syntax
○ CREATE TABLE players(
player_id SERIAL PRIMARY KEY,
column_name TYPE column_constraint,
);
SQL

● Example Syntax
○ CREATE TABLE players(
player_id SERIAL PRIMARY KEY,
column_name TYPE column_constraint,
);
SQL

● Example Syntax
○ CREATE TABLE players(
player_id SERIAL PRIMARY KEY,
age TYPE column_constraint,
);
SQL

● Example Syntax
○ CREATE TABLE players(
player_id SERIAL PRIMARY KEY,
age TYPE column_constraint,
);
SQL

● For example
SQL

● For example
SQL

● Example Syntax
○ CREATE TABLE players(
player_id SERIAL PRIMARY KEY,
age TYPE column_constraint
);
SQL

● Example Syntax
○ CREATE TABLE players(
player_id SERIAL PRIMARY KEY,
age SMALLINT column_constraint
);
SQL

● Example Syntax
○ CREATE TABLE players(
player_id SERIAL PRIMARY KEY,
age SMALLINT column_constraint
);
SQL

● Example Syntax
○ CREATE TABLE players(
player_id SERIAL PRIMARY KEY,
age SMALLINT NOT NULL
);
SQL

● Example Syntax
○ CREATE TABLE players(
player_id SERIAL PRIMARY KEY,
age SMALLINT NOT NULL
);
SQL

● Let’s explore some examples in pgAdmin!


INSERT
SQL

● INSERT allows you to add in rows to a table.


● General Syntax
○ INSERT INTO table (column1, column2, …)
VALUES
(value1, value2, …),
(value1, value2, …) ,...;
SQL

● INSERT allows you to add in rows to a table.


● Syntax for Inserting Values from another table:
○ INSERT INTO table(column1,column2,...)
SELECT column1,column2,...
FROM another_table
WHERE condition;
SQL

● Keep in mind, the inserted row values must match up


for the table, including constraints.
● SERIAL columns do not need to be provided a value.
● Let’s use INSERT in pgAdmin!
UPDATE
SQL

● The UPDATE keyword allows for the changing of


values of the columns in a table.
SQL

● General Syntax
○ UPDATE table
SET column1 = value1,
column2 = value2 ,...
WHERE
condition;
SQL

● Example
○ UPDATE account
SET last_login = CURRENT_TIMESTAMP
WHERE last_login IS NULL;
SQL

● Reset everything without WHERE condition


○ UPDATE account
SET last_login = CURRENT_TIMESTAMP
SQL

● Set based on another column


○ UPDATE account
SET last_login = created_on
SQL

● Using another table’s values (UPDATE join)


○ UPDATE TableA
SET original_col = TableB.new_col
FROM tableB
WHERE tableA.id = TableB.id
SQL

● Return affected rows


○ UPDATE account
SET last_login = created_on
RETURNING account_id,last_login
SQL

● Let’s explore this further in pgAdmin!


DELETE
SQL

● We can use the DELETE clause to remove rows from a


table.
● For example:
○ DELETE FROM table
WHERE row_id = 1
SQL

● We can delete rows based on their presence in other


tables
● For example:
○ DELETE FROM tableA
USING tableB
WHERE tableA.id=TableB.id
SQL

● We can delete all rows from a table


● For example:
○ DELETE FROM table
SQL

● Similar to UPDATE command, you can also add in a


RETURNING call to return rows that were removed.
● Let’s explore DELETE with pgAdmin!
ALTER
SQL

● The ALTER clause allows for changes to an existing


table structure, such as:
○ Adding,dropping,or renaming columns
○ Changing a column’s data type
○ Set DEFAULT values for a column
○ Add CHECK constraints
○ Rename table
SQL

● General Syntax
○ ALTER TABLE table_name action
SQL

● Adding Columns
○ ALTER TABLE table_name
ADD COLUMN new_col TYPE
SQL

● Removing Columns
○ ALTER TABLE table_name
DROP COLUMN col_name
SQL

● Alter constraints
○ ALTER TABLE table_name
ALTER COLUMN col_name
SET DEFAULT value
SQL

● Alter constraints
○ ALTER TABLE table_name
ALTER COLUMN col_name
DROP DEFAULT
SQL

● Alter constraints
○ ALTER TABLE table_name
ALTER COLUMN col_name
SET NOT NULL
SQL

● Alter constraints
○ ALTER TABLE table_name
ALTER COLUMN col_name
DROP NOT NULL
SQL

● Alter constraints
○ ALTER TABLE table_name
ALTER COLUMN col_name
ADD CONSTRAINT constraint_name
SQL

● Let’s explore some examples in pgAdmin!


DROP
SQL

● DROP allows for the complete removal of a column in


a table.
● In PostgreSQL this will also automatically remove all
of its indexes and constraints involving the column.
● However, it will not remove columns used in views,
triggers, or stored procedures without the additional
CASCADE clause.
SQL

● General Syntax
○ ALTER TABLE table_name
DROP COLUMN col_name
SQL

● Remove all dependencies


○ ALTER TABLE table_name
DROP COLUMN col_name CASCADE
SQL

● Check for existence to avoid error


○ ALTER TABLE table_name
DROP COLUMN IF EXISTS col_name
SQL

● Drop multiple columns


○ ALTER TABLE table_name
DROP COLUMN col_one,
DROP COLUMN col_two
SQL

● Let’s see a quick example in pgAdmin!


CHECK
SQL

● The CHECK constraint allows us to create more


customized constraints that adhere to a certain
condition.
● Such as making sure all inserted integer values fall
below a certain threshold.
SQL

● General Syntax
○ CREATE TABLE example(
ex_id SERIAL PRIMARY KEY,
age SMALLINT CHECK (age > 21),
parent_age SMALLINT CHECK ( parent_age >
age)
);
SQL

● Let’s explore this concept in pgAdmin!

You might also like