Presentation is loading. Please wait.

Presentation is loading. Please wait.

Bogdan Shishedjiev SQL1 SQL Reminder of SQL. Bogdan Shishedjiev SQL 2 Subsets of language Data definition language (DDL) –Domain definition –Schema definition.

Similar presentations


Presentation on theme: "Bogdan Shishedjiev SQL1 SQL Reminder of SQL. Bogdan Shishedjiev SQL 2 Subsets of language Data definition language (DDL) –Domain definition –Schema definition."— Presentation transcript:

1 Bogdan Shishedjiev SQL1 SQL Reminder of SQL

2 Bogdan Shishedjiev SQL 2 Subsets of language Data definition language (DDL) –Domain definition –Schema definition –Constraint definition –View definition –Access right definition Data manipulation language (DML) –Queries –Tuple insertion –Tuple deletion –Tuple modification

3 Bogdan Shishedjiev SQL 3 DDL Domain definition –Simple domains Chars Numbers Date/Time Raw BLOB Logical –Named domain – only in some DBMS

4 Bogdan Shishedjiev SQL 4 DDL Create Table CREATE TABLE име ( Attribut1 type1, Attribut2 type2,...); –Definition by Query CREATE TABLE nom AS SELECT.... –Default Value Definition default(expression) –Constraints UNIQUE NOT NULL Primary Key CONSTRAINT Keyname PRIMARY KEY (Attrname1,Attrname2,...) Foreign Key CONSTRAINT Keyname FOREIGN KEY(Attrname,...) REFERENCES Tablename (Attrname,...) CHECK(expression)

5 Bogdan Shishedjiev SQL 5 DDL Table elimination DROP TABLE name; Table modification ALTER TABLE name ADD COLUMN(name_of_column type,...); - adds an attribute/ attributs ALTER TABLE name ADD CONSTRAINT...; ALTER TABLE name MODIFY(column type....); changes the attribute type ALTER TABLE name DROP column,....; removes attribute

6 Bogdan Shishedjiev SQL 6 DDL Indexes –Creation CREATE [UNIQUE] INDEX name_index ON name_table (attribut [ASCIDESC],...); –Deletion DROP INDEX name_index; Views –Creation CREATE VIEW name [(names of columns)] AS SELECT....; –Deletion DROP VIEW name ;

