SQL - Intro

28
SQL - Intro Pepper

description

SQL - Intro. Pepper. Tools. Terminal Emulator for telnet: Panther.ssh here Tera Term http://www.webattack.com/get/teraterm.html Run Telnet Setting backspace (sometimes tty erase ^H ) Transferring files – ftp or kermit Need emulator support for kermit Run ftp ftp explorer. - PowerPoint PPT Presentation

Transcript of SQL - Intro

Page 1: SQL - Intro

SQL - Intro

Pepper

Page 2: SQL - Intro

Tools

• Terminal Emulator for telnet:– Panther.ssh here– Tera Term http://www.webattack.com/get/teraterm

.html– Run Telnet– Setting backspace (sometimes tty erase ^H )

• Transferring files – ftp or kermit– Need emulator support for kermit– Run ftp– ftp explorer

Page 3: SQL - Intro

Environment

• Unix Environment variables: – For Oracle to find its programs:

• setenv ORACLE_BASE /usr/users/db/oracle• setenv ORACLE_HOME

$ORACLE_BASE/OraHome1– For Oracle to know which set of data:

• setenv ORACLE_SID adelphi

Page 4: SQL - Intro

Environment

• Path must include:– For Oracle:

:$ORACLE_HOME/bin:$ORACLE_HOME

Page 5: SQL - Intro

Environment for JDBC

• Path (for Java)opt/IBMJava2-141/bin:/opt/IBMJava2-141/jre/bin: /usr/X11R6/bin:$

• ClassPath must include (for JDBC):setenv CLASSPATH ".:${ORACLE_HOME}/jdbc/lib/classes12.zip:$

{ORACLE_HOME}/jdbc/lib/nls_charset12.zip"

• LD_LIBRARY_PATH (for JDBC):setenv LD_LIBRARY_PATH "${ORACLE_HOME}/lib:$

{ORACLE_HOME}/jdbc/lib"

Page 6: SQL - Intro

Where to set environment variables

• Shell - like the command prompt in Windows • We use tcsh (t cshell), which looks for .cshrc

and then .login for initial login only.• Inside, you can source another file

– .mycshrc• Good info

Page 7: SQL - Intro

SQLPLUS

• SQL is interactive• SQLPLUS is procedural• Login to panther• It will source .cshrc and .login• Run SQLPLUS• Login with your oracle account id and password• Change with password• Send me your oracle account password

Page 8: SQL - Intro

SQL Editing

• Sqlplus userid / password goes right in• All commands stay in current buffer until ; or

/ or run (run echoes command first)• edit – lets you edit current buffer only• change /x/y changes anything in buffer• List of edit commands: • http://www.ss64.com/orasyntax/sqlplus.html

Page 9: SQL - Intro

SQL file saving and using

• save file – saves the current command buffer to a file (just the last one)

• Capturing a session: – spool file– set echo on (so it will show what is executed by start

command)– spool off

• Using a saved command– start filename (.sql doesn’t need to be typed)

• host more file – displays the file

Page 10: SQL - Intro

Mistakes

• Commit– Updates database– Always if set autoCommit on– Automatically on DDL command:

grant/create/drop• Rollback

– Drop since last commit

Page 11: SQL - Intro

Formatting & Paging

• Page – set pause on• Column field format format option heading

“column heading”• help column

Page 12: SQL - Intro

What is in your database?

• See list of tables: – select * from cat;

• See fields in table: – Describe tablename;

• See data in table: – Select * from tablename;

Page 13: SQL - Intro

DDL vs DML

• DDL– Define, add, delete and change schemas– Integrity– Define views– Authorize

• DML– Add, change, delete data– Query data

Page 14: SQL - Intro

DDL

• Create• Drop• Alter• Grant

Page 15: SQL - Intro

Domain Types• char(n) (or character(n)): fixed-length character string, with user-specified

length. • varchar(n) (or character varying): variable-length character string, with

user-specified maximum length. • int or integer: an integer (length is machine-dependent). • smallint: a small integer (length is machine-dependent). • numeric(p, d): a fixed-point number with user-specified precision, consists

of p digits (plus a sign) and d of p digits are to the right of the decimal point. E.g., numeric(3, 1) allows 44.5 to be stored exactly but not 444.5.

• real or double precision: floating-point or double-precision floating-point numbers, with machine-dependent precision. (double float)

