Friday, August 9, 2019

Constraints in Oracle

SET LINES 100;

DROP TABLE EMPLOYEE;

CREATE TABLE EMPLOYEE
(
   EMPNO    NUMBER,
   ENAME    VARCHAR2 (50),
   GENDER   CHAR (1),
   DOB      DATE,
   DOJ      DATE
);

-- Primary Key
ALTER TABLE EMPLOYEE ADD CONSTRAINT EMP_EMPNO_PK PRIMARY KEY(EMPNO);

INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (NULL,'Rajasekhar','M','10-AUG-1991','16-AUG-2014');
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1010,'Rajasekhar','M','10-AUG-1991','16-AUG-2014');
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1010,'Rajasekhar','M','10-AUG-1991','16-AUG-2014');

-- NOT NULL
ALTER TABLE EMPLOYEE MODIFY ( ENAME VARCHAR2 (50) CONSTRAINT EMP_ENAME_NN NOT NULL );

INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1011,'','M','10-SEP-1991','16-MAY-2015');
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1011,'Siva','M','10-SEP-1991','16-MAY-2015');

-- CHECK
ALTER TABLE EMPLOYEE ADD CONSTRAINT EMP_GENDER_CHK CHECK (GENDER IN ('M','F'));

INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1012,'Jyothi','O','10-APR-1991','16-SEP-2011');
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1012,'Jyothi','F','10-APR-1991','16-SEP-2011');

-- DEFAULT
ALTER TABLE EMPLOYEE MODIFY DOJ DEFAULT SYSDATE;

INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1013,'Balu','M','11-JUL-1991','');
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1014,'Sai','M','11-FEB-1991',NULL);
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB) VALUES (1015,'Hari','M','11-JAN-1991');

COMMIT;

SELECT * FROM EMPLOYEE;

DROP TABLE EMP_ADDRESS;

CREATE TABLE EMP_ADDRESS
(
   EMPNO           NUMBER,
   ADDR_TYPE       VARCHAR2 (10),
   DNO             VARCHAR2 (30),
   ADDRESS_LINE1   VARCHAR2 (100),
   ADDRESS_LINE2   VARCHAR2 (100),
   ADDRESS_LINE3   VARCHAR2 (100),
   CITY            VARCHAR2 (50),
   STATE           VARCHAR2 (50),
   COUNTRY         VARCHAR2 (50),
   PHONE           NUMBER (10),
   ZIP_CODE        NUMBER (6)
);

-- Foregin Key
ALTER TABLE EMP_ADDRESS ADD CONSTRAINT EMPADDR_EMPNO_FK FOREIGN KEY(EMPNO) REFERENCES EMPLOYEE(EMPNO);

INSERT INTO EMP_ADDRESS(EMPNO,ADDR_TYPE,DNO,PHONE) VALUES(1111,'PERMANENT','3-85','1234567891');
INSERT INTO EMP_ADDRESS(EMPNO,ADDR_TYPE,DNO,PHONE) VALUES(NULL,'PERMANENT','3-85','1234567891');
INSERT INTO EMP_ADDRESS(EMPNO,ADDR_TYPE,DNO,PHONE) VALUES('','PERMANENT','3-85','1234567891');
INSERT INTO EMP_ADDRESS(EMPNO,ADDR_TYPE,DNO,PHONE) VALUES(1010,'PERMANENT','3-85','1234567891');
INSERT INTO EMP_ADDRESS(EMPNO,ADDR_TYPE,DNO,PHONE) VALUES(1010,'TEMPORARY','3-85','9999966666');
COMMIT;

COLUMN DNO FORMAT A20;
COLUMN ADDRESS_LINE1 FORMAT A20;
SELECT EMPNO,ADDR_TYPE,DNO,ADDRESS_LINE1,PHONE FROM EMP_ADDRESS;


**************************** logs ************************************
SQL> DROP TABLE EMPLOYEE;

Table dropped.

SQL>
SQL> CREATE TABLE EMPLOYEE
  2  (
  3     EMPNO    NUMBER,
  4     ENAME    VARCHAR2 (50),
  5     GENDER   CHAR (1),
  6     DOB      DATE,
  7     DOJ      DATE
  8  );

Table created.

SQL>
SQL> -- Primary Key
SQL> ALTER TABLE EMPLOYEE ADD CONSTRAINT EMP_EMPNO_PK PRIMARY KEY(EMPNO);

Table altered.

SQL>
SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (NULL,'Rajasekhar','M','10-AUG-1991','16-AUG-2014');
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (NULL,'Rajasekhar','M','10-AUG-1991','16-AUG-2014')
                                                          *
ERROR at line 1:
ORA-01400: cannot insert NULL into ("SYSTEM"."EMPLOYEE"."EMPNO")


SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1010,'Rajasekhar','M','10-AUG-1991','16-AUG-2014');

1 row created.

SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1010,'Rajasekhar','M','10-AUG-1991','16-AUG-2014');
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1010,'Rajasekhar','M','10-AUG-1991','16-AUG-2014')
*
ERROR at line 1:
ORA-00001: unique constraint (SYSTEM.EMP_EMPNO_PK) violated


SQL>
SQL> -- NOT NULL
SQL> ALTER TABLE EMPLOYEE MODIFY ( ENAME VARCHAR2 (50) CONSTRAINT EMP_ENAME_NN NOT NULL );

Table altered.

SQL>
SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1011,'','M','10-SEP-1991','16-MAY-2015');
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1011,'','M','10-SEP-1991','16-MAY-2015')
                                                               *
ERROR at line 1:
ORA-01400: cannot insert NULL into ("SYSTEM"."EMPLOYEE"."ENAME")


SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1011,'Siva','M','10-SEP-1991','16-MAY-2015');

1 row created.

SQL>
SQL> -- CHECK
SQL> ALTER TABLE EMPLOYEE ADD CONSTRAINT EMP_GENDER_CHK CHECK (GENDER IN ('M','F'));

Table altered.

SQL>
SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1012,'Jyothi','O','10-APR-1991','16-SEP-2011');
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1012,'Jyothi','O','10-APR-1991','16-SEP-2011')
*
ERROR at line 1:
ORA-02290: check constraint (SYSTEM.EMP_GENDER_CHK) violated


SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1012,'Jyothi','F','10-APR-1991','16-SEP-2011');

1 row created.

SQL>
SQL> -- DEFAULT
SQL> ALTER TABLE EMPLOYEE MODIFY DOJ DEFAULT SYSDATE;

Table altered.

SQL>
SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1013,'Balu','M','11-JUL-1991','');

1 row created.

SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1014,'Sai','M','11-FEB-1991',NULL);

1 row created.

SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB) VALUES (1015,'Hari','M','11-JAN-1991');

1 row created.

SQL>
SQL> SELECT * FROM EMPLOYEE;

     EMPNO ENAME                                              G DOB       DOJ
---------- -------------------------------------------------- - --------- ---------
      1010 Rajasekhar                                         M 10-AUG-91 16-AUG-14
      1011 Siva                                               M 10-SEP-91 16-MAY-15
      1012 Jyothi                                             F 10-APR-91 16-SEP-11
      1013 Balu                                               M 11-JUL-91
      1014 Sai                                                M 11-FEB-91
      1015 Hari                                               M 11-JAN-91 09-AUG-19

6 rows selected.

SQL> DROP TABLE EMPLOYEE;

Table dropped.

SQL>
SQL> CREATE TABLE EMPLOYEE
  2  (
  3     EMPNO    NUMBER,
  4     ENAME    VARCHAR2 (50),
  5     GENDER   CHAR (1),
  6     DOB      DATE,
  7     DOJ      DATE
  8  );

Table created.

SQL>
SQL> -- Primary Key
SQL> ALTER TABLE EMPLOYEE ADD CONSTRAINT EMP_EMPNO_PK PRIMARY KEY(EMPNO);

Table altered.

SQL>
SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (NULL,'Rajasekhar','M','10-AUG-1991','16-AUG-2014');
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (NULL,'Rajasekhar','M','10-AUG-1991','16-AUG-2014')
                                                          *
ERROR at line 1:
ORA-01400: cannot insert NULL into ("SYSTEM"."EMPLOYEE"."EMPNO")


SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1010,'Rajasekhar','M','10-AUG-1991','16-AUG-2014');

1 row created.

SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1010,'Rajasekhar','M','10-AUG-1991','16-AUG-2014');
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1010,'Rajasekhar','M','10-AUG-1991','16-AUG-2014')
*
ERROR at line 1:
ORA-00001: unique constraint (SYSTEM.EMP_EMPNO_PK) violated


SQL>
SQL> -- NOT NULL
SQL> ALTER TABLE EMPLOYEE MODIFY ( ENAME VARCHAR2 (50) CONSTRAINT EMP_ENAME_NN NOT NULL );

Table altered.

SQL>
SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1011,'','M','10-SEP-1991','16-MAY-2015');
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1011,'','M','10-SEP-1991','16-MAY-2015')
                                                               *
ERROR at line 1:
ORA-01400: cannot insert NULL into ("SYSTEM"."EMPLOYEE"."ENAME")


SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1011,'Siva','M','10-SEP-1991','16-MAY-2015');

1 row created.

SQL>
SQL> -- CHECK
SQL> ALTER TABLE EMPLOYEE ADD CONSTRAINT EMP_GENDER_CHK CHECK (GENDER IN ('M','F'));

Table altered.

