Você está na página 1de 13

SQL QUERY STATEMENTS

 Update statement can not contains column names


Update empname,empno from emp where empno=40;----Error

 TIMESTAMP, INTERVAL DAY TO SECOND and INTERVAL YEAR TO MONTH can be used to
specify column definition.

 SELECT empno,empname,NVL(jobid,’none’) from emp;oracle returns error cause:none value is not given as value
for number datatype ,if null is there in table with datatype string then ‘none’ can bedisplayed.

 "Invoice" and "Invoice Items" Not Fk relation,It is "parrent -child relation" ,cause "one invoice can have more than
one items and none items also" which is OPTIONAL ,thats why here it is not Fk relation,It is Parrent Child Relation
exists.

 .TRUNCATE TABLE TABLENAME.means it will delete higher water mark

 Variable defined will remain untill session complete.

 "USED to change the default character indentifies runtime variable" SET DEFINE COMMAND

 When null data fed into group functions then the result is always "NULL" like .......(SUM(SAL)......having sal values
as null ).

 If we are executing mathamatical expressions on "user defined statistics" in our query,then where clause does not
indentify the component of a query.
If we use mathematical expression on "statistical expression" then where clause identifies: like(select * from emp
where empsal =6700-2?.....selects values of sal=6698)where clause identifies.

 column padded to 7 digits right and have value SMITHY, So length of that column is "13" not "5".

 Which SQL statement will return the ENAME, length of the ENAME, and the numeric position of the letter "a" in
the ENAME column, for those employees whose ENAME ends with a the letter "n"?
SELECT ENAME, LENGTH(ENAME), INSTR(ENAME, 'a') FROM EMPLOYEES WHERE SUBSTR(ENAME,
-1, 1) = 'n';

 MERGE UPDATE DELETE MODIFY all are DML.

 Top N analysis requires ROWNUM and ORDER BY,An INLINE view and an OUTER QUERY.
 SELECT *
FROM emp
WHERE commission = (SELECT commission
FROM emp
WHERE emp_id = 3);Query returns no rows but not give any error

 "Dear Customer customer_name, "


SELECT 'Dear Customer ' || customer_name || ',' FROM customers;

 ROWID:a hexadecimal string representing the unique address of a row in its table

1
 Two Date columns (SUBSTRACTION)MINUS will give numeric value.

 Create synonym
 Your tables have difficult names
 You want to use another schema's tables

 TO_CHAR function performs


 convert 10 to '10'
 convert a date to a character expression

 the alias Annual Salary for the calculated SELECT id, name AS "Name", salary * 12 AS "Annual salary" FROM
employee;
 SELECT id, name "Name", salary * 12 "Annual salary" FROM employee;
 SELECT id, name "Name", salary * 12 as Annual salary FROM employee;

 SELECT name || ' is a ' || jobtitle AS 'Employee Detaisl' FROM employee;

 INSERT INTO (SELECT * FROM employees WHERE department_id IN (20,50) WITH CHECK
OPTION)VALUES
(emp_id_seq.NEXTVAL, '&ename', '&jobid', 2000, NULL, &did);

 DEPARTMENT_ID = NULL,Not to use =,But use IS, DEPARTMENT_ID IS NULL

 SELECT LOWER (TRIM ('H' FROM 'Hello World')) FROM dual

 "Nineteenth of March 2001 12:00:00 AM"