• float(n): floating-point, with user-specified precision of at least n digits. • date: a calendar date, containing four digit year, month, and day of the

month. • time: the time of the day in hours, minutes, and seconds. • Some examples for mssql

Page 16: SQL - Intro

Create Table• CREATE TABLE [schema.]table

( column datatype [DEFAULT expr] [column_constraint(s)] [,column datatype [,...]] table_constraint)

• Exercise:Create table customers (cust_id number primary key);create table orders

( order_id number primary key,order_dt date not null,

description varchar(20), amount real default 100 check(amount > 100),

cust_id references customers );

Page 17: SQL - Intro

Drop Table

• DROP TABLE [schema.]table [CASCADE CONSTRAINTS];

• Cascade constraints -> drop all references to this table in other tables

• Exercise:– create table test (test date);– select * from cat;– drop table test cascade constraints;– select * from cat;

Page 18: SQL - Intro

Alter Table• Add, modify or drop columns:

– ALTER TABLE column_properties • Change the Constraints and Primary Key for an

existing table:– ALTER TABLE constraints

• Example:alter table orders add (paid real, type

varchar(3))modify amount real default 300;

Page 19: SQL - Intro

Insert Into

• INSERT INTO [schema.] table (column, column,...) What_to_insert

• What_to_insert: – VALUES ([expr, expr...])

• or – SubQuery

• Columns optional if exact only• insert into orders

(order_id,order_dt,description) VALUES (1,'01-JAN-06','desc');

Page 20: SQL - Intro

Dealing with dates

• http://www-db.stanford.edu/~ullman/fcdb/oracle/or-time.html

• Default - DD-MON-YY• Override format: to_date(b, 'YYYY/MM/DD') • insert into orders (order_id,order_dt,description)

VALUES (2, to_date(‘01-01-2006’,’MM-DD-YYYY’),'desc');

Page 21: SQL - Intro

SelectSELECT [hint][DISTINCT] select_list FROM

table_list [WHERE conditions] [START WITH] [CONNECT BY] [GROUP BY group_by_list] [HAVING search_conditions] [ORDER BY order_list [ASC | DESC] ] [FOR UPDATE for_update_options]

http://www.ss64.com/ora/select.htmlEx: select compname, sum(points) as total, count(*)

as count from scores group by compname having compname like ‘p%’ and sum(points) > 170;

Page 22: SQL - Intro

Select parts - All/Distinct

• SELECT ALL - default; shows one value for every row

• SELECT DISTINCT - skips rows that are identical in the selected columns

Page 23: SQL - Intro

Select Parts - columns • Select columns from tables• Possible column formats:

– column1, column2, column3 – table.column1, table.column2 – table.column1 Col_1_Alias, table.column2

Col_2_Alias– schema.table.column1 Col_1_Alias, – schema.table.column2 Col_2_Alias – schema.table.* – * – expr1, expr2 ex: [client price]*0.6 AS list_price,

Page 24: SQL - Intro

Select parts - tables

• Select columns from tables• Tablename alias, tablename alias• List all tables in query• Oracle will multiply them (cartesian

product)• Where statement selects only those that

have matching information

Page 25: SQL - Intro

Select Parts - group by and having

• Only selects rows that match all fields being grouped.

• Can only select fields that are in the group, and aggregate formulas (like sum, avg)

• Having clause is like where, but on the selected group rows

Page 26: SQL - Intro

Order by

• ORDER BY order_list [ ASC | DESC ] [ NULLS { FIRST | LAST } ]

• Sorting

Page 27: SQL - Intro

Loading the grades database• Download from Blackboard / course information / grade

database and download both files to your pc.• On panther - make and go to new dir:

– mkdir oraclework– cd oraclework

• ftp create_grades.sql and insert_grades.sql to oraclework• On panther again, run both files in sql:

– sqlplus– start create_grades– Start insert_grades

• Verify with select * from cat;

Page 28: SQL - Intro

Select Statements• Examples to try:

– select * from scores;– select sid, (compname), “POINTS” from scores order by

compname;– select sid, points, points*2 as double from scores;– select * from scores where points > 200;– select fname, lname, scores.* from scores, students where

scores.sid = students.sid;– select compname, sum(points) as total, count(*) as count

from scores group by compname having compname like ‘p%’ and sum(points) > 170;