SQL>
SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1012,'Jyothi','O','10-APR-1991','16-SEP-2011');
INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1012,'Jyothi','O','10-APR-1991','16-SEP-2011')
*
ERROR at line 1:
ORA-02290: check constraint (SYSTEM.EMP_GENDER_CHK) violated


SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1012,'Jyothi','F','10-APR-1991','16-SEP-2011');

1 row created.

SQL>
SQL> -- DEFAULT
SQL> ALTER TABLE EMPLOYEE MODIFY DOJ DEFAULT SYSDATE;

Table altered.

SQL>
SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1013,'Balu','M','11-JUL-1991','');

1 row created.

SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB,DOJ) VALUES (1014,'Sai','M','11-FEB-1991',NULL);

1 row created.

SQL> INSERT INTO EMPLOYEE (EMPNO,ENAME,GENDER,DOB) VALUES (1015,'Hari','M','11-JAN-1991');

1 row created.

SQL>
SQL> SELECT * FROM EMPLOYEE;

     EMPNO ENAME                                              G DOB       DOJ
---------- -------------------------------------------------- - --------- ---------
      1010 Rajasekhar                                         M 10-AUG-91 16-AUG-14
      1011 Siva                                               M 10-SEP-91 16-MAY-15
      1012 Jyothi                                             F 10-APR-91 16-SEP-11
      1013 Balu                                               M 11-JUL-91
      1014 Sai                                                M 11-FEB-91
      1015 Hari                                               M 11-JAN-91 09-AUG-19

6 rows selected.

SQL> COMMIT;

Commit complete.

SQL>

SQL> DROP TABLE EMP_ADDRESS;

Table dropped.

SQL>
SQL> CREATE TABLE EMP_ADDRESS
  2  (
  3     EMPNO           NUMBER,
  4     ADDR_TYPE       VARCHAR2 (10),
  5     DNO             VARCHAR2 (30),
  6     ADDRESS_LINE1   VARCHAR2 (100),
  7     ADDRESS_LINE2   VARCHAR2 (100),
  8     ADDRESS_LINE3   VARCHAR2 (100),
  9     CITY            VARCHAR2 (50),
 10     STATE           VARCHAR2 (50),
 11     COUNTRY         VARCHAR2 (50),
 12     PHONE           NUMBER (10),
 13     ZIP_CODE        NUMBER (6)
 14  );

Table created.

SQL>
SQL> -- Foregin Key
SQL> ALTER TABLE EMP_ADDRESS ADD CONSTRAINT EMPADDR_EMPNO_FK FOREIGN KEY(EMPNO) REFERENCES EMPLOYEE(EMPNO);

Table altered.

SQL>
SQL> INSERT INTO EMP_ADDRESS(EMPNO,ADDR_TYPE,DNO,PHONE) VALUES(1111,'PERMANENT','3-85','1234567891');
INSERT INTO EMP_ADDRESS(EMPNO,ADDR_TYPE,DNO,PHONE) VALUES(1111,'PERMANENT','3-85','1234567891')
*
ERROR at line 1:
ORA-02291: integrity constraint (SYSTEM.EMPADDR_EMPNO_FK) violated - parent key not found


SQL> INSERT INTO EMP_ADDRESS(EMPNO,ADDR_TYPE,DNO,PHONE) VALUES(NULL,'PERMANENT','3-85','1234567891');

1 row created.

SQL> INSERT INTO EMP_ADDRESS(EMPNO,ADDR_TYPE,DNO,PHONE) VALUES('','PERMANENT','3-85','1234567891');

1 row created.

SQL> INSERT INTO EMP_ADDRESS(EMPNO,ADDR_TYPE,DNO,PHONE) VALUES(1010,'PERMANENT','3-85','1234567891');

1 row created.

SQL> INSERT INTO EMP_ADDRESS(EMPNO,ADDR_TYPE,DNO,PHONE) VALUES(1010,'TEMPORARY','3-85','9999966666');

1 row created.

SQL> COMMIT;

Commit complete.

SQL>
SQL> COLUMN DNO FORMAT A20;
SQL> COLUMN ADDRESS_LINE1 FORMAT A20;
SQL> SELECT EMPNO,ADDR_TYPE,DNO,ADDRESS_LINE1,PHONE FROM EMP_ADDRESS;

     EMPNO ADDR_TYPE  DNO                  ADDRESS_LINE1             PHONE
---------- ---------- -------------------- -------------------- ----------
           PERMANENT  3-85                                      1234567891
           PERMANENT  3-85                                      1234567891
      1010 PERMANENT  3-85                                      1234567891
      1010 TEMPORARY  3-85                                      9999966666

SQL>

Delete Row Button to all records of Interactive Report in Oracle Apex

 1. add 'Delete' Del column to Report Query 2. Set the Following Properties for the DEL Column Type: Link Heading: Delete Targ...