eng. mohammed alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/lab6_ddl.pdflab 6 data definition...

20
Islamic University of Gaza Faculty of Engineering Computer Engineering Dept. Database Lab (ECOM 4113) Lab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014

Upload: others

Post on 31-May-2021

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

Islamic University of Gaza

Faculty of Engineering

Computer Engineering Dept.

Database Lab (ECOM 4113)

Lab 6

Data Definition Language

(DDL)

Eng. Mohammed Alokshiya

November 11, 2014

Page 2: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

2

Database Keys

A key is a logical way to access a record in a table. There are many types of

key in Relational Databases like Oracle:

Candidate Key

A candidate key is any field, or combination of fields, that uniquely identifies

a record. The field/s of the candidate key must contain unique values, and

cannot contain a null value.

Primary Key (PK)

A primary key is the candidate key that has been chosen to identify unique

records in a particular table.

Foreign Key (FK)

A relationship between two tables is created by creating a common field to

the two tables. The common field must be a primary key to the one table.

Database Schemas

A database is a collection of logical structures of data, or schema objects. A

schema is owned by a database user and has the same name as that user.

Each user owns a single schema. Schema objects can be created and

manipulated with SQL and include the following types of objects:

Tables – Views – Synonyms – Functions – Procedures – Sequences – Packages

– Indexes – etc.

Schema Creating

To create a new schema in default XE database, we have to create a new user

and Oracle creates a schema for that user with the same name.

Page 3: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

3

To create a new user, connect to XE database by SYSTEM user (or any user

with sufficient privileges), and issue the following command:

CREATE USER CREATE USER USER_NAME

IDENTIFIED BY USER_PASSWORD

DEFAULT TABLESPACE USERS

QUOTA 10M ON USERS;

In general, the syntax of CREATE USER statement is:

Page 4: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

4

Granted Privileges:

If you try to connect to database with the new user, you will get a message

“ORA-01045: user USER_NAME lacks CREATE SESSION privilige; logon denied”

The reason for that error is: we are trying to connect to our database using a

user that do not have any privileges. So, before you leave SYSTEM

connection, you have to grant some needed privileges for our new user.

Grant Privileges and Roles GRANT CREATE SESSION, RESOURCE, CREATE VIEW,

CREATE SYNONYM, CREATE MATERIALIZED VIEW, ALTER SESSION

TO USER_NAME;

Create session: to be able to connect to XE database by the new user.

Connect: CONNECT is a pre-defined ROLE in Oracle. A role is a set of

privileges that can be granted to users or to other roles.

To know which privileges are granted to CONNECT role, then execute

the following statement:

Page 5: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

5

Display Privileges Granted to a Role SELECT PRIVILEGE FROM DBA_SYS_PRIVS

WHERE GRANTEE = 'RESOURCE';

Alter session: to set or modify any of the conditions or parameters

that affect your connection to the database.

Table Creating

CREATE TABLE Syntax CREATE TABLE TABLE_NAME (

COL_1 DATATYPE [COL. DEFAULT] [INLINE CONSTRAINTS],

COL_1 DATATYPE [COL. DEFAULT] [INLINE CONSTRAINTS],

....

[OUT OF LINE CONSTRAINTS]

);

Page 6: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

6

Data Types

CHARACTER TYPES

Data Type Description Notes

CHAR [(n[BYTE|CHAR])] A set of characters exactly n characters in length, padded with spaces. If you attempt to store a string that is too long, an error will be generated.

To specify a value to character data types, it is placed between single quotation marks ('), and it is a case sensitive, e.g., 'Hello'.

Use concatenation operator (||) to concatenate two strings, e.g. 'abc' || 'def' results 'abcdef'.

NCHAR[(n)] A fixed length Unicode character string having maximum length n characters. Default and minimum n is 1 character.

VARCHAR2(n [byte|char])

A Variable length character string having maximum length n bytes or characters. You must specify size for VARCHAR2. Minimum size is 1 byte or 1 character.

NVARCHAR2(n) A Variable length Unicode character string having maximum length n characters. You must specify size for NVARCHAR2.

NUMERIC TYPES

Data Type Description Range

Number [(p[, s])]

User-specified precision, scale.

The precision is the number of digits to both sides of the decimal point.

The positive scale is the count of decimal digits in the fractional part, to the right of the decimal point.

If the scale of a value to be stored is greater than the declared scale of the column, the system will round the value to the specified number of fractional digits.

When the scale is positive and the number of digits to the left of the decimal point exceeds (p-s), an error is raised.

Number(p) = Number(p,0) s=0.

The precision p can range from 1 to 38. The scale s can range from -84 to 127. A NUMBER value requires from 1 to 22 bytes.

Page 7: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

7

Float [(p)] A subtype of the NUMBER data type having precision p.

A FLOAT value is represented internally as NUMBER.

The precision p can range from 1 to 126 binary digits.

To convert from binary to decimal precision, multiply p by 0.30103.

A FLOAT value requires from 1 to 22 bytes.

BINARY_FLOAT BINARY_FLOAT is a 32-bit, single-precision floating-point number data type.

15 decimal digit. Each BINARY_FLOAT value requires 4 bytes.

Binary_Double BINARY_DOUBLE is a 64-bit, double-precision floating-point number data type.

Each BINARY_DOUBLE value requires 8 bytes.

BINARY DATA TYPES

Data Type Description

RAW(n) Raw binary data of max length n bytes. You must specify size for a RAW value.

LONG RAW Raw binary data of variable length up to 2 gigabytes.

DATE/TIME DATA TYPES

Data Type Description Notes Example

Date Date and Time.

Its components are YEAR, MONTH, DAY, HOUR, MINUTE and SECOND.

The default format is:

DD-MON-YY.

SYSDATE: special value that is current system date.

To specify a value to Date types, you can: Place the value between

single quotation marks in DD-MON-YY format.

To specify a value for Timestamps DataType, you can:

'31-MAY-02' '31-MAY-2002'

Page 8: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

8

timestamp [(p)]

Includes the DATE and TIME fields. The Default format is: DD-MON-YY HH.MM.SS.p AM/PM

Place the value in (') marks in DD-MON-YY HH:MM:SS.p [AM/PM] [+/-HH:MM/time zone] Format.

Hour from (1-12). +/-HH:MM/time zone

for timestamp with time zone data type.

AM/PM required for timestamp with time zone data type.

If you don’t specify AM/PM for timestamp and timestamp with local time zone data types the default is AM.

Use Timestamp literal and YYYY-MM-DD HH:MM:SS.p [+/- HH:MM/time zone] format Hour from (0-23) +/- HH:MM/time zone

for timestamp with time zone data type.

P: is an optional fractional seconds precision, it can be specified timestamp, and interval types.

P can be from 0 to 9.

The default p is 6.

'31-MAY-02 10:30:56'

'31-MAY-02 10:30:56 PM'

Timestamp '2002-05-02 10:30:56.25'

Timestamp [(p)] with time zone

Timestamp with time zone displacement value. The Default format is: DD-MON-YY HH.MM.SS.p AM/PM +/- HH:MM/time zone

’31-MAY-03 10:30:56 AM +08:00’

'04-Jul-05 4:5:6 PM ASIA/JERUSALEM'

Timestamp '2002-05-02 15:30:56.36 -07:00'

Timestamp ‘2002-05-02 15:30:56.36 ASIA/JERUSALEM'

Timestamp [(p)] with local time zone

Timestamp with the local time zone.

The Default format is: DD-MON-YY HH.MM.SS.p AM/PM

’31-MAY-14 10:30:56’

’31-MAY-14 10:30:56 PM’

Timestamp ’2013-05-06 10:30:56’

Page 9: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

9

If the number of digits of a value to be stored is greater than the declared P, the system will round the value to the specified P.

INTERVAL YEAR [(p)] TO MONTH

Stores a period of time in years and months.

P: is the number of digits in the YEAR field.

P can from 0 to 9.

The default p is 2.

To specify a value for this data type:

Interval ‘YY-MM’ year to month.

Interval ‘1-2’ year to month.

INTERVAL DAY [(D)] TO SECOND [(p)]

Stores a period of time in days, hours, minutes, and seconds.

D: is the maximum number of digits in the DAY field.

D range: 0 to 9.

The default D is 2.

P: is the number of digits in the fractional part of the SECOND field.

P can from 0 to 9.

The default p is 2.

To specify a value for this data type:

Interval ‘D HH:MM:SS.p’ Day to second

Interval ‘3 12:4:5’ Day to Second

Page 10: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

10

Default Values

A column can be assigned a default value. When a new row is created and

no values are specified for some of the columns, those columns will be filled

with their respective default values. If no default value is declared explicitly,

the default value is the null value.

In a table definition, default values are listed after the column data type.

SQL CREATE TABLE EMPLOYEE (

..

SALARY NUMBER (6,2) DEFAULT 2000,

..

);

Constraints

SQL allows you to define constraints on columns and tables. Constraints give

you as much control over the data in your tables as you wish. If a user

attempts to store data in a column that would violate a constraint, an error

is raised.

Constraints Types:

NOT NULL: prohibits a database value from being null.

Unique: prohibits multiple rows from having the same value in the same

column or combination of columns but allows some values to be null.

Primary key: combines a NOT NULL constraint and a unique constraint in a

single declaration. It prohibits multiple rows from having the same value in

the same column or combination of columns and prohibits values from

being null.

Check: requires a value in the database to comply with a specified condition.

Foreign key: requires values in one table to match values in another table.

You can define constraints syntactically in two ways:

As a part of the definition of an individual column or attribute. This is

called inline specification.

Page 11: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

11

As a part of the table definition. This is called out-of-line specification.

Notes:

NOT NULL constraints must be declared inline. All other constraints can be

declared either inline or out of line.

The constraint on a combination of columns must be declared out of line.

You cannot designate the same column or combination of columns as both

a primary key and a unique key.

In Line Constraint [CONSTRAINT CONST_NAME] CONST_TYPE [CONST_SPECIFICATIONS]

Out of Line Constraint [CONSTRAINT CONST_NAME] CONST_TYPE (COLUMN[S]) [CONST_SPECIFICATIONS]

Constraint const_name specifies a name for the constraint. If you omit this

identifier, then Oracle Database generates a name.

Constraint name clarifies error messages and allows you to refer to the

constraint when you need to change it.

Not Null Constraint

It must be declared in line.

Not Null Constraint [CONSTRAINT CONST_NAME] NOT NULL

Unique Constraint

UNIQUE Constraint [In Line] [CONSTRAINT CONST_NAME] UNIQUE

UNIQUE Constraint [Out of Line] [CONSTRAINT CONST_NAME] UNIQUE (COLUMN[S])

Page 12: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

12

Primary Key Constraint

PRIMARY KEY Constraint [In Line] [CONSTRAINT CONST_NAME] PRIMARY KEY

PRIMARY KEY Constraint [Out of Line] [CONSTRAINT CONST_NAME] PRIMARY KEY (COLUMN[S])

Check Constraint

CHECK Constraint [In and Out of Line] [CONSTRAINT CONST_NAME] CHECK (Boolean Expression)

Foreign Key Constraint

A foreign key constraint specifies that the values in a column (or a group of

columns) must match the values appearing in some row of another table.

This maintains the referential integrity between two related tables.

When Deleting or updating a referenced row, Oracle allows you to handle

that as well. There are two options:

CASCADE if you want Oracle to remove/update dependent foreign key

values.

SET NULL if you want Oracle to convert dependent foreign key values to

NULL.

Foreign Key Constraint [In Line] [CONSTRAINT CONST_NAME] REFERENCES REFERENCED_TABLE (REFERENCED_COL)

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

Foreign Key Constraint [Out of Line] [CONSTRAINT CONST_NAME] FOREIGN KEY (COLUMN_NAME) REFERENCES

REFERENCED_TABLE (REFERENCED_COL)

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

Page 13: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

13

If you omit ON DELETE or ON UPDATE clause, then Oracle does not allow you

to delete or update referenced key values in the parent table that have

dependent rows in the child table.

Note: Foreign key column data type must be as same as referenced column.

Modifying Tables

Alter Table command allow you to alter the definition, or structure, of the

table, such you can:

Add columns.

Remove columns.

Add constraints.

Remove constraints.

Change default values.

Change column data types.

Rename columns.

Rename tables.

Add Column ALTER TABLE TABLE_NAME

ADD COLUMN_NAME DATATYPE [COL. DEFAULT] [INLINE CONSTRAINTS]

Modify Column Data Type ALTER TABLE TABLE_NAME

MODIFY COLUMN_NAME NEW_DATATYPE

Note: You can change the data type of any column if all rows of the column

contain nulls.

Specifying Column Default Value ALTER TABLE TABLE_NAME

MODIFY COLUMN_NAME DEFAULT DEFAULT_VALUE;

Page 14: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

14

To discontinue previously specified default values, so that they are no longer

automatically inserted into newly added rows, replace the values with NULL.

Remove Default Value ALTER TABLE TABLE_NAME

MODIFY COLUMN_NAME DEFAULT NULL;

Rename Column ALTER TABLE TABLE_NAME

RENAME COLUMN COLUMN_NAME TO NEW_OLUMN_NAME;

Remove Column ALTER TABLE TABLE_NAME

DROP COLUMN COLUMN_NAME [CASCADE];

CASCADE: if you want to drop everything that depends on the column.

Add Out of Line Constraint ALTER TABLE TABLE_NAME

ADD OUT_OF_LINE_CONSTRAINT;

To add a not-null constraint, which cannot be written as out of line

constraint, use this syntax:

Add Not Null Constraint ALTER TABLE TABLE_NAME

MODIFY COLUMN_NAME NOT NULL;

Rename Constraint ALTER TABLE TABLE_NAME

RENAME CONSTRAINT CONSTRAINT_NAME TO NEW_CONSTRAINT_NAME;

Remove Constraint ALTER TABLE TABLE_NAME

DROP CONSTRAINT CONSTRAINT_NAME [CASCADE];

Page 15: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

15

Remove Not Null Constraint ALTER TABLE TABLE_NAME

MODIFY COLUMN_NAME NULL;

Rename Table ALTER TABLE TABLE_NAME

RENAME TO NEW_NAME;

Remove Table DROP TABLE TABLE_NAME [CASCADE];

Page 16: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

16

Example:

Solution:

1. Create First Table (Least dependent table):

Create Table EMPLOYEE CREATE TABLE EMPLOYEE (

Fname VARCHAR2 (20) NOT NULL,

Minit VARCHAR2(1),

Lname VARCHAR2 (20) NOT NULL,

Ssn NUMBER(9) PRIMARY KEY,

Bdate DATE,

Address VARCHAR2(100),

Sex NUMBER (1) CHECK (Sex BETWEEN 0 AND 1),

Salary NUMBER(6) DEFAULT 2000 NOT NULL,

Super_ssn NUMBER(9) REFERENCES EMPLOYEE(Ssn),

Dno NUMBER(6)

);

Page 17: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

17

Note: Dno is a foreign key references the Department table but we haven’t

created DEPARTMENT table yet, so we can’t add foreign constraint here, and

we need to alter EMPLOYEE table to add the foreign constraint after

DEPARTMENT creating.

To view the tables in the schema, R-Click on Tables >> Refresh.

2. Second Table: Department

Create Table DEPARTMENT CREATE TABLE DEPARTMENT (

Dname VARCHAR2(20) NOT NULL UNIQUE,

Dno NUMBER(6) PRIMARY KEY,

Mgr_ssn NUMBER(9) REFERENCES EMPLOYEE(Ssn),

Mgr_start_date DATE

);

Now you can alter the first table (Employee) to add foreign key constraint

Alter Table EMPLOYEE ALTER TABLE EMPLOYEE

ADD (

CONSTRAINT FK FOREIGN KEY (Dno) REFERENCES DEPARTMENT(Dno)

);

Page 18: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

18

3. Create other tables

Create Other Tables CREATE TABLE DEPT_LOCATIONS (

Dnumber NUMBER(6) REFERENCES DEPARTMENT(Dnumber),

Dlocation VARCHAR2 (20),

CONSTRAINT PK PRIMARY KEY (Dnumber, Dlocation)

);

CREATE TABLE PROJECT (

Pname VARCHAR2(20) NOT NULL UNIQUE,

Pnumber NUMBER(6) PRIMARY KEY,

Plocation VARCHAR2(20),

Dnum NUMBER(6) REFERENCES DEPARTMENT(Dnumber)

);

CREATE TABLE WORKS_ON (

Essn NUMBER(9) REFERENCES EMPLOYEE(Ssn),

Pno NUMBER(6) REFERENCES DEPARTMENT(Dnumber),

Hours NUMBER(3),

PRIMARY KEY (Essn, Pno)

);

CREATE TABLE DEPENDENT (

Essn NUMBER(9) REFERENCES EMPLOYEE(Ssn),

Dependent_name VARCHAR2(20) NOT NULL,

Sex NUMBER (1) CHECK (Sex BETWEEN 0 AND 1),

Bdate DATE,

Relationship NUMBER (2),

PRIMARY KEY (Essn, Dependent_name)

);

Note that Oracle DMBS generates names for constraints If you omit this the

name.

To display the auto-generated names for a table constraints, use the

following command:

Display Table Constraints SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, SEARCH_CONDITION

FROM USER_CONSTRAINTS;

Page 19: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

19

Example: Display constrains for EMPLOYEE table columns

Page 20: Eng. Mohammed Alokshiyasite.iugaza.edu.ps/mokshiya/files/2014/11/Lab6_DDL.pdfLab 6 Data Definition Language (DDL) Eng. Mohammed Alokshiya November 11, 2014 2 Database Keys A key is

20

Exercise: Given the following relations, create a new user in

your Oracle database; grant sufficient privileges then create all the

tables with appropriate constraints.