Vous êtes sur la page 1sur 14

-- to see current user name sql> show user -- to connect from user hr or to switch from one user to another

sql> conn hr/hr show user conn sys as sysdba oracle sql> show user sql> alter user hr identified by hr account unlock; alter user hr account unlock; sql> conn hr/hr sql> show user -- to see allthe table available in user hr select * from tab;

desc user_tables sql> select table_name,tablespace_name from user_tables;

quiz: to see the desc of employees desc employees -- to select all the columns of table employees sql> select * from employees; -- to see specific column from table sql> select employee_id,last_name from employees; conn hr/hr sql> spool on sql> spool c:\a.txt DDL COMMANDS(DATA DEFINITION LANGUAGE) CREATE,ALTER(ADD/DROP/REMANE/MODIFY),DROP,RENAME,TRUNCATE NOTE : DDL COMMANDS ARE AUTOCOMMITED. sql>CREATE TABLE DEMO(ID NUMBER(3),NAME VARCHAR2(20)); DESC DEMO SELECT * FROM DEMO; -- TO ADD COLUMN IN EXISTING TABLE

ALTER TABLE DEMO ADD(SAL NUMBR(10,2),DID NUMBER(3)); DESC DEMO -- TO MODIFY EXISTING COLUMN ALTER TABLE DEMO MODIFY(SAL NUMBER(12,2)); DESC DEMO -- TO RENAME AN EXISTING COLUMN ALTER TABLE DEMO RENAME COLUMN SAL TO SALARY; DESC DEMO -- TO TO DROP EXISTING COLUMN ALTER TABLE DEMO DROP COLUMN DID; DESC DEMO

-- TO CREATE A TABLE FROM EXISTING TABLE WITH DATA ALSO. CREATE TABLE DEMO2 AS SELECT * FROM EMPLOYEES; DESC EMPLOYEES DESC DEMO2 SELECT COUNT(*) FROM EMPLOYEES; SELECT COUNT(*) FROM DEMO2; OR -- TO CREATE A TABLE FROM EXISTING TABLE WITH A CONDITION CREATE TABLE DEMO3 AS SELECT * FROM EMPLOYEES WHERE SALARY>10000; SELECT COUNT(*) FROM EMPLOYEES; SELECT COUNT(*) FROM DEMO2; OR CREATE TABLE DEMO4 AS SELECT EMPLOYEE_ID EMPNO, LAST_NAME NAME,SALARY SAL FROM EMPLOYEES WHERE DEPARTMENT_ID IN(10,20,50,60) AND SALARY >5000; DESC DEMO4 SELECT * FROM DEMO4; --TO CREATE TABLE FROM EXISTING TABLE WITHOUT DATA CREATE TABLE DEMO5 AS SELECT * FROM EMPLOYEES WHERE 1<>1;

DESC EMPLOYEES DESC DEMO5 SELECT COUNT(*) FROM EMPLOYEES; SELECT COUNT(*) FROM DEMO5; -- TO CREATE TABLE IN USER HR FROM ANOTHER SCHEMA. CONN SYS AS SYSDBA CREATE TABLE HR.DEMO6 AS SELECT * FROM HR.EMPLOYEES; CREATE TABLE HR.DEMO7 AS SELECT * FROM SCOTT.EMP;

-- TO RENAME A TABLE CONN HR/HR RENAME DEMO TO EE; DESC DEMO DESC EE -- TO DROP A TABLE DROP TABLE DEMO6; SQL> SPOOL OFF

DML COMMANDS DATA MANIPULATION LANGUAGE \NOTE: DML COMMANDS ARE NOT AUTOCOMMITED DML COMMANDS CAN BE COMMITED: AT COMMIT TIME EXPLICITLY USER IS EXIT FROM SESSION SAFELY INSERT /UPDATE/DELETE/MERGE EXAMPLE HR CREATE TABLE EX(ID NUMBER(2),NAME VARCHAR2(20), SAL NUMBER(10,2),EMAIL VARCHAR2(20)); DESC EX INSERT INTO EX(ID ,SAL,NAME,EMAIL) VALUES(1,222,'AA','AA@');

