350 likes | 451 Vues
This guide explores SQL subqueries, including their structure, execution order, and practical applications. A subquery is a query nested within another SQL query, allowing for complex data retrieval. The outer query is referred to as the main query, while the inner query acts as a subquery. Subqueries can be integrated into various SQL commands, including SELECT, INSERT, UPDATE, and DELETE. The guide also highlights the key rules for using subqueries effectively, alongside examples demonstrating their functionality with common database operations.
E N D
Subquery • Subquery or Inner query or Nested query • A subquery is a query within another query. • The outer query is called as main query and • The inner query is called as subquery. • A subquery is usually added in the WHERE Clause of the sql statement.
Subquery • Subquery or Inner query or Nested query • Syntax • The subquery (inner query) executes once before the main query (outer query) executes.
Subquery • Subquery or Inner query or Nested query • Two tables ‘STUDENT' and ‘MARKS' with common field ‘ID'. • To write a query to identify all students who get better marks than that of the student who's ID is ‘2‘. • If we know the mark of ID ’2’ then • SELECT A.ID,A.NAME, B.MARK FROM STUDENT A, MARK B WHERE A.ID=B.ID AND B.MARK >70;
Subquery • Subquery or Inner query or Nested query • STUDENT MARK S • But we do not know the marks of ‘2'. • we require two queries (Nested query) • One query returns the marks of '2' and • Second query identifies the students who get better marks than the result of the first query • SELECT A.ID,A.NAME, B.MARK FROM STUDENT A, MARKS B WHERE A.ID=B.ID AND B.MARK > (SELECT MARK FROM MARKS WHERE ID=2);
Subquery • Rules for subqueries: • Subqueriesmust be enclosed within parentheses. • Inner query can have only one column in the SELECT clause, unless multiple columns are in the main query. • Inner Query cannot use An ORDER BY clause, although the main query can use an ORDER BY. • The BETWEEN operator cannot be used with a inner query; however, the BETWEEN operator can be used within the main query.
Subquery • Subqueries can be used with • SELECT • INSERT • UPDAT E, and • DELET E statements along with the operators like =, <, >, >=, <=, IN, BETWEEN etc.
Subquery • Subquerie in select statementTab1 Tab2 • List all details from tab2, where rollno =4 in tab1 • select * from tab2 where rollno in (select rollno from tab1 where rollno=4)
Subquery • Subquerie in insert statement Tab1 Tab4 • Consider table tab1 & tab4 with similar structure. • To copy the records from tab1 to tab4 where rollno=3 • insert into tab4 select * from tab1 where rollno in (select rollno from tab1 where rollno=3)
Subquery • Subquerie in update statement Tab1 Tab2 • Increment the marks with 10 in tab2, whose rollno = 4 in tab1 • update tab2 set mark=mark+10 where rollno in (select rollno from tab1 where rollno=4)
Subquery • Subquerie in delete statement Tab1 Tab2 • Delete all details from tab2, where rollno is 4 in tab1 • delete from tab2 where rollno in (select rollno from tab1 where rollno=4)
Subquery • NULL Functions • Consider the table N_TEST • 3rd and 2nd row contains NULL values • SELECT * FROM N_TEST WHERE COL1=NULL; • Then result will • no data found
Subquery • NULL Functions • Consider the table N_TEST • 3rd and 2nd row contains NULL values • Instead we must use the IS NULL or IS NOT NULL operators • SELECT * FROM N_TEST WHERE COL1 IS NULL; • Then • SELECT * FROM N_TEST WHERE COL1 IS NOT NULL;
Subquery • NULL Functions • NVL • The NVL function allows to replace null values with a default value. • If the value in the first parameter is null, the function returns the value in the second parameter. • If the first parameter is any value other than null, it is returned unchanged.
Subquery • NULL Functions • NVL • COL1 in the N_TEST table contains null in all rows except the first & second • Using the NVL function we replace the null values with ‘AJI'. • SELECT COL1,NVL(COL2,'AJI') AS OUTPUT FROM N_TEST;
Subquery • NULL Functions • DECODE • The DECODE function have 3 parameters. • If second parameter occurs will replace to third parameter • Other wise it return NULL • SELECT COL1,DECODE(COL2,NULL,'AJI') AS OUTPUT FROM N_TEST; • Here all NULL, converted to ‘AJI’ other wise it converted to NULL
Subquery • NULL Functions • NVL2 • The NVL2 function accepts three parameters. • If the first parameter value is not null it returns the value in the second parameter. • If the first parameter value is null, it returns the third parameter. • SELECT COL1,NVL2(COL2,'SAJI','AJI') AS OUTPUT FROM N_TEST;
Subquery • Numeric Functions • ABS(number) • Returns the absolute positive value of an expression. • SELECT ABS(COL1) AS OUTPUT FROM N_TEST;
Subquery • Numeric Functions • MOD(number, divisor) • Returns the remainder of the division from 2 integer values. • SELECT COL1,MOD(COL1,2) AS OUTPUT FROM N_TEST
Subquery • Numeric Functions • POWER(number, power) • Returns the exponential value for the numeric expression. • SELECT COL1,POWER(COL1,2) AS OUTPUT FROM N_TEST
Subquery • String Functions • CONCAT(string1, string2) • Join 2 strings • SELECT COL1,CONCAT(COL1,'AJI') AS OUTPUT FROM N_TEST
Subquery • String Functions • INITCAP(string) • Returns a string with each word's first character in uppercase and the rest in lowercase. • SELECT COL1,INITCAP(COL2) AS OUTPUT FROM N_TEST
Subquery • String Functions • REPLACE(string,searchString,replacement) • Used to replace the string1, having string2 with string3. • SELECT COL1,REPLACE(COL2,'one','TWO') AS OUTPUT FROM N_TEST
Subquery • String Functions • SUBSTR(string,start,length) • Displays the string Starting with the character in string and select the next characters. • SELECT COL1,SUBSTR(COL2,2,2) AS SUBSTR FROM N_TEST
Subquery • Date Functions • SYSDATE • Returns the current date • Tab1 • SELECT SYSDATE FROM TAB1;
Subquery • Date Functions DD • Addition of date • SELECT DOB,DOB+2,DOB+30 FROM DD;
Subquery • Date Functions • MONTHS_BETWEEN • returns number of months between dates date1 and date2. • If date1 is later than date2, then the result is positive. • Syntax MONTHS_BETWEEN(date1,date2); • Other wise negative • SELECT DOB, MONTHS_BETWEEN('10-FEB-1998',DOB) FROM DD
Subquery • Date Functions • ADD_MONTHS • Used to add month • Syntax ADD_MONTHS(date,int); • Add DOB month with 2 • SELECT DOB, ADD_MONTHS(DOB,2) FROM DD;
Subquery • Date Functions • LAST_DAY(date1) Find the date of the last day of the month that contains date1. • SELECT DOB, LAST_DAY(DOB) FROM DD;
Subquery • Date Functions • TRUNC(date1,’char’) Find the date of first day of the month containing in date1 when char=‘MONTH’. If char=‘YEAR’, it finds first day of year containing date1. • SELECT DOB, TRUNC(DOB,'MONTH'),TRUNC(DOB,'YEAR') FROM DD;
Subquery • Date Functions • TO_CHAR() • SELECT DOB, TO_CHAR(DOB,'DAY-DDTH-MONTH-YEAR') FROM DD;
Subquery • Date Functions • TO_DATE • converts char of CHAR, VARCHAR2, NCHAR, or NVARCHAR2 datatype to a value of DATE datatype. • SELECT DOB, TO_DATE('FEB 17 2014','MONTH DD YYYY') FROM DD;
Subquery • Date Functions
Subquery • Date Functions