+ All Categories
Home > Documents > Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based...

Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based...

Date post: 12-Jul-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
40
Creating Tables, Defining Constraints Rose-Hulman Institute of Technology Curt Clifton
Transcript
Page 1: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Creating Tables, DefiningConstraintsRose-Hulman Institute of TechnologyCurt Clifton

Page 2: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Outline Data Types Creating and Altering Tables Constraints

Primary and Foreign Key Constraints Row and Tuple Checks

Generating Column Values Generating Scripts

Page 3: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Data Types

Page 4: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

System-supplied Data Types Numeric

Integer Exact numeric Approximate numeric Monetary

Date and Time Character and Unicode Character Binary Other

Slide based on MS-CreatingTables.ppt

Page 5: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

User-defined Data Types Simple, self-documenting short-hand Creating:

CREATE TYPE ssnFROM varchar(11) NOT NULL

Dropping: DROP TYPE ssn

Advanced use: C# objects

Page 6: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Guidelines for Data Types If Column Length Varies, Use a Variable

Data Type Use tinyint Appropriately For Numeric Data Types, Commonly Use

decimal Use money for Currency Do Not Use float or real as Primary Keys

Slide based on MS-CreatingTables.ppt

Page 7: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Creating and Altering Tables

Page 8: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Creating Tables Need:

Table name Column names and types

Basic Example: CREATE TABLE Soda(

name CHAR(20),manf CHAR(20)

);

Page 9: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Header Fixed Data NB VB Variable Data

NullBlock

VariableBlock

4 bytes

Data

How SQL Server Organizes Data

Slide based on MS-CreatingTables.ppt

A Single Data Row

Page 10: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Data rowTextText

PointerPointer

Root Structure

Intermediate Node Intermediate Node

block 1 block 2 block 1 block 2

Big @$$ Data

Slide based on MS-CreatingTables.ppt

Page 11: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Altering Tables Adding columns:

ALTER TABLE SodaADD msrp float;

Changing columns: ALTER TABLE Soda

ALTER COLUMN msrp money; Dropping columns:

ALTER TABLE SodaDROP COLUMN manf;

Page 12: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Dropping Tables DROP TABLE Soda;

Page 13: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Constraints A requirement on data elements or the

relationship between data elements that theDBMS is required to enforce

Page 14: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Kinds of Constraints Primary keys (entity integrity) Foreign keys (referential integrity) Attribute-based

Restrictions on the value of a single attribute Row-based

Restrictions on the value of one attribute in row based onvalue of other attributes

Assertions Later…

Page 15: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Specifying Primary Key Constraint Examples:

CREATE TABLE Soda (name CHAR(20) PRIMARY KEY,manf CHAR(20)

); CREATE TABLE Likes(

customer CHAR(30),soda CHAR(20),PRIMARY KEY(customer, soda)

);

Page 16: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Foreign Key Constraints Consider foreign keys in Sells relation…

Page 17: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Specifying Foreign Key Constraints CREATE TABLE Sells(

rest CHAR(20) REFERENCES Rest(name),soda CHAR(20) REFERENCES Soda(name),price money ); or

CREATE TABLE Sells(rest CHAR(20),soda CHAR(20),price money,FOREIGN KEY(rest) REFERENCES Rest(name),FOREIGN KEY(soda) REFERENCES Soda(name) );

Page 18: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Foreign Key Restriction Referenced attributes must be either:

PRIMARY KEY or else UNIQUE (another element constraint)

Page 19: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Enforcing Foreign-Key Constraints What changes to the SodaBase data might

break referential integrity?

Page 20: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Change to Table with Foreign Key How should we handle an insert or update to

the table with the foreign key that wouldbreak referential integrity?

Page 21: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Change to Table with Primary Key How should we handle an update or delete to

the table with the primary key that wouldbreak referential integrity?

Page 22: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

3 Solutions to Primary Key Change Reject!

This is the default Cascade

Make same change to foreign key Set null

Set foreign key to null

