Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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 Set up Oracle access at IU • Or you can use Aqua Data Studio to access Oracle Aqua Data Studio • Server connection: – host: dbserv.uits.indiana.edu – port: 1521 – username: your username – passcode: your password – System Identifier of the database (SID): oed1prd Relational Model • Data stored in relations (tables) attributes (or columns) course_ID course_name department_ID CIS3100 Database CIS CIS4500 Network CIS MKT3400 Advertising MKT MKT4100 Marketing MKT course tuples (or rows) SQL • Data Definition Language (DDL) – 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 – 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. 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#C HDGEEFE Example student enroll PK student_id PK,FK1 student_id PK,FK2 course_id name major GPA course PK course_id name department_id grade student_id name major GPA 101 Bill CIS 3.45 student_id course_id grade 102 Mary CIS 3.10 101 CIS3100 A 103 Sue MKT 3.90 101 CIS3500 B+ course_id name department_id 102 CIS3100 A- CIS3100 Database CIS 102 CIS3400 A CIS3400 Network I CIS 103 MKT3000 A CIS3500 Network II CIS 103 MKT3200 B MKT3000 Advertising MKT 103 MKT4200 B+ MKT3200 Marketing I MKT MKT4200 Marketing II MKT 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 CREATE TABLE student ( student_id NUMBER(10), name VARCHAR2(25), major VARCHAR2(15), CONSTRAINT pk_students PRIMARY KEY (student_id) ); • ALTER TABLE ALTER TABLE student ADD (GPA NUMBER(6,3)); • DROP TABLE DROP TABLE student; DML in Oracle • INSERT INSERT INTO student VALUES (101, 'Bill', 'CIS', 3.45); • UPDATE UPDATE student SET GPA=3.55 where student_id=101; • DELETE DELETE FROM student where student_id=101; • SELECT 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 * FROM student WHERE student.student_id IN (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/