Oracle SQL Developer
Essentials
TABLES AND INDEXES
BASIC CREATE TABLE SYNTAX
CREATE TABLE courses
(
department_code VARCHAR2(2) NOT NULL,
course_number NUMBER(3,0) NOT NULL,
course_title VARCHAR2(64) NOT NULL,
course_description VARCHAR2(512) NOT NULL,
credits NUMBER(3,1) NOT NULL,
CONSTRAINT pk_coursesPRIMARY KEY (department_code, course_number),
CONSTRAINT fk_courses_department_code FOREIGN KEY
(department_code) REFERENCES departments (department_code)
CONSTRAINT ck_courses_course_number CHECK (course_numberBETWEEN 100 AND 999)
)
TABLESPACE users
PCTFREE 75;
• Column Naming rules
1. 30 characters maximum
2. Names must be unique withing a table
3. Names can be reused in other table
• Number of columns per table
1. Maximum of 1000 columns
2. Over 255 columns result in row chaining
Column Definition Rules
• Minimum Information
1. Names and datatypes must be specified
2. Null and default clauses are optional
CREATE TABLE students
(
student_id NUMBER(6) NOT NULL,
first_name VARCHAR2(30) NOT NULL,
last_name VARCHAR2(30) NOT NULL,
email_address VARCHAR2(128) NOT NULL,
phone VARCHAR2(20) NULL,
city VARCHAR2(30),
state VARCHAR2(2) ,
status_code VARCHAR2(1) DEFAULT ‘A’ NOT NULL,
CONSTRAINT pk_studentsPRIMARY KEY (student_id)
);
Null column values
If not specified , default it will accept null values
CREATE TABLE orders
(
order_id NUMBER(10) NOT NULL,
order_date DATE NOT NULL,
customer_id NUMBER(10) NOT NULL,
subtotal NUMBER(10,2),
tax NUMBER(10,2),
shipping NUMBER(10,2),
grand_total NUMBER(10,2)
AS (subtotal + tax + shipping) VIRTUAL
);
Virtual Column
• Virtual columns are not stored in physical disk space
• You cannot perform insert or update operation on virtual column
• Value is computed in the result set of the query
• Cannot insert or update virtual columns
• Can only make use of columns in the same
table
• Index can be created over virtual column
values
CREATE TABLE students
(
student_id NUMBER(6) NOT NULL,
first_name VARCHAR2(30) NOT NULL,
last_name VARCHAR2(30) NOT NULL,
email_address VARCHAR2(128) NOT
NULL,
phone VARCHAR2(20) NULL,
city VARCHAR2(30) NULL,
state VARCHAR2(2) NULL,
CONSTRAINT pk_students PRIMARY
KEY (student_id)
);
Primary Key
• Primary Key Types
1. Natural Key
- Combination of naturally occurring
columns that forms a unique key
2. Surrogate Key
- A unique value is generated for each
row
• Uniquely Identifies each rows in a column
• Can be defined over one or more column
• Cannot contain a null value in primary key
column
CREATE TABLE courses
(
department_code VARCHAR2(2) NOT
NULL,
course_number NUMBER(3,0) NOT NULL,
course_title VARCHAR2(64) NOT NULL,
course_description VARCHAR2(512) NOT
NULL,
credits NUMBER(3,1) NOT NULL,
CONSTRAINT pk_courses
PRIMARY KEY (department_code,
course_number)
);
Primary Key Using constraint clause
Adding Primary Key to an Existing table
ALTER TABLE courses
CONSTRAINT pk_courses
ADD PRIMARY KEY (department_code,
course_number);
SQL> SELECT rowid, zip_code, city, state
2 FROM zip_codes;
ROWID ZIP_C CITY ST
----------------------- --------------------------------
AAAXoNAAGAAAJzeAAA11201 Brooklyn NY
AAAXoNAAGAAAJzeAAB75201 Dallas TX
AAAXoNAAGAAAJzeAAC80401 Golden CO
AAAXoNAAGAAAJzeAAD92101 San Diego CA
Oracle ROWID
It is not intended to use ROWID as a
replacement for primary key.
Foreign Key
Foreign Key Continues…
CREATE TABLE courses
(
department_code VARCHAR2(2) NOT NULL,
course_number NUMBER(3,0) NOT NULL,
course_title VARCHAR2(64) NOT NULL,
course_description VARCHAR2(512) NOT NULL,
credits NUMBER(3,1) NOT NULL,
CONSTRAINT pk_courses
PRIMARY KEY (department_code,
course_number),
C O N S T R A I N T
f k _ c o u r s e s _ d e p a r t m e n t _ c o d e
F O R E I G N K E Y (d e p a r t m e n t _ c o d e )
R E F E R E N C E S d e p a r t m e n t s
(d e p a r t m e n t _ c o d e ) ,
);
Add a Foreign Key to an Existing Table
ALTER TABLE courses
CONSTRAINT fk_courses_department_code
ADD FOREIGN KEY (department_code)
REFERENCES departments
(department_code);
On Delete Cascade
CREATE TABLE courses
(
department_code VARCHAR2(2) NOT NULL,
course_number NUMBER(3,0) NOT NULL,
course_title VARCHAR2(64) NOT NULL,
course_description VARCHAR2(512) NOT NULL,
credits NUMBER(3,1) NOT NULL,
CONSTRAINT pk_courses
PRIMARY KEY (department_code, course_number),
CONSTRAINT fk_courses_department_code FOREIGN KEY (department_code) REFERENCES
departments (department_code) ON DELETE CASCADE
);
Creating foreign key with ON DELETE CASCADE
In Case of ON DELETE CASCADE, if you delete any primary key in
parent table, it will delete the corresponding record from the
child table automatically.
On Delete Cascade continues …
DELETE FROM courses WHERE department_code= ‘PH’;
DELETE FROM departments WHERE department_code= ‘PH’;
COMMIT;
Deleting without ON DELETE CASCADE
To delete a primary key value, no child records can exist
DEFERRED CONSTRAINT
CREATE TABLE courses
(
department_code VARCHAR2(2) NOT NULL,
course_number NUMBER(3,0) NOT NULL,
course_title VARCHAR2(64) NOT NULL,
course_description VARCHAR2(512) NOT NULL,
credits NUMBER(3,1) NOT NULL,
CONSTRAINT pk_courses PRIMARY KEY (department_code, course_number),
CONSTRAINT fk_courses_department_code FOREIGN KEY (department_code)
REFERENCES departments (department_code) DEFERRABLE
INITIALLY IMMEDIATE
-- INITIALLY DEFERRABLE
);
Creating foreign key with DEFERRED CONSTRAINT
This way we can tell oracle to defer enforcing the constraint until
the transaction is commited not as soon as statement is
executed.
DEFERRED CONSTRAINT continues …
CREATE TABLE courses
(
department_code VARCHAR2(2) NOT NULL,
course_number NUMBER(3,0) NOT NULL,
course_title VARCHAR2(64) NOT NULL,
course_description VARCHAR2(512) NOT NULL,
credits NUMBER(3,1) NOT NULL,
CONSTRAINT pk_courses PRIMARY KEY (department_code, course_number),
CONSTRAINT fk_courses_department_code FOREIGN KEY (department_code)
REFERENCES departments (department_code) DEFERRABLE
INITIALLY IMMEDIATE
);
DEFERRED CONSTRAINT with INITIALLY IMMEDIATE
If we use INITIALLY IMMEDIATE, we tell the oracle to enforce the
constraint at statement level like Normal unless we specifically
instruct the oracle to defer checking of the constraint inside of
our transaction.
DEFERRED CONSTRAINT continues …
CREATE TABLE courses
(
department_code VARCHAR2(2) NOT NULL,
course_number NUMBER(3,0) NOT NULL,
course_title VARCHAR2(64) NOT NULL,
course_description VARCHAR2(512) NOT NULL,
credits NUMBER(3,1) NOT NULL,
CONSTRAINT pk_courses PRIMARY KEY (department_code, course_number),
CONSTRAINT fk_courses_department_code FOREIGN KEY (department_code)
REFERENCES departments (department_code) DEFERRABLE
INITIALLY DEFERRABLE
);
DEFERRED CONSTRAINT with INITIALLY DEFERRABLE
If we use INITIALLY DEFERRABLE, we tell the oracle to enforce the
constraint until the transaction commits.
DEFERRED CONSTRAINT continues …
set constraint fk_courses_depatment_code deferred;
UPDATE departments
SET department_code = ‘CO’
WHERE department_code = ‘CS’;
UPDATE courses
SET department_code = ‘CO’
WHERE department_code = ‘CS’;
COMMIT;
Using DEFERRED CONSTRAINT
Check Constraints
CREATE TABLE courses
(
department_code VARCHAR2(2) NOT NULL,
course_number NUMBER(3,0) NOT NULL,
course_title VARCHAR2(64) NOT NULL,
course_description VARCHAR2(512) NOT NULL,
credits NUMBER(3,1) NOT NULL,
CONSTRAINT pk_courses PRIMARY KEY (department_code, course_number),
CONSTRAINT fk_courses_department_code
FOREIGN KEY (department_code) REFERENCES departments (department_code),
CONSTRAINT ck_courses_course_number CHECK (course_number BETWEEN 100 AND 999)
);
Check Constraints continues …
CREATE TABLE states
(
state_code VARCHAR2(2) NOT NULL,
state_name VARCHAR2(30) NOT NULL,
region VARCHAR2(2) NOT NULL,
CONSTRAINT pk_states PRIMARY KEY (state_code),
CONSTRAINT ck_state_regions
CHECK (region IN (‘NE’, ‘SE’, ‘MW’, ‘SC’, ‘NW’, ‘SW’))
);
To Check if a value is within a range
Check Constraints continues …
CREATE TABLE students
(
student_id NUMBER(6) NOT NULL,
first_name VARCHAR2(30) NOT NULL,
last_name VARCHAR2(30) NOT NULL,
email_address VARCHAR2(128) NOT NULL,
likes_ice_cream NUMBER(1) NULL,
CONSTRAINT pk_students PRIMARY KEY (student_id),
CONSTRAINT ck_studens_ice_cream
CHECK (likes_ice_cream IN (0,1))
);
To emulate a Boolean column
Check Constraints continues …
CREATE TABLE zip_codes
(
zip_code VARCHAR2(5) NOT NULL,
city VARCHAR2(30) NOT NULL,
state_code VARCHAR2(30) NOT NULL,
CONSTRAINT pk_codes
PRIMARY KEY (state_code),
CONSTRAINT ck_zip_code_format
CHECK (REGEXP_LIKE (zip_code, '^[0-9]{5}$') )
);
Validate Format Using a Regular Expression
Add a Constraint to an Existing Table
ALTER TABLE zip_codes
ADD CONSTRAINT ck_zip_codes_format
CHECK (REGEXP_LIKE (zip_code, '^[0-9]{5}$') );
Disabling and Enabling Constraints
ALTER TABLE courses
DISABLE CONSTRAINT fk_courses_department_code;
Disabling a constraint
Enabling a constraint
ALTER TABLE courses
ENABLE CONSTRAINT fk_courses_department_code;
Check Constraints continues …
CREATE TABLE zip_codes
(
zip_code VARCHAR2(5) NOT NULL,
city VARCHAR2(30) NOT NULL,
state_code VARCHAR2(30) NOT NULL,
CONSTRAINT pk_codes
PRIMARY KEY (state_code),
CONSTRAINT ck_zip_code_format
CHECK (REGEXP_LIKE (zip_code, '^[0-9]{5}$') )
);
Validate Format Using a Regular Expression
Add a Constraint to an Existing Table
ALTER TABLE zip_codes
ADD CONSTRAINT ck_zip_codes_format
CHECK (REGEXP_LIKE (zip_code, '^[0-9]{5}$') );
Table Storage Options
Oracle stores the tables and views in Database blocks
A Database block is like a shipping container
Table Storage Options
What is a block ?
Block Header
• Block type information
• Object assignment
• Row directory
Row
• Actual data in our tabe
Free space
• Allows for updates to rows.
Table Storage Options
How Oracle Performs Data Access Operation ?
1. Full Table Scan
2. Index operation with Row Lookup.
Full Table Scan
• Oracle scans through every block in the table
• Comparable to a linear search in an array
Table Storage Options
Index Operation with Row lookup
Table Storage Options
Table Data and Sort Order
Data in a table has no implied order.
• Oracle will insert the row wherever they fits
• Physical order in disk != Order data was inserted.
Data returned from queries is not sorted
• Order of results is not order data was returned
• Two different executions can return same results in different
order.
Table Storage Options
Tablespace Introductions
Table Storage Options
Tablespace Block Size
Row Chaining is when a row in table is so long that it will not fit in a single data block.
So oracle has to chain the row and store it in two or more data block.
It increases the amount of IO operation while performing database o/p.
Table Storage Options
Segment space management
Table Storage Options
Oracle Contains Multiple Tablespaces
• Every user has a Default
tablespace
• Some objects may be
created in and alternate
tablespace
Table Storage Options
Specifying a tablespace for a table
CREATE TABLE course_enrollments
(
course_enrollment_id NUMBER NOT NULL,
course_offering_id NUMBER(20) NOT NULL,
student_id NUMBER(10) NOT NULL,
grade_code VARCHAR2(1) NULL,
CONSTRAINT pk_course_enrollments PRIMARY KEY (course_enrollment_id),
CONSTRAINT fk_enrollments_offerings
FOREIGN KEY (course_offering_id) REFERENCES course_offerings(course_offering_id),
CONSTRAINT fk_enrollments_student
FOREIGN KEY (student_id) REFERENCES students (student_id),
CONSTRAINT fk_enrollments_grades FOREIGN KEY (grade_code) REFERENCES grades
(grade_code)
)
TABLESPACE student_data;
Table Storage Options
High Water Mark
Highest numbered block that has ever contained data in a table
• For a newly created table, the block is at the left of the table because no data has
ever been inserted into the table.