Page 23: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Example: Default Policy Suppose ‘Coke’ is referenced by Sells…

We attempt to delete ‘Coke’ from Soda table Rejected!

We attempt to update ‘Coke’ row, changing‘Coke’ to ‘Coca-Cola’ Rejected!

Forces Sells table to be changed first

Page 24: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Example: Cascade Policy Suppose we delete Coke row from Soda

Then automatically delete all rows for Coke fromSells

Suppose we update the Coke row, changing‘Coke’ to ‘Coca-Cola’ Then automatically change all rows in Sells

referencing Coke to reference Coca-Cola instead

Page 25: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Example: “Set Null” Policy Suppose we delete Coke row from Soda

Then automatically change all rows referencingCoke in Sells to have nulls

Suppose we update the Coke row, changing‘Coke’ to ‘Coca-Cola’ Then automatically change all rows in Sells

referencing Coke to have nulls

Page 26: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Choosing a Policy Can independently choose policy…

For update For delete

What policy should we use for… Deleting soda? Why? Updating soda name? Why?

Page 27: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Specifying a Policy Follow foreign-key declaration with:

[ON UPDATE {SET NULL | CASCADE}][ON DELETE {SET NULL | CASCADE}]

Omitted clause means default policy

Page 28: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Example CREATE TABLE Sells(

rest CHAR(20) REFERENCES Rest(name)ON DELETE CASCADEON UPDATE CASCADE,

soda CHAR(20) REFERENCES Soda(name)ON DELETE SET NULLON UPDATE CASCADE,

price money);

Page 29: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Attribute-based Checks Can constrain single attribute values Syntax:

CHECK( condition ) Condition can use:

Name of checked attribute Subqueries

Checked only upon insertion, update

Page 30: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Example CREATE TABLE Customer(

name CHAR(20) PRIMARY KEY,addr CHAR(50),phone CHAR(8) CHECK (phone LIKE

'[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'));

Page 31: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Same or Different? CREATE TABLE Sells (

rest CHAR(20),

soda CHAR(20) REFERENCES

Soda(name),

price money);

CREATE TABLE Sells (rest CHAR(20),

soda CHAR(20) CHECK ( soda IS NULL OR soda IN (SELECT name

FROM Soda)),

price money);

Page 32: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Row-Based Checks Can also put CHECK at end of table

declaration Can reference any attribute in table CHECK for each tuple…

Inserted or Updated

Page 33: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Example Only Joe’s can sell Coke for more than $2 CREATE TABLE Sells (

rest CHAR(20),soda CHAR(20),price money,CHECK( condition )

); What should condition be?

Page 34: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Generating Column Values Table identity columns Globally unique identifiers

Page 35: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Table Identity Column Constraint on single column of table Column must be integer or decimal data type Syntax:

IDENTITY [ (seed, increment) ] Example:

CREATE TABLE Users(name CHAR(20),id int IDENTITY (0, 5) );

Page 36: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Getting Last Identity Value Use @@identity in scripts INSERT INTO Users(name)

VALUE ('Molly');

SELECT 'Last identity used: ' +CONVERT(char, @@identity)

AS Answer;

Page 37: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

GUIDs Globally unique

identifiers Generated with newid()

function Used with DEFAULT

constraint

Page 38: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Example CREATE TABLE Household(

HouseholdID uniqueidentifierNOT NULL DEFAULT newid(),

…);

Page 39: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Generating Scripts Can generate scripts from objects

Right click database Tasks → Generate Scripts…

Useful for: Storing schemas in version control system Creating test environment Training

Page 40: Creating Tables, Defining Constraints · 2006-12-13 · How SQL Server Organizes Data Slide based on MS-CreatingTables.ppt A Single Data Row. Data row Text Pointer Root Structure

Recommended Practices Specify Appropriate Data Types and Data

Type Sizes (duh!) Always Specify Column Characteristics in

CREATE TABLE Generate Scripts to Recreate Database Objects

Slide based on MS-CreatingTables.ppt


Recommended