INSERT INTO EX VALUES(2,'VV',6788,'SS@'); INSERT INTO EX VALUES(3,'QQ',NULL,NULL); SQL> / INSERT INTO EX (ID,NAME) VALUES(7,'UIYUY'); INSERT INTO EX VALUES(&1,'&2',&3,'&4'); SQL> 1 SS 222 SYSDATE SQL> / INSERT INTO EX VALUES(&ID,'&NAME',&SAL,'&EMAIL'); SELECT * FROM EX; COMMIT; -- TO INSERT DATA WITH DEFAULT VALUE CREATE INSERT INSERT INSERT INSERT SELECT TABLE EX2(ID NUMBER(3),DID NUMBER(3) DEFAULT 10); INTO EX2 VALUES(1,DEFAULT); INTO EX2 VALUES(2,NULL); INTO EX2 VALUES(3,20); INTO EX2 (ID) VALUES(4); * FROM EX2;

--TO USE KEYWORD IN INSERTION CREATE TABLE EX3(ID NUMBER(2),NAME VARCHAR2(20),HIRE DATE); INSERT INTO EX3 VALUES(1,USER,SYSDATE); INSERT INTO EX3 VALUES(2,'GG','12-JAN-12'); SELECT * FROM EX3; INSERT INTO EX3 VALUE(3,USER,TO_DATE('12/JANUARY/12')); INSERT INTO EX3 VALUE(3,USER,'12/JANUARY/2012'); SELECT * FROM EX3; ROLLBACK; SELECT * FROM EX3; INSERT INTO EX3 VALUES(1,USER,SYSDATE); INSERT INTO EX3 VALUES(2,'GG','12-JAN-12'); COMMIT; INSERT INTO EX3 VALUES(1,USER,SYSDATE); ROLLBACK;

INSERT INTO EX3 VALUES(1,USER,SYSDATE); CREATE TABLE EX4(ID NUMBER); ROLLBACK; SELECT * FROM EX3;

SELECT SYSDATE FROM DUAL; SELECT 2*8 FROM DUAL;

---INSERT DATA IN EXISTING FROM ANOTHER TABLE EAXMPLE 1: CREATE TABLE EX8 AS SELECT * FROM EMPLOYEES WHERE 1<>1; SELECT * FROM EX8; INSERT INTO EX8 SELECT * FROM EMPLOYEES; EXAMPLE 2: CREATE TABLE EX9 AS SELECT EMPLOYEE_ID EMPNO, LAST_NAME NAME,DEPARTMENT_ID DID ,SALARY SAL FROM EMPLOYEES WHERE 1<>1; DESC EX9 SELECT * FROM EX9; INSERT INTO EX9 SELECT EMPLOYEE_ID,LAST_NAME,DEPARTMENT_ID, SALARY FROM EMPLOYEES; SELECT COUNT(*) FROM EX9; INSERT INTO EX9(EMPNO,SAL,NAME) SELECT EMPLOYEE_ID ,SALARY,LAST_NAME FROM EMPLOYEES; SELECT * FROM EX9;

EXAMPLE : CREATE TABLE UP1 AS SELECT * FROM EMPLOYEES; UPDATE UP1 SET SALARY =999; SELECT SALARY FROM UP1; ROLLBACK; SELECT SALARY FROM UP1; UPDATE UP1 SET SALARY=999 WHERE DEPARTMENT_ID IN(10,20); SELECT SALARY,DEPARTMENT_ID FROM UP1; ROLLBACK; SELECT SALARY,DEPARTMENT_ID FROM UP1; UPDATE UP1

SET SALARY=9898 WHERE DEPARTMENT_ID BETWEEN 10 AND 50; SELECT SALARY,DEPARTMENT_ID FROM UP1 WHERE DEPARTMENT_ID BETWEEN 10 AND 50; ROLLBACK; SELECT SALARY,DEPARTMENT_ID FROM UP1; UPDATE UP1 SET SALARY=9666 WHERE DEPARTMENT_ID>30; <,>,<=,>=,=,<>,BETWEEN,IN,IS NULL,LIKE,AND ,OR ,NOT LOWER,UPPER,INITCAP SQL> SELECT LOWER(LAST_NAME),UPPER(LAST_NAME),INITCAP(LAST_NAME) FROM EMPLOYEES; SQL> ED SELECT LOWER(LAST_NAME) LNAME,UPPER(LAST_NAME) "Init Name" FROM EMPLOYEES; close-->save yes sql> / "Uname",INITCAP(LAST_NAME) as

sELECT LAST_NAME FROM EMPLOYEES WHERE UPPER(LAST_NAME) LIKE 'A%'; sELECT LAST_NAME FROM EMPLOYEES WHERE UPPER(LAST_NAME) LIKE '%A%'; sELECT LAST_NAME FROM EMPLOYEES WHERE UPPER(LAST_NAME) LIKE '__A%'; sELECT LAST_NAME ,SALARY FROM EMPLOYEES WHERE UPPER(LAST_NAME) NOT LIKE '__A%';