Oracle sql developer essentials

  • 1.
  • 2.
    BASIC CREATE TABLESYNTAX CREATE TABLE courses ( department_code VARCHAR2(2) NOT NULL, course_number NUMBER(3,0) NOT NULL, course_title VARCHAR2(64) NOT NULL, course_description VARCHAR2(512) NOT NULL, credits NUMBER(3,1) NOT NULL, CONSTRAINT pk_coursesPRIMARY KEY (department_code, course_number), CONSTRAINT fk_courses_department_code FOREIGN KEY (department_code) REFERENCES departments (department_code) CONSTRAINT ck_courses_course_number CHECK (course_numberBETWEEN 100 AND 999) ) TABLESPACE users PCTFREE 75;
  • 3.
    • Column Namingrules 1. 30 characters maximum 2. Names must be unique withing a table 3. Names can be reused in other table • Number of columns per table 1. Maximum of 1000 columns 2. Over 255 columns result in row chaining Column Definition Rules • Minimum Information 1. Names and datatypes must be specified 2. Null and default clauses are optional
  • 4.
    CREATE TABLE students ( student_idNUMBER(6) NOT NULL, first_name VARCHAR2(30) NOT NULL, last_name VARCHAR2(30) NOT NULL, email_address VARCHAR2(128) NOT NULL, phone VARCHAR2(20) NULL, city VARCHAR2(30), state VARCHAR2(2) , status_code VARCHAR2(1) DEFAULT ‘A’ NOT NULL, CONSTRAINT pk_studentsPRIMARY KEY (student_id) ); Null column values If not specified , default it will accept null values
  • 5.
    CREATE TABLE orders ( order_idNUMBER(10) NOT NULL, order_date DATE NOT NULL, customer_id NUMBER(10) NOT NULL, subtotal NUMBER(10,2), tax NUMBER(10,2), shipping NUMBER(10,2), grand_total NUMBER(10,2) AS (subtotal + tax + shipping) VIRTUAL ); Virtual Column • Virtual columns are not stored in physical disk space • You cannot perform insert or update operation on virtual column • Value is computed in the result set of the query • Cannot insert or update virtual columns • Can only make use of columns in the same table • Index can be created over virtual column values
  • 6.
    CREATE TABLE students ( student_idNUMBER(6) NOT NULL, first_name VARCHAR2(30) NOT NULL, last_name VARCHAR2(30) NOT NULL, email_address VARCHAR2(128) NOT NULL, phone VARCHAR2(20) NULL, city VARCHAR2(30) NULL, state VARCHAR2(2) NULL, CONSTRAINT pk_students PRIMARY KEY (student_id) ); Primary Key • Primary Key Types 1. Natural Key - Combination of naturally occurring columns that forms a unique key 2. Surrogate Key - A unique value is generated for each row • Uniquely Identifies each rows in a column • Can be defined over one or more column • Cannot contain a null value in primary key column
  • 7.
    CREATE TABLE courses ( department_codeVARCHAR2(2) NOT NULL, course_number NUMBER(3,0) NOT NULL, course_title VARCHAR2(64) NOT NULL, course_description VARCHAR2(512) NOT NULL, credits NUMBER(3,1) NOT NULL, CONSTRAINT pk_courses PRIMARY KEY (department_code, course_number) ); Primary Key Using constraint clause Adding Primary Key to an Existing table ALTER TABLE courses CONSTRAINT pk_courses ADD PRIMARY KEY (department_code, course_number);
  • 8.
    SQL> SELECT rowid,zip_code, city, state 2 FROM zip_codes; ROWID ZIP_C CITY ST ----------------------- -------------------------------- AAAXoNAAGAAAJzeAAA11201 Brooklyn NY AAAXoNAAGAAAJzeAAB75201 Dallas TX AAAXoNAAGAAAJzeAAC80401 Golden CO AAAXoNAAGAAAJzeAAD92101 San Diego CA Oracle ROWID It is not intended to use ROWID as a replacement for primary key.
  • 9.
  • 10.
    Foreign Key Continues… CREATETABLE courses ( department_code VARCHAR2(2) NOT NULL, course_number NUMBER(3,0) NOT NULL, course_title VARCHAR2(64) NOT NULL, course_description VARCHAR2(512) NOT NULL, credits NUMBER(3,1) NOT NULL, CONSTRAINT pk_courses PRIMARY KEY (department_code, course_number), C O N S T R A I N T f k _ c o u r s e s _ d e p a r t m e n t _ c o d e F O R E I G N K E Y (d e p a r t m e n t _ c o d e ) R E F E R E N C E S d e p a r t m e n t s (d e p a r t m e n t _ c o d e ) , ); Add a Foreign Key to an Existing Table ALTER TABLE courses CONSTRAINT fk_courses_department_code ADD FOREIGN KEY (department_code) REFERENCES departments (department_code);
  • 11.
    On Delete Cascade CREATETABLE courses ( department_code VARCHAR2(2) NOT NULL, course_number NUMBER(3,0) NOT NULL, course_title VARCHAR2(64) NOT NULL, course_description VARCHAR2(512) NOT NULL, credits NUMBER(3,1) NOT NULL, CONSTRAINT pk_courses PRIMARY KEY (department_code, course_number), CONSTRAINT fk_courses_department_code FOREIGN KEY (department_code) REFERENCES departments (department_code) ON DELETE CASCADE ); Creating foreign key with ON DELETE CASCADE In Case of ON DELETE CASCADE, if you delete any primary key in parent table, it will delete the corresponding record from the child table automatically.
  • 12.
    On Delete Cascadecontinues … DELETE FROM courses WHERE department_code= ‘PH’; DELETE FROM departments WHERE department_code= ‘PH’; COMMIT; Deleting without ON DELETE CASCADE To delete a primary key value, no child records can exist
  • 13.
    DEFERRED CONSTRAINT CREATE TABLEcourses ( department_code VARCHAR2(2) NOT NULL, course_number NUMBER(3,0) NOT NULL, course_title VARCHAR2(64) NOT NULL, course_description VARCHAR2(512) NOT NULL, credits NUMBER(3,1) NOT NULL, CONSTRAINT pk_courses PRIMARY KEY (department_code, course_number), CONSTRAINT fk_courses_department_code FOREIGN KEY (department_code) REFERENCES departments (department_code) DEFERRABLE INITIALLY IMMEDIATE -- INITIALLY DEFERRABLE ); Creating foreign key with DEFERRED CONSTRAINT This way we can tell oracle to defer enforcing the constraint until the transaction is commited not as soon as statement is executed.
  • 14.
    DEFERRED CONSTRAINT continues… CREATE TABLE courses ( department_code VARCHAR2(2) NOT NULL, course_number NUMBER(3,0) NOT NULL, course_title VARCHAR2(64) NOT NULL, course_description VARCHAR2(512) NOT NULL, credits NUMBER(3,1) NOT NULL, CONSTRAINT pk_courses PRIMARY KEY (department_code, course_number), CONSTRAINT fk_courses_department_code FOREIGN KEY (department_code) REFERENCES departments (department_code) DEFERRABLE INITIALLY IMMEDIATE ); DEFERRED CONSTRAINT with INITIALLY IMMEDIATE If we use INITIALLY IMMEDIATE, we tell the oracle to enforce the constraint at statement level like Normal unless we specifically instruct the oracle to defer checking of the constraint inside of our transaction.
  • 15.
    DEFERRED CONSTRAINT continues… CREATE TABLE courses ( department_code VARCHAR2(2) NOT NULL, course_number NUMBER(3,0) NOT NULL, course_title VARCHAR2(64) NOT NULL, course_description VARCHAR2(512) NOT NULL, credits NUMBER(3,1) NOT NULL, CONSTRAINT pk_courses PRIMARY KEY (department_code, course_number), CONSTRAINT fk_courses_department_code FOREIGN KEY (department_code) REFERENCES departments (department_code) DEFERRABLE INITIALLY DEFERRABLE ); DEFERRED CONSTRAINT with INITIALLY DEFERRABLE If we use INITIALLY DEFERRABLE, we tell the oracle to enforce the constraint until the transaction commits.
  • 16.
    DEFERRED CONSTRAINT continues… set constraint fk_courses_depatment_code deferred; UPDATE departments SET department_code = ‘CO’ WHERE department_code = ‘CS’; UPDATE courses SET department_code = ‘CO’ WHERE department_code = ‘CS’; COMMIT; Using DEFERRED CONSTRAINT
  • 17.
    Check Constraints CREATE TABLEcourses ( department_code VARCHAR2(2) NOT NULL, course_number NUMBER(3,0) NOT NULL, course_title VARCHAR2(64) NOT NULL, course_description VARCHAR2(512) NOT NULL, credits NUMBER(3,1) NOT NULL, CONSTRAINT pk_courses PRIMARY KEY (department_code, course_number), CONSTRAINT fk_courses_department_code FOREIGN KEY (department_code) REFERENCES departments (department_code), CONSTRAINT ck_courses_course_number CHECK (course_number BETWEEN 100 AND 999) );
  • 18.
    Check Constraints continues… CREATE TABLE states ( state_code VARCHAR2(2) NOT NULL, state_name VARCHAR2(30) NOT NULL, region VARCHAR2(2) NOT NULL, CONSTRAINT pk_states PRIMARY KEY (state_code), CONSTRAINT ck_state_regions CHECK (region IN (‘NE’, ‘SE’, ‘MW’, ‘SC’, ‘NW’, ‘SW’)) ); To Check if a value is within a range
  • 19.
    Check Constraints continues… CREATE TABLE students ( student_id NUMBER(6) NOT NULL, first_name VARCHAR2(30) NOT NULL, last_name VARCHAR2(30) NOT NULL, email_address VARCHAR2(128) NOT NULL, likes_ice_cream NUMBER(1) NULL, CONSTRAINT pk_students PRIMARY KEY (student_id), CONSTRAINT ck_studens_ice_cream CHECK (likes_ice_cream IN (0,1)) ); To emulate a Boolean column
  • 20.
    Check Constraints continues… CREATE TABLE zip_codes ( zip_code VARCHAR2(5) NOT NULL, city VARCHAR2(30) NOT NULL, state_code VARCHAR2(30) NOT NULL, CONSTRAINT pk_codes PRIMARY KEY (state_code), CONSTRAINT ck_zip_code_format CHECK (REGEXP_LIKE (zip_code, '^[0-9]{5}$') ) ); Validate Format Using a Regular Expression Add a Constraint to an Existing Table ALTER TABLE zip_codes ADD CONSTRAINT ck_zip_codes_format CHECK (REGEXP_LIKE (zip_code, '^[0-9]{5}$') );
  • 21.
    Disabling and EnablingConstraints ALTER TABLE courses DISABLE CONSTRAINT fk_courses_department_code; Disabling a constraint Enabling a constraint ALTER TABLE courses ENABLE CONSTRAINT fk_courses_department_code;
  • 22.
    Check Constraints continues… CREATE TABLE zip_codes ( zip_code VARCHAR2(5) NOT NULL, city VARCHAR2(30) NOT NULL, state_code VARCHAR2(30) NOT NULL, CONSTRAINT pk_codes PRIMARY KEY (state_code), CONSTRAINT ck_zip_code_format CHECK (REGEXP_LIKE (zip_code, '^[0-9]{5}$') ) ); Validate Format Using a Regular Expression Add a Constraint to an Existing Table ALTER TABLE zip_codes ADD CONSTRAINT ck_zip_codes_format CHECK (REGEXP_LIKE (zip_code, '^[0-9]{5}$') );
  • 23.
    Table Storage Options Oraclestores the tables and views in Database blocks A Database block is like a shipping container
  • 24.
    Table Storage Options Whatis a block ? Block Header • Block type information • Object assignment • Row directory Row • Actual data in our tabe Free space • Allows for updates to rows.
  • 25.
    Table Storage Options HowOracle Performs Data Access Operation ? 1. Full Table Scan 2. Index operation with Row Lookup. Full Table Scan • Oracle scans through every block in the table • Comparable to a linear search in an array
  • 26.
    Table Storage Options IndexOperation with Row lookup
  • 27.
    Table Storage Options TableData and Sort Order Data in a table has no implied order. • Oracle will insert the row wherever they fits • Physical order in disk != Order data was inserted. Data returned from queries is not sorted • Order of results is not order data was returned • Two different executions can return same results in different order.
  • 28.
  • 29.
    Table Storage Options TablespaceBlock Size Row Chaining is when a row in table is so long that it will not fit in a single data block. So oracle has to chain the row and store it in two or more data block. It increases the amount of IO operation while performing database o/p.
  • 30.
  • 31.
    Table Storage Options OracleContains Multiple Tablespaces • Every user has a Default tablespace • Some objects may be created in and alternate tablespace
  • 32.
    Table Storage Options Specifyinga tablespace for a table CREATE TABLE course_enrollments ( course_enrollment_id NUMBER NOT NULL, course_offering_id NUMBER(20) NOT NULL, student_id NUMBER(10) NOT NULL, grade_code VARCHAR2(1) NULL, CONSTRAINT pk_course_enrollments PRIMARY KEY (course_enrollment_id), CONSTRAINT fk_enrollments_offerings FOREIGN KEY (course_offering_id) REFERENCES course_offerings(course_offering_id), CONSTRAINT fk_enrollments_student FOREIGN KEY (student_id) REFERENCES students (student_id), CONSTRAINT fk_enrollments_grades FOREIGN KEY (grade_code) REFERENCES grades (grade_code) ) TABLESPACE student_data;
  • 33.
    Table Storage Options HighWater Mark Highest numbered block that has ever contained data in a table • For a newly created table, the block is at the left of the table because no data has ever been inserted into the table.