creating tables, defining constraints · 2006-12-13 · how sql server organizes data slide based...
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/1.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/2.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/3.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/4.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/5.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/6.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/7.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/8.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/9.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/10.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/11.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/12.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/13.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/14.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/15.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/16.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/17.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/18.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/19.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/20.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/21.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/22.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/23.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/24.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/25.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/26.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/27.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/28.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/29.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/30.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/31.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/32.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/33.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/34.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/35.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/36.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/37.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/38.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/39.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022043022/5f3dde0a78941d32ac755a86/html5/thumbnails/40.jpg)
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