Presentation is loading. Please wait.

Presentation is loading. Please wait.

SQL: Overview and DDL Ch. 10.1 - 10.6 John Ortiz.

Similar presentations


Presentation on theme: "SQL: Overview and DDL Ch. 10.1 - 10.6 John Ortiz."— Presentation transcript:

1 SQL: Overview and DDL Ch. 10.1 - 10.6 John Ortiz

2 Lecture 10SQL: Overview2 Overview  SQL: Structured Query Language, pronounced S. Q. L. or sequel.  A standard language for relational, object- relational databases: SQL-86 by ANSI, SQL1 by ISO (87), SQL-89, SQL2 (92), SQL-1999. Web site: www.ansi.org  Implemented by all commercial R/OR DBMSs: Oracle, Sybase, Ingres, Informix, DB2, SQL Server, … (with various degree of conformity)  We focus on SQL2 & SQL-1999 features and also Oracle SQL.

3 Lecture 10SQL: Overview3 Components of SQL  Have statements for  Schema definition & update  tables, indexes, views, …  Data Manipulation  query, insertion, deletion, update, …  Data integrity  constraints, …  System administration  users, data security, performance tuning, …  Application development  procedures, transaction, embedded SQL, …  …

4 Lecture 10SQL: Overview4 SQL: A Simple Example  Create a Students table create table Students ( SSN char(9) not null, Name varchar2(20), GPA number(3,2), Age number(2), primary key (SSN));  Insert a Student tuple insert into Students values (312334455, ‘John Smith’, 3.25, 29);

5 Lecture 10SQL: Overview5 SQL: A Simple Example (cont.)  Retrieve names of students whose GPA is higher than 3.0 and Age is less than 30. select Name from Students where GPA > 3.0 and Age < 30;  What data types are supported?  What constraints can be expressed? How?  What if I want to change the schema?  How to change data?  How to express more complex queries?

6 Lecture 10SQL: Overview6 Outline  Oracle SQL interface: sqlplus  SQL DDL  Interactive SQL queries, update, view  PL/SQL for procedures, constraints, triggers  Embedded SQL (Oracle Pro*C/C++, JDBC)  Oracle SQL  Standard SQL  Oracle manual: Oracle SQL Reference Manual (on-line).

7 Lecture 10SQL: Overview7 Oracle DBMS  A major commercial DBMS from Oracle (Object-Relational), supporting SQL.  Components: Oracle server, SQL*Plus, Precompilers (Pro*C/C++, …), JDBC driver, SQLJ, WebDB, Forms, Report, …  Platforms: Client-server, PC, Unix or Windows, Distributed, Parallel, …  Multiuser, Security, Transactions, Recovery,  We use it for course project and homework assignments.

8 Lecture 10SQL: Overview8 Oracle DB User Account  Needed for every DB user. Has separate user id & password.  Access through CSLan UNIX accounts.  Environment variables for Oracle access:  Oracle_BASE, Oracle_HOME, PATH, LD_PATH, CLASS_PATH, …  On-line Instructions for using Oracle.  “Using Oracle in CSLab” on course web page.  On-line Oracle manuals (URL is given in the previous article).

9 Lecture 10SQL: Overview9 Oracle SQL*Plus  Interactive user environment.  Runs SQL statements, PL/SQL statements, and other SQL*Plus commands  Allow simple command editing  Documentation:  On-line “help” command within sqlplus  On-line manual.  User login: Unix$sqlplus userid/pwd@csuserid/pwd@cs SQL> exit

10 Lecture 10SQL: Overview10 Use SQL*Plus to Run SQL  SQL*plus understands only Oracle SQL.  An SQL statement must end with semicolon ; a slash / on a line by itself, or a blank line.  An SQL statement can be typed in, or loaded from a.sql file (get filename).  An SQL can be executed from the command buffer (run), or from a.sql file (@filename)  SQL statement in buffer can be written to a.sql file (save filename)