7 Bogdan Shishedjiev SQL 7 Example CREATE TABLE DEPT ( DEPTNOINTEGER NOT NULL, DNAMEVARCHAR(14) CHARACTER SET ISO8859_1, LOCVARCHAR(13) CHARACTER SET ISO8859_1, CONSTRAINT PK_DEPT PRIMARY KEY (DEPTNO) ); CREATE TABLE EMP ( EMPNOINTEGER NOT NULL, ENAMEVARCHAR(10) CHARACTER SET ISO8859_1, JOBVARCHAR(9) CHARACTER SET ISO8859_1, MGRINTEGER CHECK (MGR isNULL or DeptNo = (select DeptNo from Employee E where E.RegNo = Superior), HIREDATETIMESTAMP, SALNUMERIC(9, 2), COMMNUMERIC(9, 2), DEPTNOINTEGER, CONSTRAINT PK_EMP PRIMARY KEY (EMPNO) ); ALTER TABLE EMP ADD CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCES DEPT (DEPTNO);

8 Bogdan Shishedjiev SQL 8 Example EMP NOENAMEJOBMGRHIREDATESAL COMM DEPTNO 7369SMITHCLERK790217.12.198080020 7499ALLENSALESMAN769820.2.19811600 300 30 7521WARDSALESMAN769822.2.19811250 500 30 7566JONESMANAGER783902.4.1981297520 7654MARTINSALESMAN769828.9.19811250 1400 30 7698BLAKEMANAGER783901.5.1981285030 7782CLARKMANAGER783909.6.1981245010 7788SCOTTANALYST756619.4.1987300020 7839KINGPRESIDENT17.11.1981500010 7844TURNERSALESMAN769808.9.1981150030 7876ADAMSCLERK778823.5.1987110020 7900JAMESCLERK769803.12.198195030 7902FORDANALYST756603.12.1981300020 7934MILLERCLERK778223.1.1982130010 DEPTNODNAMELOC 10ACCOUNTINGNEW YORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON

9 Bogdan Shishedjiev SQL 9 Queries SELECT Statement SELECT [DISTINCT | ALL ]{* | expression| attribute },... FROM,... [WHERE Logical expression – condition for selection or join] [GROUP BY list of attributes] [HAVING Logical expression – condition for group selection] [UNION | INTERSECT | MINUS SELECT...] [ORDER BY list of attributes [ASC | DESC] ];

10 Bogdan Shishedjiev SQL 10 Projection SELECT job, mgr FROM emp; /* Query12 */ JOBMGR CLERK7902 SALESMAN7698 SALESMAN7698 MANAGER7839 SALESMAN7698 MANAGER7839 MANAGER7839 ANALYST7566 PRESIDENT SALESMAN7698 CLERK7788 CLERK7698 ANALYST7566 CLERK7782 JOBMGR CLERK7902 SALESMAN7698 MANAGER7839 ANALYST7566 PRESIDENT CLERK7788 CLERK7698 CLERK7782 SELECT DISTINCT job, mgr FROM emp; /* Query13 */

11 Bogdan Shishedjiev SQL 11 Operators CodeOperator -Inversing the sign *, /Multiplication, division +, -, || (&) Addition, substraction, concatenation SELECT ENAME || '(' || EMPNO || ')' 'NAME', 2 * SAL 'DoubleSal' FROM EMP; (Query 39) 'NAME''DoubleSal' SMITH(7369)1600 ALLEN(7499)3200 WARD(7521)2500 JONES(7566)5950 MARTIN(7654)2500 BLAKE(7698)5700 CLARK(7782)4900 SCOTT(7788)6000 KING(7839)10000 TURNER(7844)3000 ADAMS(7876)2200 JAMES(7900)1900 FORD(7902)6000 MILLER(7934)2600

12 Bogdan Shishedjiev SQL 12 Selection SELECT * FROM emp WHERE deptno=10; /* Query14 */ EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO 7782CLARKMANAGER783909.6.1981 245010 7839KINGPRESIDENT17.11.1981 500010 7934MILLERCLERK778223.1.1982 130010

13 Bogdan Shishedjiev SQL 13 Selection & Projection SELECT ename, job, sal FROM emp WHERE job = ‘MANAGER’ AND sal>2500; /* Query15 */ ENAMEJOBSAL JONESMANAGER2975 BLAKEMANAGER2850

14 Bogdan Shishedjiev SQL 14 Predicates BETWEEN / NOT BETWEEN SELECT ename FROM emp WHERE hiredate BETWEEN 1.1.81 AND 31.12.81; /* Query1 */ IN / NOT IN SELECT ename FROM emp WHERE job In ('ANALYST','MANAGER'); /* Query2 */ ENAME SMITH JONES BLAKE CLARK ADAMS JAMES MILLER ENAME ALLEN WARD JONES MARTIN BLAKE CLARK KING TURNER JAMES FORD

15 Bogdan Shishedjiev SQL 15 Predicates LIKE/NOT LIKE compares strings with wildcards “%” substitutes for any 0 or more characters, “_” substitutes for any one character. In Microsoft DBMSs the corresponding examples are “ * “ and “? “. Examples: LIKE 'TARKO%', LIKE '%WSKI', LIKE 'A_C‘ SELECT ename, job FROM Emp WHERE.ename LIKE "b*";/* Query4 */. SELECT ename, job,sal FROM emp WHERE ename LIKE '%mi%'; /*Query16*/ ENAMEJOB BLAKEMANAGER enamejobsal SMITHCLERK800 MILLERCLERK1300

16 Bogdan Shishedjiev SQL 16 Aggregate SELECT count(*) FROM emp WHERE deptno=20; /* Query10 */ SELECT AVG(sal) average FROM emp WHERE deptno=20; /* Query11 */ SELECT count(Job) as Jobs FROM emp; SELECT count(DISTINCT Job) as Jobs FROM emp; Count 5 Average 2175 Jobs 14 Jobs 5

17 Bogdan Shishedjiev SQL 17 Join Cartesian product SELECT * FROM emp, dept; /* Query17 */ Join SELECT * FROM emp,dept WHERE emp.deptno = dept.deptno; /* Query18 */ SELECT * FROM emp INNER JOIN dept ON emp.deptno = dept.deptno; /* Query19 */ SELECT * FROM emp E,dept D WHERE E.deptno = D.deptno; /*Query20 */ SELECT * FROM emp as E INNER JOIN dept as D ON E.deptno = D.deptno; /* Query21 */

18 Bogdan Shishedjiev SQL 18 Join EMPN O ENAMEJOBMGRHIREDSALCOMME.DEPTNOD.DEPTNODNAMELOC 7782CLARKMANAGER783909.6.1981245010 ACCOUNTINGNEW YORK 7839KINGPRESIDENT17.11.1981500010 ACCOUNTINGNEW YORK 7934MILLERCLERK778223.1.1982130010 ACCOUNTINGNEW YORK 7369SMITHCLERK790217.12.198080020 RESEARCHDALLAS 7566JONESMANAGER783902.4.1981297520 RESEARCHDALLAS 7788SCOTTANALYST756619.4.1987300020 RESEARCHDALLAS 7876ADAMSCLERK778823.5.1987110020 RESEARCHDALLAS 7902FORDANALYST756603.12.1981300020 RESEARCHDALLAS 7499ALLENSALESMAN769820.2.1981160030030 SALESCHICAGO 7521WARDSALESMAN769822.2.1981125050030 SALESCHICAGO 7654MARTINSALESMAN769828.9.19811250140030 SALESCHICAGO 7698BLAKEMANAGER783901.5.1981285030 SALESCHICAGO 7844 TURNE R SALESMAN769808.9.1981150030 SALESCHICAGO 7900JAMESCLERK769803.12.198195030 SALESCHICAGO

19 Bogdan Shishedjiev SQL 19 All operators SELECT ename, job, dept.deptno, dname FROM emp, dept WHERE emp.deptno = dept.deptno AND job = 'CLERK'; /* Query22 */ SELECT ename, job, dept.deptno, dname FROM emp INNER JOIN dept ON emp.deptno = dept.deptno WHERE job = 'CLERK'; enamejobdeptnodname SMITHCLERK20RESEARCH ADAMSCLERK20RESEARCH JAMESCLERK30SALES MILLERCLERK10ACCOUNTING

20 Bogdan Shishedjiev SQL 20 Grouping SELECT deptno, MIN(sal), MAX (sal) FROM emp GROUP BY deptno; /* Query26 */ SELECT deptno, MIN(sal), MAX (sal)FROM emp WHERE job = 'CLERK' GROUP BY deptno; /* Query27 */ deptnoMinsalMaxsal 1013005000 208003000 309502850 deptno MinsalMaxsal 1013001300 208001100 30950950

21 Bogdan Shishedjiev SQL 21 Grouping GROUP BY groups resulting rows by the identical values of some attributes and aggregate functions to be applied on each group. All attributes that are not parameters of an aggregate function MUST participate in grouping. Order of execution: –WHERE clause removes all rows that don’t satisfy the condition. –The grouping is accomplished and all aggregate values are calculated. –All groups that don’t satisfy the condition of HAVING clause are removed.

22 Bogdan Shishedjiev SQL 22 Grouping HAVING SELECT deptno, MIN(sal), MAX(sal) FROM emp GROUP BY deptno HAVING MAX(sal) >1200; /* Query28 */ SELECT deptno, MIN(sal), MAX(sal) FROM emp WHERE job = 'CLERK' GROUP BY deptno HAVING MIN(sal)<1000; /* Query29 */ deptno MinsalMaxsal 1013005000 208003000 309502850 deptno MinsalMaxsal 208001100 30950950

23 Bogdan Shishedjiev SQL 23 Ordering ORDER BY ORDER BY {ASC | DESC} SELECT ename, deptno, sal FROM emp ORDER BY deptno, sal DESC; /* Query30 */ enamedeptnosal KING105000 CLARK102450 MILLER101300 FORD203000 SCOTT203000 JONES202975 ADAMS201100 SMITH20800 BLAKE302850 ALLEN301600 TURNER301500 MARTIN301250 WARD301250

24 Bogdan Shishedjiev SQL 24 Updating Insertion INSERT INTO table [(col1[,col2…])] VALUES(list of values); or : INSERT INTO table [(col1[,col2…])] VALUES SELECT... ; –Example : INSERT INTO Emp ( EMPNO, ENAME, JOB, HIREDATE, SAL, COMM, DEPTNO ) SELECT [EMPNO]+20 AS Expr5, ENAME, "CLERK" AS Expr2, #9/1/99# AS Expr4, 800 AS Expr3, COMM, 40 AS Expr1 FROM Emp WHERE DEPTNO=10;

25 Bogdan Shishedjiev SQL 25 Updating Update UPDATE table или view SET {column = expression | (list of columns)=(list of expressions)} [WHERE condition] ; –Example: UPDATE Emp SET Emp.SAL = [Sal]+100 WHERE DEPTNO=40; Delete DELETE FROM table [WHERE condition]; –Example: DELETE FROM emp WHERE DEPTNO=40;


Download ppt "Bogdan Shishedjiev SQL1 SQL Reminder of SQL. Bogdan Shishedjiev SQL 2 Subsets of language Data definition language (DDL) –Domain definition –Schema definition."

Similar presentations


Ads by Google