SQL in Oracle
Set up Oracle access at IU You need to install Oracle Client: http://kb.iu.edu/data/anhl.html For windows: http://kb.iu.edu/data/aznp.html Connecting to Oracle with SQL*Plus http://kb.iu.edu/data/aznp.html#connecting Go to Start->All programs->Oracle->Application Development->SQL*Plus Your username should be: username@oed1prd.world
Relational Model Data stored in relations (tables) attributes (or columns) course_ID course_name department_ID CIS3100 Database CIS CIS4500 Network MKT3400 Advertising MKT MKT4100 Marketing tuples (or rows) course
SQL Data Definition Language (DDL) Data Manipulation Language (DML) CREATE TABLE ALTER TABLE DROP TABLE Data Manipulation Language (DML) INSERT INTO SELECT UPDATE DELETE
SQL Basic structure – query block SELECT – FROM – WHERE clauses GROUP BY clause HAVING clause ORDER BY clause Aggregate functions COUNT, MIN, MAX, AVG, SUM
SQL in Oracle SQL*Plus Start SQL*Plus Command line interface to access Oracle database Enter, edit, store, retrieve, and run SQL statements Start SQL*Plus Go to Start->All programs->Oracle->Application Development->SQL*Plus Your username should be: username@oed1prd.world
SQL*Plus Commands DESCRIBE: list the columns with data types of a table EXIT: exit the SQL*Plus program GET: load a SQL statement into the buffer LIST: list the current statement in the buffer RUN: execute the current SQL statement in the buffer SAVE: save the current SQL statement to a script file SPOOL: send the output from a SQL statement to a file START: load a SQL statement located in a script file and then run that SQL statement Commit: save your input from buffer to disk. Note the distinction between SQL*Plus Commands and SQL statements. http://download.oracle.com/docs/cd/B10501_01/server.920/a90842/ch13.htm http://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch4.htm#CHDGEEFE
Example student_id name major GPA 101 Bill CIS 3.45 102 Mary 3.10 103 Sue MKT 3.90 student_id course_id grade 101 CIS3100 A CIS3500 B+ 102 A- CIS3400 103 MKT3000 MKT3200 B MKT4200 course_id name department_id CIS3100 Database CIS CIS3400 Network I CIS3500 Network II MKT3000 Advertising MKT MKT3200 Marketing I MKT4200 Marketing II
DDL in Oracle Basic data types CHAR(size) VARCHAR2(size) NUMBER(p, s) DATE BLOB/CLOB See: http://www.techonthenet.com/oracle/datatypes.php
DDL in Oracle CREATE TABLE ALTER TABLE DROP TABLE CREATE TABLE student ( student_id NUMBER(10), name VARCHAR2(25), major VARCHAR2(15), CONSTRAINT pk_students PRIMARY KEY (student_id) ); ALTER TABLE student ADD (GPA NUMBER(6,3)); DROP TABLE student;
DML in Oracle INSERT UPDATE DELETE SELECT INSERT INTO student VALUES (101, 'Bill', 'CIS', 3.45); UPDATE student SET GPA=3.55 where student_id=101; DELETE FROM student where student_id=101; SELECT * FROM student;
Create tables
Queries SELECT * FROM course WHERE rownum<=3; SELECT * FROM enroll WHERE grade=‘A’;
Queries SELECT * FROM student WHERE student.student_id=(SELECT enroll.student_id FROM enroll WHERE grade='A-'); SELECT student.name FROM student, enroll WHERE student.student_id=enroll.student_id AND enroll.grade=‘A’;
Sorting and Grouping SELECT * FROM enroll ORDER BY grade, course_id; SELECT major, max(gpa) FROM student GROUP BY major HAVING max(gpa)>3.40; SELECT DISTINCT grade FROM enroll;
Joining tables SELECT student.name, enroll.course_id, enroll.grade FROM student INNER JOIN enroll ON student.student_id=enroll.student_id;
Joining tables SELECT * FROM student LEFT JOIN enroll ON student.student_id=enroll.student_id;
Joining tables SELECT * FROM student RIGHT JOIN enroll ON student.student_id=enroll.student_id;
References www.oracle.com Oracle tutorial: http://dbis.ucdavis.edu/courses/sqltutorial/tutorial.pdf http://cisnet.baruch.cuny.edu/holowczak/oracle/sqlplus/