11 Lecture 10SQL: Overview11 Common SQL*Plus Commands  Display schema: describe table_name  Run Unix commands: !command  Run editor on.sql file: edit filename  Set host editor: define_editor=vi  Save a journal file: spool filename spool off  Customize environment: set option  Options: echo on, pause on, pagesize 30, …  View current settings: show all  Configuration file: login.sql

12 Lecture 10SQL: Overview12 SQL*Plus Command Editing  Show command in buffer: list  A set of simple line editing commands.  Better use external editor, say, vi or emacs.

13 Lecture 10SQL: Overview13 SQL Data Definition Language  Used by DBA or Designer to specify schema  A set of statements used to define and to change the definition of tables, columns, data types, constraints, views, indexes, …  SQL DDL & DML are integrated.  A DDL statement often needs to contain some DML statements.

14 Lecture 10SQL: Overview14 A Sample University Schema  Students(SID:string, Name:string, Age:integer, Sex:char, Major:string, GPA:real)  Courses(Cno:string, Title:string, Hours:integer, Dept:string)  Enrollment(SID:string, Cno:string, Year:string, Grade:string)  Offers(Cno:string, Year:integer, FID:string)  Faculty(FID:string, Name:string, Rank:string, Dept:string, Salary:real)  Departments(Name:string, Location:string, ChairID:string)

15 Lecture 10SQL: Overview15 Create Students Table  In SQL*Plus: SQL> create table Students 2 (SID char(9) not null, 3 Name varchar2(25), 4 Age integer, 5 Sex char(1), 6 Major char(4), 7 GPA number(3,2), 8 primary key (SID));

16 Lecture 10SQL: Overview16 Create Tables Syntax create table Table-Name ( Col-Name Type Deft-Val Col-Constraint, … Col-Name Type Deft-Val Col-Constraint, Table-Constraint, … Table-Constraint);

17 Lecture 10SQL: Overview17 Oracle SQL Built-in Data Types  char(n). String of n < 2000 char  varchar2(n). String up to n <= 4000 char  long. Char string of length up to 2GB  number(n,m). n digits, m after decimal point.  number. Integer or real up to 40 digits  integer. Integer up to 40 digits  blob. Binary data up to 4 GB  date. DD-MMM-YY  time. HH:MM:SS  These may differ from SQL2 & SQL-1999.

18 Lecture 10SQL: Overview18 SQL Integrity Constraints  Rules or regulations imposed to ensure data integrity.  Column Constraints.  Table Constraints.  Assertions (Multiple-table Constraints).  Triggers.  Primary Key, Foreign Key, Check, Not Null, Unique, …

19 Lecture 10SQL: Overview19 Column Definition  Syntax for column definition: col_name data_type [default value] [column constraints]  Syntax for column constraints: [constraint constraint_name] [not] null | check condition | unique | primary key | references table_name [(column)] [on delete cascade]

20 Lecture 10SQL: Overview20 Column Constraints  not null. Can not take null value.  unique. Can not have identical non-null values  primary key. Both not null and unique  references T(A). All non-null values must be currently in T.A.  check (condition). Values must satisfy the check condition.  Can be expressed as table constraints, too.

21 Lecture 10SQL: Overview21 Column Constraints Example SQL> create table Courses (CNo char(6) primary key, Title varchar2(50) not null, Hours integer default 3 check (Hours > 0 and hours < 6), Dept varchar2(20) references Departments(Name));

22 Lecture 10SQL: Overview22 Table Constraints  Syntax for table constraints: [constraint constraint_name] check condition | unique (column {, column}) | primary key (column {, column}) | foreign key (column {, column}) references table_name[(column {, column})] [on delete cascade]

23 Lecture 10SQL: Overview23 Table Constraints Example SQL> create table Enrollment (SID char(9) not null references Students, CNo varchar2(7) not null, Year number(2) not null, Grade char(2), primary key (SID, CNo, Year), foreign key (CNo) references Courses);