SELECT TO_CHAR(TO_DATE('19-Mar-2001', 'DD-Mon-YYYY'), 'fmDdspth "of" Month YYYY fmHH:MI:SS
AM') NEW_DATE FROM dual;

 SELECT LPAD(salary,10,*) has a salary of 17000, return *****17000 , For number (10,2)****170.00

 use the USING clause


 The tables to be joined have multiple NULL columns.
 The tables to be joined have columns with the same name and compatible data types.
 You want to use a NATURAL join, but you want to restrict the number of columns in the join condition.

 TO_DATE function
 convert any date literal to a date
 format 'January 10 1999' for input

 character manipulation functions TRIM REPLACE

 DELETE employee_id, salary, job_id


FROM employees
WHERE dept_id = 90;
You cannot specify column names in the DELETE clause of the DELETE statement.

 SELECT subj1+subj2 total_marks, std_id


FROM marks
WHERE subj1 > AVG (subj1) AND subj2 > AVG (subj2)
ORDER BY total_marks; The statement returns an error at the WHERE clause

2
MERGE INTO ,We should not use table name in the update set clause and also we should not use table names in insert
values() of merge into statement.

OrderBy GroupBy
 default behavior of the ORDER BY clause ASC
 Date values are displayed with the earliest Date first .
 Numeric values are displayed with the lowest values first.
 Null value will be at last if it is asc order.
 Null value will be at beginning at desc order

 Column alias names can not be used in Group by clause,But can be used in Order By clause , otherwise gives an
error.
Select empname en ,empno no ,max(sal) maxsal from emp
Group by en,order by maxsal.—Error

 Select * from emp where dept in (select dept from valid_dept where dept_head='soni' order by dept); Oracle returns
error cause order by can not be used in subquery,But group by can be used insub query.
ex: SELECT last_name
FROM employees
WHERE salary IN (SELECT MAX(salary)
FROM employees
GROUP BY department_id);syntax is correct

 Select farm_name,cow_name
Count(carton) as number
From cowmilk
Group by cow_name;
Oracle returns error cause Non_group columns in the select statements should come left to the group columns and
should be mensioned in the grop by clause otherwise oracle returns an error.

• N-dimensional cross Tabulatioun is done by "CUBE " in "GROUP BY " clause.

• To remove redundancy of group by clause excution by using "With "clause can be done.

VIEWS
 For adding forth column for already existing view with 3column then
CREATE OR REPLACE VIEW emp_dept_vu AS
SELECT employee_id, employee_name
Department_name, manager_id
FROM employees e, departments d
WHERE department_id = d.department_id;

 Only job alter view can perform is recompiling an invalid viewALTER VIEW EMP_DEPT_VW COMPILE:

 Views
 A view can be created as read only
3
A view can be created as a join on two or more tables.

 Can not update,delete,insert data in a view with group functions and distinct

 Can not modify data of a column in a view with single row functions and functions with pseudo column.Other
columns can be modified

 We can delete the data in a view if this view is not having all columns in the original table also.

 If we have filter criteria in a view then we have to use check option for that …for users not to enter the values other
than the filter option…otherwise oracle gives error….or oracle gives simply 0 rows were inserted.

 DELETE, INSERT, SELECT, UPDATE, object privileges can be granted on a view.

 What does the FORCE option for creating a view do? creates a view regardless of whether or not the base tables
exist

 CREATE VIEW emp_vu AS SELECT * FROM employees WHERE department_id IN (10,20) WITH CHECK
OPTION;With check option ,user cannot modify view but he can manipulate data for a view for updatable columns
of key preserved tables.

.
COMPLEX VIEWS
 For complex views we cannot update any columns for two tables if they are not connected by PK and FK relation

 Outer join views are not updatable

 Complex views should not contain group functions,group by,set,distinct,rownum,with,connet by

 Comment information on table are stored in the view USER_TAB_COMMENTS

 Comment information on columns are stored in the view USER_COL_COMMENT

 Information about views in your database are stored in USER_VIEWS

 To obtain the defination of a view Query the USER_VIEWS data dictionary view to search for the EMP_DEPT_VU
view

 analyse status of view in database USER_OBJEBTs

 All_IND_COLUMN will give position of PK column

 Any objects that associated with pK is USER_INDEXES

 In order to identify any objects that may be asociated with that table and primary key dictionary view used is
USER_INDEXES

 USER_CONS_COLUMNS, view should a user query to display the columns associated with the constraints on a
table owned by the user

 To find data about the constraints USER_CONSTRAINTS


4
 USER_COL_PRIVS data dictionary table should you query to view the object privileges granted to the user on
specific columns

 Position of each column in a table we can know by using USER_TAB_COLUMNS, Just like DESCRIBE

 USER_UPDATABLE_COLUMNS can tell whether the columns in a complex view can be modified or not.

 For information about sequence is USER_SEQUENCES

 Finding Information about users ALL_USERS

 USER_SYS_PRIVS shows all system privileges associated with this user.

 SESSION_PRIVS shows all privileges available in this session.

Constraints
• constraints
Constraints can be created after the table is created
Constraints can be created at the same time the table is created

 use of constraints
 constraints enforce rules at the view level.
 constraints enforce rules at the table level
 constraints prevent the deletion of a table if there are dependencies

 explicitly names a constraint


ALTER TABLE student_grades
ADD CONSTRAINT student_id_fk
FOREIGN KEY (student_id) REFERENCES students (student_id);

 Check Constraint can not contain a reference to another table.check (select ID from dept)....these are not valid. and
also check constraint will not reference to virtual column like:USERS,ROWID,SYSDATE...etc.

• Adding constraint requires MODIFY ,column level constraint


ALTER TABLE EMPLOYEE
MODIFY EMPNAME CONSTRAINT CK_NAME NOT NULL

For check constraints


• ALTER TABLE SALES ADD CONSTRAINT CK_O1 CHECK(PRODUCT_TYPE IN
(‘TOYS’,’DOLLS’,’DOGS’);
• ALTER TABLE SALES ADD (PRODUCT_NAME VARCHAR2(30) CHECK (PRODUCT_NAME <> ‘AK-47’));
• ALTER TABLE SALES MODIFY PRODUCT_TYPE CONSTRAINT CK_NAME CHECK(PRODUCT_TYPE
IN (‘TOYS’,’DOLLS’,’DOGS’);
But Not Use
• ALTER TABLE SALES MODIFY (PRODUCT_TYPE VARCHAR2(30)
CHECK (PRODUCT_TYPE IN(‘TOYS’,’DOLLS’,’DOGS’));

• Addind PK is not require modify. Table level constraint


5
ALTER TABLE EMPLOYEE ADD CONSTRAINT C_NAME PRIMARY KEY (EMPNAME)

• Check constarint correctone is ,it chould contain some set of fixed values,but not the not null values.

Aggregate functions

 Count, Minimum,Maximum Aggregate functions are used on the column of datatype DATE

 It returns a single result row based on groups of rows

 aggregate functions
 You can mix single row columns with aggregate functions in the column list of a SELECT statement by grouping on
the single row columns.
 You can pass column names, expressions, constants, or functions as parameters to an aggregate function

• Aggregate functions can appear in select lists and in ORDER BY and HAVING clauses. They are
commonly used with the GROUP BY clause in a SELECT statement

SubQuery

• A single row subquery can retrieve data from more than one table.

• A SQL query statement cannot display data from table B that is referred to in its subquery, unless table B is included
in the main query's FROM clause.

• Subqueries are used with the SELECT, INSERT, UPDATE, and DELETE statements.

• Subqueries must be enclosed within parentheses.

• A subquery can have only one column in the SELECT clause, unless multiple columns are in the main query for the
subquery to compare its selected columns.
• An ORDER BY cannot be used in a subquery, although the main query can use an ORDER BY. The GROUP BY can
be used to perform the same function as the ORDER BY in a subquery.
• Subqueries that return more than one row can only be used with multiple value operators, such as the IN operator.
• The SELECT list cannot include any references to values that evaluate to a BLOB, ARRAY, CLOB, or NCLOB.
• A subquery cannot be immediately enclosed in a set function.
• The BETWEEN operator cannot be used with a subquery; however, the BETWEEN can be used within the subquery
• WE can query upto 255 subqueries

 SubQueries
 A single row subquery can retrieve only one row but many columns
 A multiple row subquery can retrieve multiple rows and multiple columns
 A single row subquery can use the IN operator

6
 Subqueries
 A subquery can retrieve zero or more rows.
 When a subquery is used with an inequality comparison operator in the outer SQL statement, the column list
in the SELECT clause of the subquery should contain only one column.

 NOT IN operator can be used with multi row subquery.


 Inner and outer query retrieving data from same table then there are no rows returned

 Sub query can be used


 in the FROM clause of a SELECT statement
 in the WHERE clause of a SELECT statement
 in the SET clause of an UPDATE statement
 in the VALUES clause of an INSERT statement

 SELECT *
FROM orders
WHERE cust_id = (SELECT cust_id
FROM customers
WHERE cust_name = 'Smith')
The query fails because the subquery returns more than one row.

• the main query fails because the multiple-row subquery cannot be used with the comparison operator.

 IN FOR SINGLE ROW QUERY


NOT IN FOR MULTIPLE ROW SUBQUERY

• Need of co-rrelated sub query comes in case of "Exists" in where clause , Not in case of "IN" in where clause,
cause for "IN " in where clause we can contain set of values where as for exists we should have so-rrelated sub
query.
• Definitely subquery is reqired to create one table from another table with same structure and columns

Sequence
 Sequences

 You use a CURRVAL pseudo column to look at the current value just generated from a sequence,without affecting
the further values to be generated from the sequence.
 You use a NEXTVAL pseudo column to obtain the next possible value from a sequence by actually retrieving the
value form the sequence

• Sequence by default start with 1 and by default increment by 1.

• Once created, a sequence belongs to a specific schema

Transactions
 Update,Delete,Insert Will be Roll backed,DDL (like:CREATE,ALTER,DROP) will not be roll backed.TRUNCATE
also will not be roll backed,cause data will be deleted at once.

 "Save Point" is not a begining of new transaction.A transaction can have more than one "Save points".
7
 At begining of transaction ,if we want to make the next coming statements should not alter database ,then we can use
"SET Transaction", we cant use "Save points" there cause it is at the begining of transaction.

 Complete a transaction
* ROLLBACK TO SAVEPOINT C;
* ALTER TABLE employees SET UNUSED COLUMN sal;

 CREATE USER scott IDENTIFIED by tiger; No privileges till yet even cannot connect to database,for this he needs
session privileges

JOINS
 Two tables with different columns have been given and asked to calculate Tax for each employee,we can calculate
cause in tax column minsal and maxsal provided ,for each employee sal lies between these two salaries only.

 USE OF AN OUTER JOIN


D. You use an outerjoin to see only the rows that do not meet the join condition.
E. In the WHERE condition, you use (+) following the name of the column in the table without matching rows, to
perform an outerjoin.
F. You cannot link a condition that is involved in an outerjoin to another condition by using the OR operator.

 Cases to use an outer join


 The columns being joined have NULL values
 The tables being joined have both matched and unmatched data.

 Case to use a FULL OUTER JOIN when You want all unmatched data from both tables.

 SELECT emp_name, department_name, city FROM employees e JOIN departments d USING (department_id) JOIN
locations l USING (location_id) WHERE salary > 10000;
is same as
SELECT emp_name, department_name, city FROM employees e, departments d, locations l WHERE
e.department_id = d.department_id AND d.location_id = l.location_id AND salary > 10000;

all the records from dept(right outer join), null values are in emp table(+)

select empno,empname,job,emp1.deptno,deptloc from emp1,dept where emp1.deptno(+)=dept.deptno


select empno,empname,job,emp1.deptno,deptloc from emp1 right outer join dept on (emp1.deptno=dept.deptno)
select empno,empname,job,emp1.deptno,deptloc from emp1,dept where dept.deptno=emp1.deptno(+)

All the records from emplyee left outer join, null values are in dept table(+)

select empno,empname,job,emp1.deptno,deptloc from emp1 left outer join dept on (emp1.deptno=dept.deptno)


select empno,empname,job,emp1.deptno,deptloc from emp1,dept where emp1.deptno=dept.deptno(+)
select empno,empname,job,emp1.deptno,deptloc from emp1,dept where dept.deptno(+)= emp1.deptno

Indexes
• If most of the values start with some values(like" "C001") ,then it is better to use "Reverse Index"rather than to use
"B Tree Index",In this case(some values start with perticular value) Cardinality for root node is low, B-Tree index
works fine for "column having Root having High cardinality".

 Pk and Unique will create indexes automatically.


8
• For unique and Primary key ,Indexes are automatically created on constraint columns.

Privileges
• If column is if "USERS" ,and Jone is selecting information for Mith,then no error comes but no data will be
displayed to Jone.

• GRANT registrar TO user1, user2, user3;----where register is role

 For user creation we don't have create or replace


CREATE USER SUPER IDENTIFIED BY SUPER; At this time No privileges to User SUPER
 Grant option is not valid when granting object privilege to a role.

 Drop user,Create session,Backup any Table are System Privileges, Where as Index is an object privilege.

• User Davids wants to access table EMPLOYEE owned by MARTIN.Public and privetae sysnonyms created by
martin would work best and also.David created synonym for martin.employee would work best.but synonym
created by david for just employee would not work because he is creating synonym in his own schema.

• When a Role has password assigned to it,then it should not be made default .But not the role given with system
privileges.

 Inorder to administer that access for others ,we should use "grant update on emp to soni with grant option"

 Reed gives object privillages to Mann ,Mann gives session privillages to Snow,and Reed revokes privilages from
Mann.
Ans: Able to Connects to database Reed and Snow
Able to Connects to database and Does operations on database Reed Only

 Reed gives session privillages to Mann ,Mann gives session privillages to Snow,and Reed revokes privilages from
Mann.
Ans: Able to Connects to database Reed and Snow
Able to Connects to database and Does operations on database Reed and Snow

Table Spaces
 For making tablespace read only , we need to make sure that
* Table space is not involved for any active rollbacks and
* Tablespace is not involved for any open backups and also
* Tablespace should be online.

 Rename datafile with alter tablespace, then we should make sure of database is open and datafiles must be offline
before
renaming.

Manage tablespace make tablespace


* To take backup and
* End backup and
* Take the table space offline
* Take the table space online

9
 the following is true if you use the alter tablespace statement and specify the TEMPORARY clause (Choose all
that apply)?

A. Oracle no longer perform any checkpoint for the online datafiles in the tablespace
B. Oracle performs a checkpoint for all online datafiles in the tablespace
C. Oracle does not ensure that all files are written
D. The offline files may require media recovery before you bring the tablespace online

Tables

 DROP TABLE DEPT;


 You cannot roll back this statement
 All pending transactions are committed
 All indexes based on the DEPT table are dropped.
 All data in the table is deleted, and the table structure is also deleted.

• DELETE employees;
The data in the EMPLOYEES table is deleted but not the structure.

 CREATE TABLE EMP


(empno NUMBER(4),
ename VARCHAR2(35),
deptno NUMBER(7,2) NOT NULL,
CONSTRAINT emp_deptno_fk FOREIGN KEY deptno
REFERENCES dept deptno);

 naming database tables


 must be 1-30 characters long
 should not be an Oracle Server reserved word.
 must contain only A-Z, a-z, 0-9, _, $, and #
 must begin with a letter

• ALTER TABLE EMPLOYEES MODIFY (SALARY DEFAULT 5000);


A change to the DEFAULT value affects only subsequent insertions to the table.not the already inserted null values
are not modified to 5000.

• For create table we need to use CREATE TABLE not to use CREATE OR REPLACE TABLE

 TRUNCATE TABLE DEPT;


 It releases the storage space used by the table.
 You can NOT roll back the deletion of rows after the statement executes.
 You must be the owner of the table or have DELETE ANY TABLE system privileges to truncate the DEPT table

 CREATE TABLE EMP9$# AS (empid number(2));valid


CREATE TABLE EMP*123 AS (empid number(2));notvalid

1
• Maximum number of columns that a table can have 1000.

Single row functions


* Manipulate data items
* Act on each row returned
* Return one result per row
* Accept arguments which can be a column or an expression

• NVL
• NVL2
• CONCAT
• DECODE
• DUMP
• and REPLACE
 can return non-NULL value when called with a NULL argument.
 TO_DATE(s[, fmt[, nls]]) Converts string s to DATE
 TO_CHAR(x[, fmt[, nls]]) Takes up to three arguments, where x is either a date or a number

 four are types of functions available in SQL character ,numeric, date, conversion

lpad('tech', 7); would return ' tech'


lpad('tech', 2); would return 'te'
lpad('tech', 8, '0'); would return '0000tech'
lpad('tech on the net', 15, 'z'); would return 'tech on the net'
lpad('tech on the net', 16, 'z'); would return 'ztech on the net'

• A version of SQL*PLUS which runs in a browser,Usnig browser we can connect to an isql prompt.
SQL: Manuplates data and table definitions in the database.
iSQL*PLUS: Does not allow manuplation of values in database.

• SQL and SQL* differencess


http://courses.dsu.edu/infs788_krebsbach/pdf_files/Simple%20iSQLPLUS%20Web.pdf
http://www.scottsdalecc.edu/trollen/CIS119/Formatting_Output.pdf

http://ct.xab.ac.cn/Portals/0/Oracle%20SQL/D33053%20introduction%20to%20oracle%209i_sql%20v3.pdf

• Selection,projection,join
Select empid,empname,deptname from emp,dept where emp.deptid=dept.deptid

• Projection,selection.join
Select empid,empname,deptname from emp,dept where emp.deptid=dept.deptid and empjob=’manager’

• display 2000 in the format "$2,000.00"?


B. SELECT TO_CHAR(2000, '$0,000.00')
FROM dual;
C. SELECT TO_CHAR(2000, '$9,999.00')
FROM dual;
D. SELECT TO_CHAR(2000, '$9,999.99')

• If users wants to give a runtime value then it is best to use accept command only

• NVL2 function displays NOT NULL values and then NULL value.
1
select empname,nvl2(joinid,'yes','no') from employee;

• INSERT INTO T1(A) VALUES(2);


• INSERT INTO T1 VALUES(1,DEFAULT); this works if secound column is having default value for that.This
explicitly tell oracle to use default.We can also use DEFAULT in the update statement also.UPDATE SAMPLE SET
COL2=DEFAULT WHERE COL1=3;
• UPDATE SET PROFITS=NULL WHERE PRODUCT_TYPE=’TOYS’;Deleting one column data with respect to
other column

LOCKS
• UPDATE,SELECT,DELETE statement will acquire row_exclusive lock .
• SELECT FOR UPDATE aquires lock SHARE ROW LOCK
• SET TRANSACTION ISOLATION LEVEL READ COMMITTED. Is default
• SET TRANSACTION ISOLATION LEVEL SERIALIZABLE is defined in SQL92

Utlsampl.sql and demobld.sql


• Sql>c/’none’/o;
• ORA-00904-Invalid column
• ORA-00923 From key word nort expected
• ORA-00943 Table or View does not exist
• 1.Sql>get crtlprod.sql
/
• 2.sql>@crtlprod.sql;

• SQLPLUS commands
• Describe
• List
SP-0023 No lines in sqlbuffer
• Del 3
• Append ‘soni’
• Clear buffer
• Input
• Run
• 6 ‘new line being added’
• Spool ctrl.out
Select * from emo;
Spool off
Save ctrlprod.sql
Exit
Afiedt.buf buffer

• OrderBy Group By
• Single Row functions
o Text functions:Rpad,Lpad,Initcap,Lower,Upper,length,Substr,Instr
o Arithemetic functions:Abs,Ceil,Floor,Mod,Round,Sqrt,Trunc,sinh()
o List functions: greatest,least,Decode,

Date functions:months_between,add_months,next_day,last_day,new_time
Conversion functions:To_char,To_date,To_number
1
JOINS
Cartesian join
Natural join: used with filter condition
Left outer join
Right outer join
Self join

• Group Functions
• Avg(),sum(),count(),min(),max(),stddev(),variance()
• Using group by clause-Rollup and Cube
• Using group by and having

Sub Quries
Single row subqueries
Multi row subqueries.Multi column subqueries
Inline views
Using with clause for group by

• Readable Output
• substitution variable:& and set define ?
• lexical substitution variable:&&
• Automatic difination at runtime :define and undefine:reuse substitution variable bypassing value
from one statement to other.
• Accept Prompt:when you want more accurate and explicit datatype conversion :accept allows only
string information to be accepted by user

SQLPLUS COMMANDS
• Feedback,
• break on deptno:Will make duplicate values not to display in deptno:clear breaks
• compute sum of sal on deptno :calculate sum of sal in each dept depending on deptno:clear computes
• column sal format $9999.99,
• btitle
• ttitle
• linesize
• pagesize
• Array size
• Auto trace
• Set pagesize
• Set termout on/off
• Store(we use save in sql)
Store set myfile.out
Save myfile.out

Views
Privileges
Locks

Você também pode gostar