SELECT LAST_NAME,COMMISSION_PCT FROM EMPLOYEES WHERE COMMISSION_PCT IS NULL; SELECT LAST_NAME,COMMISSION_PCT FROM EMPLOYEES WHERE COMMISSION_PCT IS NOT NULL; SELECT SALARY,COMMISSION_PCT,SALARY+COMMISSION_PCT FROM EMPLOYEES; NVL(EXPR1,EXPR2)

SELECT SALARY,COMMISSION_PCT,SALARY+NVL(COMMISSION_PCT,1) FROM EMPLOYEES; SELECT 12*(SALARY+100) FROM EMPLOYEES SELECT * FROM EMPLOYEES WHERE (UPPER(JOB_ID)='ST_CLERK' OR UPPER(JOB_ID)='ST_MAN') AND SALARY>10000; CLAUSE : ALL KEYWORDS ARE KNOWN AS CLAUSE EG. SELECT ,ORDER BY ,DISTINCT ETC. STATEMENT: ONCE SOME CLAUSE ARE PLACED IN A MEANINGFUL LINE THAT BECOME A STATEMENT. SELECT * FROM TAB; --SELECTION & PROJECTION ALL THE COLUMN OF A TABLE ARE SELECTED SELECT * FROM EMPLOYEES; SPECIFIC COLUMN OF A TABLE ARE SELECTED SELECT EMPLOYEE_ID ,SALARY FROM EMPLOYEES;

--- WHERE CLAUSE TO RESTRICT DATA -- ORDER BY TO RETRIEVE DATA IN ASCENDING OR DESCENDING ORDER SELECT LAST_NAME ,SALARY FROM EMPLOYEES ORDER BY SALARY; SELECT LAST_NAME ,SALARY FROM EMPLOYEES ORDER BY SALARY DESC ; SELECT LAST_NAME ,SALARY,DEPARTMENT_ID FROM EMPLOYEES ORDER BYDEPARTMENT_ID, SAL ARY DESC ;

--- DEFINE KEYWORD IS USED TO MAKE THE VARIABLE GLOBAL UPTO SESSION. SQL> DEFINE X=10 SQL> SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID=&X; SQL> UNDEFINE X SQL> SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID=&X;

SQL> SET VERIFY OFF SQL> SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID=&X; CONCATINATION -------------------SELECT LAST_NAME||SALARY DETAIL,JOB_ID FROM EMPLOYEES; LITERALS -----------SOL: THE SALARY OF LAST_NAME IS SALARY SELECT 'THE SALARY OF '||LAST_NAME||' '||IS'||SALARY "Detail" from employees; quotation: -----------------select 'the manager's id are'||manager_id from employees; select q'[the manager's id are]'||manager_id from employees;

DIFFERENCE BETWEEN DROP /DELETE /TRUNCATE DELETE: IT WILL DELETE THE ROWS BUT LOGICAL STRUCTURE WILL REMAIN UNTIL COMMIT SO THE ROWS CAN BE ROLLBACK BEFORE COMMIT WITH DELETE WHERE CALUSE CAN BE USE. CREATE TABLE EE AS SELECT * FROM EMPLOYEES; SELECT COUNT(*) FROM EE; DELETE FROM EE ; SELECT COUNT(*) FROM EE; ROLLBACK; SELECT COUNT(*) FROM EE; DELETE FROM EE WHERE DEPARTMENT_ID=70; SELECT COUNT(*) FROM EE; COMMIT; SELECT COUNT(*) FROM EE; ROLLBACK; SELECT COUNT(*) FROM EE; TRUNACTE TABLE EE; ROLLBACK; SELECT COUNT(*) FROM EE; BECAUSE THE LOGICAL AREA OF ROWS ARE DELETED DESC EE

DROP TABLE DEMO; DESC DEMO ALL THE ROWS AND COLUMN WITH THIER LOGICAL AREA ARE REMOVED AND CANT BE ROLLBACK DROP TABLE DEMO PURGE;

