CSCI 3410 -- Constraints

Clément Aubert

February 6, 2018


/*
 * Part I
 */

CREATE SCHEMA HW_CONSTRAINTS_PART1;
USE HW_CONSTRAINTS_PART1;

CREATE TABLE HURRICANE(
    Name VARCHAR(25) PRIMARY KEY,
    WindSpeed INT DEFAULT 76,
    Above VARCHAR(25)
);
--  WindSpeed INT CHECK (WindSpeed > 74 AND WindSpeed < 500),
    
CREATE TABLE STATE(
    Name VARCHAR(25) UNIQUE,
    Postal_abbr CHAR(2) NOT NULL
);

-- Adding a primary key:
ALTER TABLE STATE ADD PRIMARY KEY (Name); 

-- Adding a UNIQUE constraint
ALTER TABLE STATE ADD UNIQUE (Postal_abbr);

-- Drop the NOT NULL constraint
ALTER TABLE STATE MODIFY Postal_abbr CHAR(2);

-- Drop the UNIQUE constraint
ALTER TABLE STATE DROP INDEX Name;

-- Changing the default value
ALTER TABLE HURRICANE ALTER COLUMN WindSpeed SET DEFAULT 74;

--Adding a foreign key constraint
ALTER TABLE HURRICANE ADD FOREIGN KEY (Above) REFERENCES STATE(Name); 

/*
 *  Part II
 */

CREATE SCHEMA HW_CONSTRAINTS_PART2;
USE HW_CONSTRAINTS_PART2;

CREATE TABLE STORM(
    Name VARCHAR(25) PRIMARY KEY,
    Kind ENUM('Tropical Storm', 'Hurricane'),
    WindSpeed INT,
    Creation DATE
    );

-- Changing the enumerated datatype:
ALTER TABLE STORM MODIFY Kind ENUM('Tropical Storm', 'Hurricane', 'Typhoon');
    
CREATE TABLE STATE(
    Name VARCHAR(25) UNIQUE,
    Postal_abbr CHAR(2) PRIMARY KEY,
    Affected_by VARCHAR(25),
    FOREIGN KEY (Affected_by) REFERENCES STORM(Name)
        ON DELETE SET NULL
        ON UPDATE CASCADE
    );


/*
 *  Part III
 */

CREATE SCHEMA HW_CONSTRAINTS_PART3;
USE HW_CONSTRAINTS_PART3;

CREATE TABLE F_Key(
    Attribute VARCHAR(25) PRIMARY KEY
    );

CREATE TABLE Table_default(
    Attribute1 VARCHAR(25) PRIMARY KEY,
    Attribute2 VARCHAR(25),
    FOREIGN KEY (Attribute2) REFERENCES F_Key(Attribute)
    );

    
CREATE TABLE Table_restrict(
    Attribute1 VARCHAR(25) PRIMARY KEY,
    Attribute2 VARCHAR(25),
    FOREIGN KEY (Attribute2) REFERENCES F_Key(Attribute)
        ON DELETE RESTRICT
        ON UPDATE RESTRICT
    );
    
    
CREATE TABLE Table_cascade(
    Attribute1 VARCHAR(25) PRIMARY KEY,
    Attribute2 VARCHAR(25),
    FOREIGN KEY (Attribute2) REFERENCES F_Key(Attribute)
        ON DELETE CASCADE
        ON UPDATE CASCADE
    );
    
CREATE TABLE Table_set_null(
    Attribute1 VARCHAR(25) PRIMARY KEY,
    Attribute2 VARCHAR(25),
    FOREIGN KEY (Attribute2) REFERENCES F_Key(Attribute)
        ON DELETE SET NULL
        ON UPDATE SET NULL 
    );

Back ~ Code ~ Printable document