You are on page 1of 9

database DINESH;

select database;

/* SYNTAX FOR CREATING VIEW*/


select * from emp;
--SIMPLE VIEW:
create view v_employee as select
empno,ename,sal,deptno from emp;
select * from v_employee;

--ALTERING AN EXISTING VIEW:


replace view v_employee as select
empno,ename,sal,job,deptno from emp;

--COMPLEX VIEW:
create view v_emp_dept as select
e.empno,e.ename,e.sal,d.deptno,d.dname from
emp e JOIN dept d on e.deptno = d.deptno;
select * from v_emp_dept;

--CREATING VIEW BY IMPLEMENTING COLUMN


LEVEL SECURITY:
create view v_ed10 as select empno,ename,sal,deptno
from emp where deptno = 10;
create view v_ed20 as select empno,ename,sal,deptno
from emp where deptno = 20;
create view v_ed30 as select empno,ename,sal,deptno
from emp where deptno = 30;
select * from v_ed10;
select * from v_ed20;
select * from v_ed30;
/* DML OPERATIONS ON BASE TABLE*/
select * from emp;
select * from v_employee;
insert into emp (empno,ename,sal)
values(1000,'DINESH',10000);
delete from emp where empno = 1000;
/* CREATING VIEWS WITH CHECK OPTION */
create view emp_dept_10 as select
empno,ename,sal,deptno from emp where deptno =10
with check option;
drop view emp_dept_10;
select * from emp_dept_10;
insert into emp_dept_10 values(1000,'dinesh',1000,10);

/* MACRO's*/
-- SIMPLE MACRO:
create MACRO m_emp AS
(
select * from EMP;
);
EXEC m_emp;
--MACRO WITH MULTIPLE SELECT STATEMENTS:
create macro m_emp_dept AS
(
select * from emp;
select * from dept;
select * from emp_aggr;
select * from emp_test;
);
EXEC m_emp_dept;
--ALTERING AN EXISTING MACRO:
replace macro m_emp AS
(
select * from emp;
select e.empno,e.ename,e.sal,e.deptno,d.dname from
emp e JOIN dept d on e.deptno =
d.deptno;
);
EXEC m_emp;
-- PARAMETRIZED MACRO's:
create table dept_m as (select * from dept) with data;
select * from dept_m;
create macro m_dept(deptno int,dname varchar(10),loc
varchar(10))
AS
(insert into dept_m (deptno,dname,loc)
values(:deptno,:dname,:loc);
);
EXEC m_dept(50,'HR','USA');

HELP MACRO m_dept;


SHOW MACRO m_dept;
DROP MACRO m_Dept;

HELP VIEW v_ed10;


SHOW VIEW v_ed10;

/* WORKING WITH TRIGGERS*/


create table TAB1(A int,B int,C int);
create table TAB2(D int,E int,F int);
create table TAB3(G int,H int, I int);
/* TRIGGER ON TABLE1*/
CREATE TRIGGER TRIG_TAB1 AFTER INSERT ON
TAB1
REFERENCING NEW_TABLE AS NEWTABLE
FOR EACH STATEMENT
(INSERT INTO TAB2 SELECT A+100,B+50,C FROM
NEWTABLE;);
/* TRIGGER ON TABLE2*/
CREATE TRIGGER TRIG_TAB2 AFTER INSERT ON
TAB2
REFERENCING NEW_TABLE AS NEWTABLE
FOR EACH STATEMENT
(INSERT INTO TAB3 SELECT D+100,E+50,F FROM
NEWTABLE;);
/* DML OPERATION ON TABLE1*/
INSERT into tab1(100,200,300);
select * from tab1;
select * from tab2;
select * from tab3;
/* CREATING TRIGGER ON EMPLOYEE TABLE*/
-- CREATING BASE TABLE:
create table emp_trig(eid int,ename varchar(10),sal int);
-- CREATING LOG TABLE for EMP_TRIG TABLE: to
CAPTURE THE CHANGES:
create table emp_trig_log(eid int,ename varchar(10),sal
int,
uid varchar(10) DEFAULT USER,
load_date date DEFAULT DATE,
load_time int DEFAULT TIME);
--CREATING A TRIGGER:
create trigger emp_log_details
after insert on emp_trig
referencing new_table as emp_new
for each statement
(insert into emp_trig_log(eid,ename,sal) select
eid,ename,sal
from emp_new;);
select * from emp_trig;
select * from emp_trig_log;
insert into emp_trig values(1000,'DINESH', 20000);

/* TERADATA TRANSACTION MODES*/


select * from emp;
create table dept_count(deptno int,dname
varchar(10),emp_count int);
insert into dept_count(10,'SALES',5);
insert into dept_count(20,'HR',6);
insert into dept_count(30,'IT',7);
insert into dept_count(40,'MARKETING',5);
select * from dept_count;
--EXPLICIT TRANSACTION:
begin transaction;
delete from emp where ename = 'DINESH';
update dept_count set emp_count = emp_count - 1 where
deptno = 10;
end transaction;
/*STORED PROCEDURES*/
CREATE TABLE US_ST11
(
STATE_NAME VARCHAR(13),
STATE_ABBR CHAR(2),
STATE_CAPITAL VARCHAR(13),
STATE_CITY VARCHAR(13)
)
PRIMARY INDEX(STATE_NAME)
;
select * from US_ST11;
--SYNTAX FOR CREATING STORED PROCEDURES:
CREATE PROCEDURE UST11()
BEGIN
INSERT INTO US_ST11
VALUES('Alabama','AL','Montgomery','Birmingham');
INSERT INTO US_ST11
VALUES('Alaska','AK','Juneau','Anchorage');
INSERT INTO US_ST11
VALUES('Arizona','AZ','Phoenix','Phoenix');
INSERT INTO US_ST11
VALUES('Arkansas','AR','LittleRock','LittleRock');
INSERT INTO US_ST11
VALUES('California','CA','Sacramento','LosAngeles');
END
select * from US_ST11;
CALL UST11();
/* WORKING WITH MERGE INTO STATEMENTS*/
select * from dept;

merge into dept d using


values(80,'PROCUREMENT','USA')
as dept(deptno,dname,loc)
on d.deptno = dept.deptno
when matched then update
set loc = 'CALIFORNIA'
when not matched then insert
values(dept.deptno,dept.dname,dept.loc);

EXPLAIN SELECT * FROM EMP;

You might also like