Transcript PostgreSQL

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: [email protected]
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:
[email protected]
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/