CONSTRAINTS: 1. CONSTYRAINTS ARE BUSINESS RULES 2. CONSTRAINT CAN BE CREATED AT TABLE CREATION TIME OR ON EXISTING TABLE 3. CONSTRAINT CAN BE APPLY ON EXISTING COLUMN OR ON A NEW CREATED COLUMN TIME 4. CONSTRAINT CAN BE TABLE LEVEL OR COLUMN LEVEL 5. DICTIONARY TO SEE CONSTRAINTS 6. CONSTRAINT CAN BE DISABLE OR ENABLE 7. CONSTRAINT NAME CAN BE SYSTEM DEFIEND AND USER DEFINED 8. CONSTRAINT CAN BE DROP CONSTRAINTS : PRIMARY KEY(UNIQUE+NOT NULL) NOT NULL(SHOULD NOT BE NULL) CHECK (TOCHECK THE THE CONDITION) UNIQUE (NONDUPLICATE+NULL) FOREIGN KEY(REFRENCE): SIMPLE ON DELETE CASCADE ON DELETE SET NULL

CREATE TABLE DEMO10(ID NUMBER(2) PRIMARY KEY,NAME VARCHAR2(20) CONSTRAINT D_NN N OT NULL,EMAIL VARCHAR2(20),SAL NUMBER(10,2) CHECK(SAL>5000)); DESC USER_CONSTRAINTS SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE ,INDEX_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME='DEMO10'; INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO DEMO10 DEMO10 DEMO10 DEMO10 DEMO10 VALUES(1,NULL,'DD',7000);--ERROR VALUES(1,'SSSS','DD',7000); VALUES(1,'JH','DD',7000);--ERROR VALUES(3,'JH','DD',7000); VALUES(7,'JH','DD',2000);

ROLLBACK;

--TO ADD A CONSTRAINT ON EXISTING COLUMN ALTER TABLE DEMO10 ADD CONSTRAINT C_UK UNIQUE(EMAIL); SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE ,INDEX_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME='DEMO10'; -- TO ADD A CONSTRAINT AT COLUMN CREATION TIME ON EXISTING TABLE ALTER TABLE DEMO10 ADD(PHONE NUMBER(10) UNIQUE); SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE ,INDEX_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME='DEMO10';

TABLE LEVEL CONSTRAINT: SINGLE CONSTRAINT CAN BE APPLY ON MULTIPLE COLUMN FOREIGN KEY WILL ALWAYS USE WITH TABLE LEVEL CONSTRAINT CREATE TABLE DEMO11(ID NUMBER(10) PRIMARY KEY,NAME VARCHAR2(20), PHONE NUMBER(10),EMAIL VARCHAR2(20),SAL NUMBER(10,2), CONSTRAINT D_UK UNIQUE(EMAIL,PHONE)); NOTE: IF PRIMARY AND UNIQUE CONSTRAINT IS DROP SO INDEX WILL BE DROP AUTOMATICAL LY. -- TO DROP A CONSTRAINT CREATE TABLE DEMO12(ID NUMBER PRIMARY KEY,NAME VARCHAR2(20) NOT NULL, SAL NUMBER(10,2) CHECK(SAL>2000),EMAIL VARCHAR2(20) NOT NULL);

SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE ,INDEX_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME='DEMO10'; DESC USER_CONS_COLUMNS SELECT COLUMN_NAME,CONSTRAINT_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME='DEMO12'; ALTER TABLE DEMO12 DROP CONSTRAINT SYS001;

-- TO DISABLE A CONSTRAINT

ALTER TABLE DEMO12 DISABLE CONSTRAINT SYS0002;

MERGE CREATE TABLE TAB1(ID NUMBER(3) PRIMARY KEY,SALES NUMBER(3), STATUS VARCHAR2(20)); INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO TAB1 TAB1 TAB1 TAB1 TAB1 VALUES(1,33,'CURR'); VALUES(2,23,'NEW'); VALUES(3,33,'CURR'); VALUES(4,33,'CURR'); VALUES(5,33,'CURR');

CREATE TABLE TAB2 AS SELECT * FROM TAB1;

SELECT * FROM TAB1; SELECT * FROM TAB2; INSERT INTO TAB1 VALUES(7,33,'CURR'); UPDATE TAB1 SET STATUS ='VALID' WHERE ID=3; SELECT * FROM TAB1; SELECT * FROM TAB2; SQL>ED C:\MERGE.SQL MERGE INTO TAB2 T USING TAB1 T1 ON(T.ID=T1.ID) WHEN MATCHED THEN UPDATE SET T.SALES=T1.SALES T.STATUS=T1.STATUS WHEN NOT MATCHED THEN INSERT VALUES(T1.ID,T1.SALES,T1.STATUS); --- CLOSE THE FILE SQL> @C:\MERGE.SQL; SELECT * FROM TAB1; SELECT * FROM TAB2;

Vous aimerez peut-être aussi