Oracle SQL Table Management and Constraints

Classified in Arts and Humanities

Written on in with a size of 3.74 KB

Querying Database Metadata

To begin, we search for existing tables and columns within the database schema using the following queries:

SELECT * FROM all_tables WHERE table_name LIKE 'ALUMNO%';
SELECT * FROM ALL_TAB_COLUMNS WHERE table_name = 'ALUMNOS4';

Creating and Describing the Ejemplo Table

We drop the existing table and recreate it with specific data types, default values, and a primary key:

DROP TABLE ejemplo;

CREATE TABLE ejemplo (
  col1 NUMBER(6) DEFAULT '0',
  col2 DATE,
  col3 CHAR(1) CHECK (col3 IN ('H','M')),
  PRIMARY KEY (col1)
);

To verify the structure, we can use the following commands:

SELECT * FROM all_tables WHERE table_name = 'EJEMPLO';
SELECT * FROM All_tab_COLUMNS WHERE table_name = 'EJEMPLO';
DESCRIBE EJEMPLO;
DESCRIBE ejemplo;
SELECT * FROM ejemplo;

Recreating the Table Structure

CREATE TABLE ejemplo (
  col1 NUMBER(6) DEFAULT '0',
  col2 DATE,
  col3 CHAR(1) CHECK (col3 IN ('H','M')),
  PRIMARY KEY (col1)
);

Data Insertion and Date Operations

We perform several INSERT operations, testing constraints and using the SYSDATE and ADD_MONTHS functions:

INSERT INTO ejemplo VALUES (1, SYSDATE, 'P');
INSERT INTO ejemplo VALUES (1, SYSDATE, 'H');
SELECT * FROM ejemplo;

Applying Date Range Constraints

ALTER TABLE ejemplo 
ADD CHECK (col2 BETWEEN '01/JAN/2015' 
AND TO_DATE('31/12/2015 23:59:59','dd/mm/yyyy hh24:mi:ss'));

SELECT SYSDATE, ADD_MONTHS(SYSDATE, -3), SYSDATE + 1 AS tomorrow FROM dual;
INSERT INTO ejemplo VALUES (2, ADD_MONTHS(SYSDATE, -3), 'M');
SELECT * FROM ejemplo;

SELECT SYSDATE, ADD_MONTHS(SYSDATE, -4) FROM dual;
INSERT INTO ejemplo VALUES (3, ADD_MONTHS(SYSDATE, -4), 'M');

SELECT SYSDATE, ADD_MONTHS(SYSDATE, 6) FROM dual;
INSERT INTO ejemplo VALUES (4, ADD_MONTHS(SYSDATE, 6), 'H');
SELECT * FROM ejemplo;

SELECT SYSDATE, ADD_MONTHS(SYSDATE, 12) FROM dual;
INSERT INTO ejemplo VALUES (5, ADD_MONTHS(SYSDATE, 12), 'H');

Managing Table Constraints

Adding and dropping specific constraints to control data integrity:

ALTER TABLE ejemplo 
ADD CONSTRAINT sammy2015 CHECK (col1 < 10); > 10); >

INSERT INTO ejemplo VALUES (11, ADD_MONTHS(SYSDATE, 2), 'M');

ALTER TABLE ejemplo 
DROP CONSTRAINT sammy2015;

INSERT INTO ejemplo VALUES (11, ADD_MONTHS(SYSDATE, 2), 'M');
SELECT * FROM ejemplo;
COMMIT;

Modifying Column Constraints

CREATE TABLE ejemplo (
  col1 NUMBER(6) DEFAULT '0',
  col2 DATE,
  col3 CHAR(1) CHECK (col3 IN ('H','M')),
  PRIMARY KEY (col1)
);

ALTER TABLE ejemplo 
MODIFY col3 CHAR(1) CHECK (col3 IN ('H','J','K','L','M'));

INSERT INTO ejemplo VALUES (3, SYSDATE, 'K');

SELECT * FROM all_constraints WHERE table_name = 'EJEMPLO';

ALTER TABLE ejemplo 
DROP CONSTRAINT SYS_C007439; -- En su sistema, puede tener otro nombre

SELECT * FROM all_constraints WHERE table_name = 'EJEMPLO';

INSERT INTO ejemplo VALUES (10, SYSDATE, 'L');
SELECT * FROM ejemplo;

Modifying Columns and Transaction Control

Final adjustments to column defaults and nullability, followed by transaction management:

-------------------------------
ALTER TABLE ejemplo 
MODIFY col2 DATE DEFAULT SYSDATE;

INSERT INTO ejemplo VALUES (9, 'J');
INSERT INTO ejemplo (col1, col3) VALUES (9, 'J');
SELECT * FROM ejemplo;

INSERT INTO ejemplo VALUES (8, '', 'J');
SELECT * FROM ejemplo;

INSERT INTO ejemplo VALUES (7, NULL, 'J');
SELECT * FROM ejemplo;

ROLLBACK;
SELECT * FROM ejemplo;

ALTER TABLE ejemplo 
MODIFY col2 DATE NOT NULL;

INSERT INTO ejemplo (col1, col3) VALUES (7, 'J');
SELECT * FROM ejemplo;

COMMIT;

Related entries: