Day-21SQL

42
Work With Structured Query Language Day 21 Structured Query Language Overview: This module enables the student to understand the concept SQL. Outline: Topics covered, SQL/400 Creation of Table Updating of Table Deletion of Table Embedded SQL Objective: By the end of this module, the student should be able to: Understand the concept of SQL/400 Understand the concept of DDL Understand the concept of DML © DukeStar Technologies Pvt. Ltd. 1/42 No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Transcript of Day-21SQL

Page 1: Day-21SQL

Work With Structured Query LanguageDay 21

Structured Query Language

Overview:This module enables the student to understand the concept SQL.

Outline: Topics covered,

SQL/400 Creation of Table

Updating of Table

Deletion of Table

Embedded SQL

Objective: By the end of this module, the student should be able to:

Understand the concept of SQL/400 Understand the concept of DDL Understand the concept of DML

© DukeStar Technologies Pvt. Ltd. 1/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 2: Day-21SQL

Work With Structured Query LanguageDay 21

Structured Query Language:Structured Query Language (SQL) is an industry-standard language for defining and manipulating data contained in a relational database. It is used for all tasks to relational data management. For example: creating tables, maintain tables, querying tables for information, modifying the data, granting privileges to users, and so on.

SQL includes Data Definition Language (DDL) statements to retrieve and update the contents of a database

Characteristics of SQLo Extremely flexible

o Free form syntax

o Each SQL statement is parsed by the RDBMS before execution, to check for syntax and to optimize the request.

o SQL statements can be written in variety of ways – e.g. Dynamic execution, Static execution embedded in an HLL program.

Dynamic execution of an SQL statement means that you construct a statement as a text string and have the SQL routines interpret and execute the text string. Thus the structure of the statement is changeable.

Verity

An alternative way of executing SQL statements known as static execution lets you code HLL variables within an SQL statement, thus providing the ability to change some of the selection between subsequent execution of the same statements. With static statement, a statement’s structure always remains the same. Only thing changes are values of the program variables.

Advantages of SQLo While using SQL, the programming can specify what data is needed but

need not specify how to retrieve it. That is, SQL is coded without data navigational instructions.

o Increased acceptance and availability of SQL enable end users to deal with different Database Management Systems including Oracle, Microsoft SQL server, and DB2 on other platforms (e.g. IBM Mainframes and Windows NT).

o The application written in SQL can be easily ported across Database Management Systems.

o SQL is independent in a way that it is implemented internally.

o Though the language is simple to use, it can handle complex queries.

o The language has strong theoretical base, and there is no ambiguity about the way a query will interpret the data and produce the result.

o SQL can be used to define data structure control access to the data and delete, insert and modify occurrences of the data. It is not merely a query language.

© DukeStar Technologies Pvt. Ltd. 2/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 3: Day-21SQL

Work With Structured Query LanguageDay 21

o SQL has set-at-a-time feature. That is one SQL statement affects more than one record.

DDL: Data Definition Language

TablesTables are the basic building blocks of any RDBMS. A table consists of a row of column headings and rows (records) of data. We can create, modify and delete tables using data definition language (DDL).o CREATE TABLE: Create table command creates a new table.

Syntax: CREATE TABLE <Table Name>(Field1, Field2,..)

e.g. CREATE TABLE EMPLOYEE (EMPNO INTEGER, EMPNM CHAR(20))

o ALTER TABLE: Alter table command modifies structure of a table. It allows user to add new field or to modify existing filed.

o DROP TABLE: Drop table command deletes a table. All dependent objects including views, indexes and foreign key constraints defined in other base tables that reference the table being dropped are also deleted .

DML: Data Manipulation LanguageThe four main DML statements are:

INSERT: You can use the INSERT statement to add new rows to a table or view one of the following ways:

o Specifying values in the INSERT statement for columns of the single row to be added.

o Specifying proper syntax to add multiple rows into the target table. A multi row insert copies data from one table to another. Although the Insert statement can add rows to only a single table, the inserted rows can be constructed from more than one table.

© DukeStar Technologies Pvt. Ltd. 3/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Syntax: ALTER TABLE <Table Name>(Field1, Field2,..)

e.g. ALTER TABLE EMPLOYEE ADD (SALARY INTEGER)

Syntax: DROP TABLE <Table Name>

e.g. DROP TABLE EMPLOYEE

Syntax: INSERT INTO<Table Name>VALUES(Value1,Value2….)or INSERT INTO <Table Name> (Field1, Field2,…) VALUES (Value1,Value2,…)

e.g. INSERT INTO EMPLOYEE (EMPNO,EMPNM,SALARY) VALUES (1001, ‘SANJAY’,.’20000’)

Syntax: INSERT INTO<Table Name>FROM(Table Name>or INSERT INTO <Table Name> (Field1, Field2,…) SELECT (field1,Field2,…)

e.g. INSERT INTO EMPLOYEE (EMPNO,EMPNM,SALARY) SELECT EMPNO, EMPNM, SALARY FROM OLDFILE

Page 4: Day-21SQL

Work With Structured Query LanguageDay 21

If SQL finds an error while running the INSERT statement, it stops inserting data.

UPDATE: Update command is used to modify data in existing table. It can affect more than one record at a time. With the UPDATE statement, you can change the value of one or more columns in each row that satisfies the search condition of the WHERE clause. The result of the UPDATE statement is one or more changed column values in zero or more rows of a table (depending on how many rows satisfy the search condition specified in the WHERE clause). Use the SET clause to specify a new value for each column you want to update. The SET clause names the columns you want updated and provides the values you want them changed to. The value you specify can be:

o A column name: Replace the column’s current value with the contents of another column in the same row.

o A constant: Replace the column’s current value with the value provided in the SET clause.

o A null value: Replace the column’s current value with null value, using the keyword NULL. The column must be defined as capable of containing a null value when table is created or an error occurs.

o A host variable: Replace the column’s current value with the contents of a host variable.

o An expression: Replace the column’s current value with the value that results from an expression from an expression. The expression can contain any of the values in this list.

To identify the rows to be updated, use the WHERE clause:o To update a single row, use a WHERE clause that selects only one row.

o To update several rows, use a WHERE clause that selects only the rows you want to update.

You can omit the WHERE clause. If you do, SQL updates each row in the table or view with the values you supply.

DELETE: Delete command deletes existing record/s from a table. The result of the DELETE statement is the removal of zero or more rows of a table (depending on how many rows satisfy the search condition specified in the WHERE clause). If you omit the WHERE clause from a DELET statement, SQL removes all the rows of the table.

© DukeStar Technologies Pvt. Ltd. 4/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Syntax: UPDATE<Table Name>SET <Field Name>=<Value> WHERE <Field Name>=<Condition>

e.g. UPDATE, EMPLOYEE SET SALARY=22000 WHERE EMPNO=1001

Syntax: DELETE FROM <Table Name>WHERE<Field>=<Condition>

e.g. DELETE FROM EMPLOYEE WHERE EMPNO = 1001

Page 5: Day-21SQL

Work With Structured Query LanguageDay 21

SELECT: Simple SELECT statement retrieves records from a database. Retrieval an be from more than one table at the same time. ‘SELECT’ statement is powerful and can take quite complex forms. Mastering it is the key to using SQL successfully.Select statement is composed of three main clauses:

o The SELECT clause which specifies those columns containing the desired data. You can specify that only column be retrieved, or as many as 8000 columns. The value of each column you name is retrieved in the order specified in the SELECT clause. If you want to retrieve all columns (in the same order as they appear in the row), use an asterisk (*) instead of naming the columns.

o The FROM clause, which specifies the table or tables containing the columns with the desired data.

o The WHERE clause, which supplies conditions that determine which rows of data are retrieved.

SQL allows you to get information from columns contained in more than one table. This operation is called a join operation. In SQL, a join operation is specified by placing the names of those tables you want to join together into the same FROM clause of a SELECT statement. Whenever the same column name exists in two or more tables being joined, the column name must be qualified by the table name to specify which column is really being referenced.

When SQL evaluates a select statement, several rows might qualify to be in the result table, depending on the number of rows that satisfy the select-statement’s search condition. Some of the rows in the result table might be duplicates. You can specify that you do not want any duplicates by using the DISTINCT keyword, followed by the list os column names. DISTINCT means you want to select only the unique rows.

PredicatesAn SQL predicate is a logical condition that is true, false or unknown for a given row. A predicate is unknown if it involves a comparison and one or both of the values being compared is null. A Select statement’s result table contains only those rows for which the WHERE clause search condition is true. If the search condition is false or unknown, the row is omitted.

WHERE clauseWHERE clause is used in SELECT statement to retrieve records, which satisfy a given condition.

© DukeStar Technologies Pvt. Ltd. 5/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Syntax: SELECT[*/ <Field List>FROM<Table Name>Asterisk (*) will display all the fields (columns) in that table.

e.g. SELECT *FROM EMPLOYEEor SELECT EMPNO, EMPNM FROM EMPLOYEE

Syntax: SELECT FROM <Table Name>WHERE<Condition>

e.g. SELECT FROM EMPLOYEE WHERE EMPNO = 0101

Page 6: Day-21SQL

Work With Structured Query LanguageDay 21

The simplest WHERE clause contains an SQL search condition that is a single SQL predicate, as above.

A WHERE clause with a primary key column lets you use SQL for single row operations. The WHERE clause also may contain a search condition that is two or more SQL predicates connected with ‘AND’ or ‘OR’.

o Multiple Search Conditions within a WHERE Clause:You saw how to qualify a request using one search condition. You can qualify your request further by coding a search condition that includes several predicates. The search condition, is the negated value of the specified search condition. A WHERE clause can have as many predicates as you want.

AND says that, for a row to qualify, the row must satisfy both predicates of the search condition. For example to find out which employees in department D21 were hired after December 31,1987, you would specify:WHERE WORKDEPT=’D21’AND HIREDATE>’1987-12-31’

OR says that, for a row to qualify, the row can satisfy the condition set by either or both predicates of the search condition. For example , to find out which employees are in either department C01 or D11, you could specify (1):WHERE WORKPB01U01D =’C01’ OR WORKDEPT=’D11’

NOT says that, to qualify, a row must not meet the criteria set by the search condition or predicate that follows the NOT. For example, to find all employees in department E11 except those with a job code equal to analyst, you could specify :

WHERE WORKDEPT=’E11’ AND NOT JOB=’ANALYST’

When SQL evaluates search conditions that contain these connectors, it does so in a specific order. SQL first evaluates the NOT clauses, next evaluates the AND clauses, and then the OR clauses. You can change the order of evaluation by using parentheses. The search conditions enclosed in parentheses are evaluated first. For example, to select all employees in departments E11 and E21 who have education levels greater than 12,you could specify:

WHERE EDLEVEL>12 AND(WORKDEPT=’E11’ OR WORKDEPT=’E12’)The parentheses determine the meaning of the search condition. In this example, you want all rows that have a :WORKDEPT value of E11 or E12, and EDLEVEL value greater than 12

If you did not use parentheses:WHERE EDLEVEL > 12 AND WORKDEPT=’E11’ OR WORKDEPT=’E21’Your result is different. The selected rows are rows that have:WORKDEPT =E11 and EDLEVEL.12, orWORKDEPT=E21, regardless of the EDLEVEL value(1) You could also use IN to specify this request: WHERE WORKDEPT IN (‘C01’. ‘D11).

Keywords for Use in Search ConditionsA search condition can contain any of the keywords BETWEEN, AND, …, IN, IS NULL, and LIKE.

© DukeStar Technologies Pvt. Ltd. 6/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 7: Day-21SQL

Work With Structured Query LanguageDay 21

BETWEEN ..AND..is used to specify a search condition that is satisfied by any value that falls on or between two other values. For example. To find all employees who were hired in 1987, you could use this: …WHERE HIREDATE.>=,’1987-01-01’AND’ 1987-12-31’IN says you are interested in rows in which the value of the specified expression is among the values you listed. Fort example, to find the names of all employees in departments A00, C01, and E21,you could specify: …WHERE WORKDEPT IN (‘A00’, ‘C01’, ‘E21’)

LIKE says you are interested in rows in which column value is similar to the value you supply. The value on the left is an expression of character or graphic data. The value on the right must be character data if the expression on string, or host variable on, the right must be graphic. It can be a graphic string or a graphic host variable.

When you use LIKE, SQL searches for a character string similar to the one you specify. The degree of similarity is determined by special character % used in the string that you include in the search condition: %. A percent sign stands for an unknown string of 0 or more characters. If the percent sign starts the search string, then SQL allows 0 or more character(s) to precede the matching, value in the column. Otherwise, the search string must begin in the first position of the column. ….WHERE CITY LIKE ‘Na%’.

How to work with SQL:

Write command STRSQL on command line and press enter as given below:

Work with Members Using PDM S653278B File . . . . . . MYSQL Library . . . . PB01U01S Position to . . . . . Type options, press Enter. 2=Edit 3=Copy 4=Delete 5=Display 6=Print 7=Rename 8=Display description 9=Save 13=Change text 14=Compile 15=Create module... Opt Member Type Text

(No records in file)

Parameters or command ===> STRSQL F3=Exit F4=Prompt F5=Refresh F6=Create F9=Retrieve F10=Command entry F23=More options F24=More keys

© DukeStar Technologies Pvt. Ltd. 7/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 8: Day-21SQL

Work With Structured Query LanguageDay 21

Enter SQL Statements Type SQL statement, press Enter. > rollback d1 Token D1 was not valid. Valid tokens: WORK HOLD. > rollback d1 Token D1 was not valid. Valid tokens: WORK HOLD. > rollback d1 Token D1 was not valid. Valid tokens: WORK HOLD. > rollback d1 Token D1 was not valid. Valid tokens: WORK HOLD. Session was saved and started again. Current connection is to relational database S653278B. > SELECT Prompting was cancelled by the user. ===> SELECT Bottom F3=Exit F4=Prompt F6=Insert line F9=Retrieve F10=Copy line F12=Cancel F13=Services F24=More keys

PRESS F4

Specify SELECT Statement Type SELECT statement information. Press F4 for a list. FROM files . . . . . . . . . PB01U01D/EMP SELECT fields . . . . . . . * WHERE conditions . . . . . . GROUP BY fields . . . . . . HAVING conditions . . . . . ORDER BY fields . . . . . . FOR UPDATE OF fields . . . . Bottom Type choices, press Enter. DISTINCT records in result file . . . . . . . . N Y=Yes, N=No UNION with another SELECT . . . . . . . . . . . N Y=Yes, N=No Specify additional options . . . . . . . . . . . N Y=Yes, N=No F3=Exit F4=Prompt F5=Refresh F6=Insert line F9=Specify subquery F10=Copy line F12=Cancel F14=Delete line F15=Split line F24=More keys HIT ENTER, Which shows message ’Query Running’ and executes all records in Physical File.

© DukeStar Technologies Pvt. Ltd. 8/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 9: Day-21SQL

Work With Structured Query LanguageDay 21

Display Data Data width . . . . . . : 18 Position to line . . . . . Shift to column . . . . . . ....+....1....+... ENO ENM ADDR 101 ABC NNN 102 GGG HHH 104 KKK RRR ******** End of data ******** Bottom F3=Exit F12=Cancel F19=Left F20=Right F21=Split

Specify SELECT Statement Type SELECT statement information. Press F4 for a list. FROM files . . . . . . . . . PB01U01D /EMP SELECT fields . . . . . . . ENO,ENM WHERE conditions . . . . . . ENO=101 GROUP BY fields . . . . . . HAVING conditions . . . . . ORDER BY fields . . . . . . FOR UPDATE OF fields . . . . Bottom Type choices, press Enter. DISTINCT records in result file . . . . . . . . N Y=Yes, N=No UNION with another SELECT . . . . . . . . . . . N Y=Yes, N=No Specify additional options . . . . . . . . . . . N Y=Yes, N=No F3=Exit F4=Prompt F5=Refresh F6=Insert line F9=Specify subquery F10=Copy line F12=Cancel F14=Delete line F15=Split line F24=More keys

HIT ENTER WHICH GIVES YOU FOLLOWING OUTPUT

© DukeStar Technologies Pvt. Ltd. 9/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 10: Day-21SQL

Work With Structured Query LanguageDay 21

Display Data Data width . . . . . . : 11 Position to line . . . . . Shift to column . . . . . . ....+....1. ENO ENM 101 ABC ******** End of data ******** Bottom F3=Exit F12=Cancel F19=Left F20=Right F21=Split

Now how to delete record from table,

Specify DELETE Statement Type choices, press Enter. File . . . . . . . . . . . EMP Name, F4 for list Library . . . . . . . . PB01U01D Name, F4 for list Correlation . . . . . . . Name Type WHERE conditions, press Enter. ENO = 104 Bottom Type choices, press Enter. WITH isolation level . . . 1 1=Current level, 2=NC (NONE) 3=UR (CHG), 4=CS, 5=RS (ALL) 6=RR F3=Exit F4=Prompt F5=Refresh F6=Insert line F9=Specify subquery F10=Copy line F12=Cancel F14=Delete line F15=Split line F24=More keys

Which shows result as given below,

© DukeStar Technologies Pvt. Ltd. 10/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 11: Day-21SQL

Work With Structured Query LanguageDay 21

Enter SQL Statements Type SQL statement, press Enter. > SELECT * FROM EMP SELECT statement run complete. > SELECT * FROM EMP/PB01U01D PB01U01D in EMP type *FILE not found. > SELECT * FROM PB01U01D/EMP SELECT statement run complete. > SELECT ENO,ENM FROM PB01U01D/EMP SELECT statement run complete. > SELECT ENO,ENM FROM PB01U01D/EMP WHERE ENO=101 SELECT statement run complete. > DELETE FROM PB01U01D/EMP WHERE ENO=104 1 rows deleted from EMP in PB01U01D . ===> Bottom F3=Exit F4=Prompt F6=Insert line F9=Retrieve F10=Copy line F12=Cancel F13=Services F24=More keys

How to insert a record in Physical File:

Enter SQL Statements Type SQL statement, press Enter. > SELECT * FROM PB01U01D/EMP SELECT statement run complete. > SELECT ENO,ENM FROM PB01U01D/EMP SELECT statement run complete. > SELECT ENO,ENM FROM PB01U01D/EMP WHERE ENO=101 SELECT statement run complete. > DELETE FROM PB01U01D/EMP WHERE ENO=104 1 rows deleted from EMP in PB01U01D . Session was saved and started again. Current connection is to relational database S653278B. > DELETE FROM PB01U01D/EMP WHERE eno < 100 and eno >102 Row not found for DELETE. ===> INSERT Bottom F3=Exit F4=Prompt F6=Insert line F9=Retrieve F10=Copy line F12=Cancel F13=Services F24=More keys

Press F4:

© DukeStar Technologies Pvt. Ltd. 11/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 12: Day-21SQL

Work With Structured Query LanguageDay 21

Specify INSERT Statement Type choices, press Enter. INTO file . . . . . . . . EMP Name, F4 for list Library . . . . . . . . PB01U01D Name, F4 for list Select fields to insert INTO . . . . . . . . . N Y=Yes, N=No Insertion method . . . . 1 1=Input VALUES 2=Subselect Type choices, press Enter. WITH isolation level . . 1 1=Current level, 2=NC (NONE) 3=UR (CHG), 4=CS, 5=RS (ALL) 6=RR F3=Exit F4=Prompt F5=Refresh F12=Cancel F20=Display entire name F21=Display statement

PRESS ENTER

Specify INSERT Statement Type values to insert, press Enter. Field Value ENO 103 ENM ‘DUKE’ ADDR ‘PUNE’ Bottom F3=Exit F5=Refresh F6=Insert line F10=Copy line F11=Display type F12=Cancel F14=Delete line F15=Split line F24=More keys

HIT ENTER

© DukeStar Technologies Pvt. Ltd. 12/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 13: Day-21SQL

Work With Structured Query LanguageDay 21

Enter SQL Statements Type SQL statement, press Enter. > INSERT INTO PB01U01D/EMP VALUES(103, WWW, RRR) Column RRR not in specified tables. > INSERT INTO PB01U01D/EMP VALUES(103, WWW, RRR) Column RRR not in specified tables. > INSERT INTO PB01U01D/EMP VALUES(103, WWW) Column WWW not in specified tables. > INSERT INTO PB01U01D/EMP VALUES(103) Statement contains wrong number of values. > INSERT INTO PB01U01D/EMP VALUES(103, 'RR', 'PP') 1 rows inserted in EMP in PB01U01D . > INSERT INTO PB01U01D/EMP VALUES(104, 'DUKE', 'PUNE') 1 rows inserted in EMP in PB01U01D . ===> Bottom F3=Exit F4=Prompt F6=Insert line F9=Retrieve F10=Copy line F12=Cancel F13=Services F24=More keys

Check that above record is inserted in EMP, use select statement on command line to check it,

‘SELECT * FROM PB01U01D/EMP’

Following is the output

Display Data Data width . . . . . . : 18 Position to line . . . . . Shift to column . . . . . . ....+....1....+... ENO ENM ADDR 101 ABC NNN 102 GGG HHH 103 RR PP 104 DUKE PUNE ******** End of data ******** Bottom F3=Exit F12=Cancel F19=Left F20=Right F21=Split

How to update record from Physical file,

© DukeStar Technologies Pvt. Ltd. 13/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 14: Day-21SQL

Work With Structured Query LanguageDay 21

Enter SQL Statements Type SQL statement, press Enter. > RUNQRY Token RUNQRY was not valid. Valid tokens: ( END SET CALL DROP FREE H > RUNQURY Token RUNQURY was not valid. Valid tokens: ( END SET CALL DROP FREE > RUNQRY Token RUNQRY was not valid. Valid tokens: ( END SET CALL DROP FREE H > SELECT * FROM PB01U01D/EMP SELECT statement run complete. > UPDATE PB01U01D/EMP SET ENM = 'SSS' WHERE ENO =104 1 rows updated in EMP in PB01U01D . > UPDATE Prompting was cancelled by the user. ===> UPDATE Bottom F3=Exit F4=Prompt F6=Insert line F9=Retrieve F10=Copy line F12=Cancel F13=Services F24=More keys

PRESS F4

Specify UPDATE Statement Type choices, press Enter. File . . . . . . . . . EMP Name, F4 for list Library . . . . . . PB01U01D Name, F4 for list Correlation . . . . . Name F3=Exit F4=Prompt F5=Refresh F12=Cancel F20=Display entire name F21=Display statement

PRESS ENTER

© DukeStar Technologies Pvt. Ltd. 14/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 15: Day-21SQL

Work With Structured Query LanguageDay 21

Specify UPDATE Statement Type choices, press Enter. File . . . . . . . . . EMP Name, F4 for list Library . . . . . . PB01U01D Name, F4 for list Correlation . . . . . Name Type information, press Enter. Field Value ENO ENM 'TTT' ADDR Bottom F3=Exit F4=Prompt F5=Refresh F6=Insert line F10=Copy line F11=Display type F12=Cancel F14=Delete line F24=More keys

HIT ENTER

Specify UPDATE Statement Type WHERE conditions, press Enter. Press F4 for a list. ENO = 104 Bottom Type choices, press Enter. WITH isolation level . . . 1 1=Current level, 2=NC (NONE) 3=UR (CHG), 4=CS, 5=RS (ALL) 6=RR F3=Exit F4=Prompt F5=Refresh F6=Insert line F9=Specify subquery F10=Copy line F12=Cancel F14=Delete line F15=Split line F24=More keys

PRESS ENTER

© DukeStar Technologies Pvt. Ltd. 15/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 16: Day-21SQL

Work With Structured Query LanguageDay 21

Enter SQL Statements Type SQL statement, press Enter. > RUNQRY Token RUNQRY was not valid. Valid tokens: ( END SET CALL DROP FREE H > SELECT * FROM PB01U01D/EMP SELECT statement run complete. > UPDATE PB01U01D/EMP SET ENM = 'SSS' WHERE ENO =104 1 rows updated in EMP in PB01U01D . > UPDATE PB01U01D/EMP SET ENM = 'TTT' WHERE ENO = 104 1 rows updated in EMP in PB01U01D . ===> Bottom F3=Exit F4=Prompt F6=Insert line F9=Retrieve F10=Copy line F12=Cancel F13=Services F24=More keys

SEE THE OUTPUT USING SELECT STATEMENT.

In last section how to create a table with constraints in SQL,

Types of constraints:o Domain integrity constraints: These constraints set a range and any

violation that takes place will prevent the user performing the manipulation. There are two types of Domain integrity constraints.

Not Null: This constraint does not allow null values in a field or set of fields.

Check: These constraints allow only particular set of values. Every record should satisfy the condition defined in Check constraint.

o Entity integrity constraints: Entity is any data stored in a database. Each entity represents a table in a database and each record in that table represents instance of that entity. By using entity integrity constraints, each record in the table can be uniquely defined. There are two types of Entity integrity constraints.

© DukeStar Technologies Pvt. Ltd. 16/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Syntax: CREATE TABLE <Table Name>(<Field><Data Type>NOT NULL, <Field 2><Data Type> NOT NULL)

e.g. CREATE TABLE EMPLOYEE (EMPNO INTEGER NOT NULL, EMPNM CHAR(25) NOT NULL)

Syntax: CREATE TABLE <Table Name>(<Field><Data Type>NOT NULL, <Field 2><Data Type> CONSTRAINT<Constraint Name>CHECK (Cond.))

e.g. CREATE TABLE EMPLOYEE (EMPNO INTEGER NOT NULL, EMPNM CHAR(25) NOT NULL, SALARY INTEGER CONSTRAINT CSAL CHECK(SALARY . 15000))

Page 17: Day-21SQL

Work With Structured Query LanguageDay 21

Unique: This constraint does not allow duplicate values in a column or set of columns. But it allows null values. This constraint can be defined at both-column as well as row level.

Primary Key: This constrain does not allow duplicate as well as null values. A table an have only one primary key. If primary key is assigned to more than one column then it is said to be composite key. Primary key can be defined at both-column as well as row level.

o Referential integrity constraints: These constraints are used to establish Parent-Child relationship between two tables having common column. To establish this relationship, a column in the parent table should be defined as primary key. and same column in the child table should be foreign key. The foreign key column in the child should refer to corresponding column in the parent table.

© DukeStar Technologies Pvt. Ltd. 17/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Syntax: CREATE TABLE <Table Name>(<Field><Data Type>NOT NULL, <Field 2><Data Type> CONSTRAINT<Constraint Name> UNIQUE)Or CREATE TABLE <Table Name>(<Field><Data Type>NOT NULL, <Field 2><Data Type> CONSTRAINT<Constraint Name> UNIQUE)(<Field1>))

e.g. CREATE TABLE EMPLOYEE (EMPNO INTEGER CONSTRAINT CEMP UNIQUE, EMPNM CHAR(25) NOT NULL,Or CREATE TABLE EMPLOYEE (EMPNO INTEGER EMPNM CHAR(25) NOT NULL CONSTRAINT CEMP UNIQUE(EMPNO))

Syntax: CREATE TABLE <Table Name> (<Field1><Data Type> NOT NULL, <Field 2> <Data Type> CONSTRAINT <Constraint Name> PRIMARY KEY)Or CREATE TABLE <Table Name>(<Field1><Data Type>NOT NULL, <Field 2><Data Type> CONSTRAINT<Constraint Name> PRIMARY KEY) (<Field1>))

e.g. CREATE TABLE EMPLOYEE (EMPNO INTEGER CONSTRAINT CEMP PRIMARY KEY, EMPNM CHAR(25) NOT NULL,Or CREATE TABLE EMPLOYEE (EMPNO INTEGER EMPNM CHAR(25) NOT NULL CONSTRAINT CEMP PRIMARY KEY(EMPNO))

Syntax: CREATE TABLE <Child Table Name> (<Field1><Data Type> NOT NULL, <Field 2> <Data Type> CONSTRAINT <Constraint Name> REFERENCES<Parent Table Name(<Field>)>)Or CREATE TABLE <Child Table Name>(<Field1><Data Type>NOT NULL, FOREIGN KEY <Field 2><Data Type> CONSTRAINT<Constraint Name> REFERENCES<Parent Table Name (<Field>)>)

e.g. CREATE TABLE EMPLOYEE (EMPNO INTEGER DEPTID EMPNM CHAR(25) CONSTRAINT CDID REFERENCES DEPT –MAST (DEPTID))Or CREATE TABLE EMPLOYEE (EMPNO INTEGER FOREIGN KEY DEPTID CHAR(25) CONSTRAINT CDID REFERENCES DEPT-MAST (DEPTID))

Page 18: Day-21SQL

Work With Structured Query LanguageDay 21

Drop Constraints: Constraints defined on a table can be dropped with the help of alter table command with Drop Constraint keyword.

Syntax:ALTER TABLE <Table Name> DROP CONSTRAINT <Constraint Name>

e.g. ALTER TABLE EMPLOYEE DROP CONSTRAINT CDID

Enter SQL Statements Type SQL statement, press Enter. > SELECT * FROM PB01U01D/EMP SELECT statement run complete. > UPDATE PB01U01D/EMP SET ENM = 'SSS' WHERE ENO =104 1 rows updated in EMP in PB01U01D . > UPDATE Prompting was cancelled by the user. > UPDATE Prompting was cancelled by the user. > UPDATE PB01U01D/EMP SET ENM = 'TTT' WHERE ENO = 104 1 rows updated in EMP in PB01U01D . ===> CREATE Bottom F3=Exit F4=Prompt F6=Insert line F9=Retrieve F10=Copy line F12=Cancel F13=Services F24=More keys

PRESS F4 and select option 5.

© DukeStar Technologies Pvt. Ltd. 18/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 19: Day-21SQL

Work With Structured Query LanguageDay 21

Select CREATE Statement Select one of the following: 1. CREATE ALIAS 2. CREATE COLLECTION 3. CREATE INDEX 4. CREATE PROCEDURE 5. CREATE TABLE 6. CREATE VIEW Selection 5 F3=Exit F12=Cancel PRESS ENTER AND FILL THE FOLLOWING INFORMATION-

Specify CREATE TABLE Statement Type information, press Enter. File . . . . . . . . . . DEPT Name Library . . . . . . . PB01U01D Name, F4 for list Nulls: 1=NULL, 2=NOT NULL, 3=NOT NULL WITH DEFAULT Field FOR Field Type Length Scale Nulls DID NUMERIC 3 0 3 DNM CHAR 5 3 HOD CHAR 7 3 3 3 3 3 Bottom File CONSTRAINT . . . . . . . . . . . . . Y Y=Yes, N=No Distributed File . . . . . . . . . . . . . N Y=Yes, N=No F3=Exit F4=Prompt F5=Refresh F6=Insert line F10=Copy line F11=Display more attributes F12=Cancel F14=Delete line F24=More keys PRESS ENTER

© DukeStar Technologies Pvt. Ltd. 19/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 20: Day-21SQL

Work With Structured Query LanguageDay 21

Specify CREATE TABLE Statement Type constraint option, press Enter. 1=Add 2=Change 4=Drop Opt Type Constraint Fields 1 Bottom F3=Exit F5=Refresh F12=Cancel F20=Display entire name F21=Display statement No constraints defined, press Enter to add a constraint

PRESS ENTER

Specify CREATE TABLE Statement Type constraint information, press Enter. Type . . . . . . . . 1 1=PRIMARY KEY, 2=UNIQUE 3=FOREIGN KEY, 4=CHECK Constraint . . . . . PRIMARY KEY Name, Blank to generate F3=Exit F4=Prompt F5=Refresh F12=Cancel F20=Display entire name F21=Display statement PRESS ENTER

© DukeStar Technologies Pvt. Ltd. 20/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 21: Day-21SQL

Work With Structured Query LanguageDay 21

Specify CREATE TABLE Statement Type constraint information, press Enter. Type . . . . . . . . 1 1=PRIMARY KEY, 2=UNIQUE 3=FOREIGN KEY, 4=CHECK Constraint . . . . . Name, Blank to generate Fields . . . . . . . DID Name, F4 for list Bottom F3=Exit F4=Prompt F5=Refresh F6=Insert line F10=Copy line F12=Cancel F14=Delete line F20=Display entire name F24=More keys

PRESS ENTER TO GET FOLLOWING SCREEN

Specify CREATE TABLE Statement Type constraint option, press Enter. 1=Add 2=Change 4=Drop Opt Type Constraint Fields PRIMARY KEY DID Bottom F3=Exit F5=Refresh F12=Cancel F20=Display entire name F21=Display statement

HIT ENTER

© DukeStar Technologies Pvt. Ltd. 21/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 22: Day-21SQL

Work With Structured Query LanguageDay 21

Enter SQL Statements Type SQL statement, press Enter. > UPDATE PB01U01D/EMP SET ENM = 'TTT' WHERE ENO = 104 1 rows updated in EMP in PB01U01D. > CREATE Prompting was cancelled by the user. > CREATE TABLE PB01U01D /DEPT (DID NUMERIC (3 , 0) NOT NULL WITH DEFAULT, DNM CHAR (5 ) NOT NULL WITH DEFAULT, HOD CHAR (7 ) NOT NULL WITH DEFAULT, PRIMARY KEY (DID)) Table DEPT in PB01U01D created but could not be journaled. ===> Bottom F3=Exit F4=Prompt F6=Insert line F9=Retrieve F10=Copy line F12=Cancel F13=Services F24=More keys

NOW CHECK THE TABLE USING SELECT QUERY.

In this way try insert, update and delete command on DEPT1 table.

FunctionsA function is an operation denoted by a function name followed by one or more operands, which are enclosed in parentheses. The operands of functions are called arguments. Most functions have a single argument that is specified by an expression. The result of a function is a single value derived by applying the function to the result of the expression.

General rules

o For AVG and SUM functions, arguments must be of type numeric.

o Except COUNT (*) the argument may be preceded by the key word DISTINCT to eliminate duplicate records before the function is actually applied to the selected field. The default value is ALL.

o The function COUNT (*) is used in all records without any duplicate elimination and hence DISTINCT is not applicable to this function.

o Any Nulls in the selected field are eliminated before the function is applied regardless of whether DISTINCT is used or not. But in case of COUNT (*) all the Nulls are treated as normal values.

o In case of computers using ASCII character set, the order is Digits, Uppercase letters, Lowercase letters, while in case of computers, using EBCDIC query using ORDER BY clause, with MAX and MIN functions, can produce different results in the two systems.

Common functions

© DukeStar Technologies Pvt. Ltd. 22/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 23: Day-21SQL

Work With Structured Query LanguageDay 21

o COUNT() and COUNT(*):COUNT () function is used to count number of values in a field, while COUNT (*) function is used to count number of records of the query result.

o SUM: SUM function is used to calculate sum of values in a field.

o AVG: AVG function is used to calculate

o MAX:MAX function is used to find minimum of value in a field.

Above assignment completes the simple command of SQL/400. Following section includes the embedded SQL i.e. SQL in RPG programming.

Embedded SQL:Unrestricted dynamic execution of Insert, Update or Delete is dangerous. Ad hoc entry of statements can be error prone. More over situations in an application may arise where a single SQL command or a set of SQL commands alone will not be able to meet the requirements. Some such situations are:

Reading data from a file and conditionally using it to insert/update rows. Processing data from multiple files to produce a report. Utilizing user input to query.

© DukeStar Technologies Pvt. Ltd. 23/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Syntax: SELECT COUNT(*/Field Name) FROM <Table Name> WHERE <Condition> GROUP BY <Field Name>

e.g. SELECT COUNT(*) FROM EMPLOYEEor SELECT COUNT (EMPNO)FROM EMPLOYEE WHERE DEPT=’ACC’or SELECT COUNT (EMPNO) FROM EMPLOYEE GROUP BY DEPT.

Syntax: SELECT SUM(Field Name) FROM <Table Name> WHERE <Condition> GROUP BY <Field Name>

e.g. SELECT COUNT (SALARY)FROM EMPLOYEE WHERE DEPT=’ACC’or SELECT COUNT (SALARY) FROM EMPLOYEE GROUP BY DEPT.

Syntax: SELECT AVG (<Field Name>) FROM <Table Name> WHERE <Condition> GROUP BY <Field Name>

e.g. SELECT AVG (SALARY)FROM EMPLOYEE WHERE DEPT=’ACC’or SELECT AVG (SALARY) FROM EMPLOYEE GROUP BY DEPT.

Syntax: SELECT MAX (<Field Name>) FROM <Table Name> WHERE <Condition> GROUP BY <Field Name>e.g. SELECT MIN (SALARY)FROM EMPLOYEE WHERE DEPT=’ACC’or SELECT MIN (SALARY) FROM EMPLOYEE GROUP BY DEPT.

Page 24: Day-21SQL

Work With Structured Query LanguageDay 21

Traditional programming languages are better equipped to handle such requirements as they support constructs for control flow. Report formatting and screen handling etc. that are not supported by SQL.

‘Embedded SQL’ in conventional programming languages provides SQL statements from HLL: You code all embedded SQL statement in C spec and before each SQL statement; you code /EXEC SQL in positions 7 through 15. After each SQL statement you code /END-EXEC in delimiters must have a + in position 7.

In SQL, a program variable coded in an embedded SQL statement is referred to as host variable. Host variables should be declared before the first use in SQL and always should start with a ‘:’ within a SQL The syntax of an SQL statement, when using interactive SQL, differs slightly from the format of the same statement when it is embedded in a program.

SQL statements can be embedded in high-level languages, dynamically prepared and run, or run interactively.

For a static SELECT statement (one embedded in an SQL program), an INTO clause must be specified before the FROM clause. The INTO clause names the host variables (variables in your program used to contain retrieved column values). The value of the first result column specified in the SELECT clause is put into the first host variable named in the INTO clause; the second value is put into the second host variable, and so on.

The select-statement embedded in the INSERT statement is no different from the select-statement you use to retrieve data.

Syntax for Embedded SQL is /EXEC SQL--------------------------------/END-EXEC

Following is the example for select statement in embedded SQL

Physical file name : EMPRPG Program name : PM1Source Type : SQLRPGDescription : ‘Simple SQL program’

© DukeStar Technologies Pvt. Ltd. 24/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 25: Day-21SQL

Work With Structured Query LanguageDay 21

Step 1: EMP is Physical file

Columns . . . : 1 71 Edit PB01U01D/MYSQL SEU==> EMP *************** Beginning of data ************************************* 0000.01 A R EMPR 0001.00 A ENO 3S 0 0003.00 A ENM 5A 0003.01 A ADDR 5A 0004.00 A K ENO ****************** End of data ****************************************

Step 2: In embedded SQL RPG program for select statement is given below-

Columns . . . : 1 71 Edit PB01U01D/MYSQL SEU==> PM1 *************** Beginning of data ************************************* 0001.00 C Z-ADD50 N1 30 0002.00 C MOVEL*BLANK NM 5 0002.01 C MOVEL*BLANK AD 5 0003.00 * 0004.00 C/EXEC SQL 0005.00 C+ SELECT ENM,ADDR INTO :NM,:AD FROM EMP WHERE ENO = 102 0006.00 C/END-EXEC 0007.01 C NM DSPLY 0007.02 C AD DSPLY 0008.00 C SETON LR ****************** End of data ****************************************

In above example we are defining variables N1, NM, AD to move or select values from physical file and make it displayed using simple RPG.

Using a Cursor:When SQL runs a select statement, the resulting rows comprise the result table. A cursor provides a way access a result table. It is used within an SQL program to maintain a position in the result table. SQL uses a cursor to work with the rows in the result table although each must have a unique name.

© DukeStar Technologies Pvt. Ltd. 25/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 26: Day-21SQL

Work With Structured Query LanguageDay 21

A DECLARE CURSOR statement to open and close the cursor for use within the program. The cursor must be opened before any rows can be retrieved.

A FETCH statement to retrieve rows from the cursor’s result table or to position the cursor on another row. The step is iterated till all rows are fetched and processed.

An UPDATE… WHERE CURRENT OF statement to update the current row of a cursor.

A DELETE … WHERE CURRENT OF statement to delete the current row of a cursor.

Steps for using a cursor:Define the cursor: The DECLARE CURSOR statement names a cursor and specifies a select-statement. The select-statement defines a set of rows that, conceptually, make up the result table.

Open the Cursor: To begin processing the rows of the result table, issue the

OPEN statement. When your program issues the OPEN statement, SQL processes the select – statement within the DECLARE CURSOR statement to identify a set of rows, called a result table (1), using the current value of any host variables specified in the select statement.

Retrieve a Row Using a Cursor: To move the contents of a selected row into your program’s host variables use the FETCH statement. The SELECT statement within the DECLARE CURSOR statement identifies rows that contain the column values your program wants. However, SQL does not retrieve any data for your application program until the FETCH statement is issued.

When your program issues the FETCH statement, SQL uses the current cursor position as a starting point to locate the requested row in the result table. This changes that row to the current row. If an INTO clause was specified, SQL moves the current row’s contents into your program’s host variables. This sequence is repeated each time the FETCH statement is issued. SQL maintains the position of the current row (that is, the cursor points to the current row) until the next FETCH statement for the cursor is issued.

Specify What to Do When End- of – Data Is Reached: To find out when the end of the result table is reached, test the SQLCOD field for a value of 100 or test the SQLSTATE field for a value of ‘02000’ (that is, end – of – data). This condition and your program issues a subsequent FETCH. Your program should anticipate an end- of – data condition

© DukeStar Technologies Pvt. Ltd. 26/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

/EXEC SQL+ DECLARE cursor-name CURSOR FOR+SELECT column-1, column- 2 …+ FROM table-name , …+ WHERE … (optional)/END-EXEC

/EXEC SQL+ OPEN cursor – name/END–EXEC

/EXEC SQL+ FETCH cursor – name+ INTO : host variable -1 [, : Host variable – 2] …/END – EXEC

Page 27: Day-21SQL

Work With Structured Query LanguageDay 21

whenever a cursor is used to fetch a row, and should be prepared to handle this situation when it occurs.Close the Cursor: If you processed the rows of a result table for a serial cursor, and you want to use the cursor again, issue a CLOSE statement to close the cursor when the job ends.

SQLCODThe database manager sets the SQLCOD values after each SQL statement is executed. An application can check the SQLCOD value to determine whether the last SQL statement was successful. SQL does not communicate directly with end user but rather returns error codes to the application program when an error occurs.

There are many other SQL messages, but they are not listed here. Detailed descriptions of all DB2 for OS/400 messages, including SQLCODE s, are available on-line and can be displayed and printed from the Display Message Description display. You can access this display by using the CL command Display Message Description (DSPMSGD).

SQLCODE are returned in the SQLCA (SQL communication area) structure. SQLSTATE is an additional return code that provides application programs with common return codes for common error conditions found among the IBM relational, database systems. Every SQLCOD has a corresponding message in message file QSQLMSG in library QSYS.

Status of an embedded SQL execution is returned in a variable SQLCOD. SQLCOD value 0 = successful execution SQLCOD value 100 = not found Negative SQLCOD value = error.

Code related to CURSOR:Columns . . . : 1 71 Edit PB01U01S/MYSQL SEU==> PM3 FMT FX .....FFilenameIPEAF........L..I........Device+......KExit++Entry+A....U *************** Beginning of data ************************************* 0000.02 FDSP1 CF E WORKSTN 0000.03 * 0000.04 C/EXEC SQL 0000.05 C+ DECLARE C1 CURSOR FOR 0000.06 C+ SELECT ENO,ENM,ADDR FROM EMP 0000.07 C/END-EXEC 0000.08 * 0000.09 C/EXEC SQL 0000.10 C+ OPEN C1 0000.11 C/END-EXEC 0000.12 * 0000.13 C SQLCOD DOWEQ0 0000.14 * 0000.15 C/EXEC SQL 0000.16 C+ FETCH C1 INTO :NO, :NM, :AD 0000.17 C/END-EXEC 0000.18 * 0000.19 C EXFMTREC3 0000.20 C SQLCOD IFEQ 100 0000.21 C GOTO A 0000.22 C ENDIF 0000.23 C ENDDO 0000.24 * 0000.25 C/EXEC SQL 0000.26 C+ CLOSE C1 ****************** End of data ****************************************

© DukeStar Technologies Pvt. Ltd. 27/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.

Page 28: Day-21SQL

Work With Structured Query LanguageDay 21

F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display F24=More keys

© DukeStar Technologies Pvt. Ltd. 28/28No part of this document can be copied, reproduced in any form, complete or partial without written consent from DukeStar Technologies Pvt. Ltd.