24 Lecture 10SQL: Overview24 Table Constraints Example (cont.) SQL> create table Students (SID char(9) primary key, Name varchar2(25), Age integer check(Age > 18 and Age < 100), Sex char check(Sex in {‘F’, ‘M’}), Major varchar2(4) GPA number (3,2) not null, constraint ic12 check (GPA >= 2.0 and (Major = ‘IS’ or GPA >= 3.0)));

25 Lecture 10SQL: Overview25 Referential Integrity & Data Update  Assume that Courses.Dept references Departments.Name. What should the system do to students if we change a department’s name or delete a department?  SQL provides four options:  No action. Disallow such an update.  Cascade. Accept update and update all affected foreign key values.  Set default. Accept update & set default FK.  Set null. Accept update & set FK to null.

26 Lecture 10SQL: Overview26 Referential Integrity Example SQL>create table Courses ( CNo char(6) not null primary key, Title varchar(35) not null, Hours int check (Hours between 1 and 5), Dept varchar(20), foreign key (Dept) references Departments(Name) on delete no action on update cascade);

27 Lecture 10SQL: Overview27 Drop Table  Delete schema definition of a table. drop table Table-Name;  Problem: drop table Departments will fail if it is referenced by foreign keys.  Solution: drop table Departments cascade constraints; All referential constraints will be dropped before the table is dropped.

28 Lecture 10SQL: Overview28 Alter Table  Change table schema (even after entering data)  Add a new column. alter table Students add (Address varchar2(40));  Add a new constraint. alter table Students add (unique(Address));  Modify a column definition. alter table Students modify (Name varchar2(30));

29 Lecture 10SQL: Overview29 Alter Table (cont.)  Remove a column. alter table Students drop (Address);  Enable and disable a constraint on a table alter table Students enable constraint ic12; alter table Students disable constraint ic12;  Newly added column can not be specified as not null.  Can not modify a column to a type of a smaller size.

30 Lecture 10SQL: Overview30 Simple Update Statements  Insert Statement: insert into table_name [(column {, column})] [values (expression {, expression})]  Update Statement: update table_name [corr_name] set column = {expression | null} {, column = {expression | null}} [where search_condition]  Delete Statement: delete from table_name

31 Lecture 10SQL: Overview31 Example of Update insert into Students values (`123456789', `Kathy', 26, ‘F’, ‘CS’, null) or insert into Students (Name, SID, Age, Major, Sex) values (`Kathy', `123456789', 26, ‘CS’, ‘F’)

32 Lecture 10SQL: Overview32 Example of Update (cont.)  Increase the GPA of the student with SID = 123456789 by 0.5. update Students set GPA = GPA + 0.5 where SID = '123456789‘  Delete all tuples from Students. delete from Students  The schema of Students remains.

33 Lecture 10SQL: Overview33 Data Dictionary  Data dictionary (system catalog) contains information about all database objects (tables, views, indexes, sequences, etc).  Common Oracle Data Dictionary Tables  user_objects(object_name, object_id, object_type, created, last_ddl_time, timestamp, status)  Example database objects include tables, views, sequences, indexes, and packages.

34 Lecture 10SQL: Overview34 Data Dictionary (cont.)  user_tables(table_name, tablespace_name, num_rows, blocks, empty_blocks, avg_row_len)  user_tab_columns(name, table_name, column_name, data_type, data_length, nullable, column_id, default_length, data_default, num_distinct, low_value, high_value)  Use select * from dictionary to see all system tables and views.  Use describe table-name to view a schema.

35 Lecture 10SQL: Overview35 DDL Summary  Specify appropriate data type for each column. You may also define your own domains.  Specify as many constraints as needed for applications.  Specify desirable actions for foreign key constraints.  Not all constraints can be specified at the same time. It is necessary to update schemas.  Major schema change after data is entered is very costly.

36 Lecture 10SQL: Overview36 Look Ahead  Next topic: Interactive SQL  Read textbook:  Oracle 8 Programming: A primer by R. Sunderraman. Chapter 2.


Download ppt "SQL: Overview and DDL Ch. 10.1 - 10.6 John Ortiz."

Similar presentations


Ads by Google