The below post is notes prepared by me by studying the book "Database Systems Design, Implementation and Management" by Peter Rob and Carlos Coronel
Content, examples and diagrams are taken from that book.
Chapter-I Introduction to SQL
Q:What is SQL and What does SQL do?
SQL stands for structured query language.
SQL is non-procedural language, therefore you specify what is to be done rather than how is it done.
American National Standards Institute (ANSI) prescribed a standard SQL.
SQL functions fits into two broad categories:
- It is a data definition language:(DDL):-SQL can create databse objects such as tables,indexes and views.SQL can also define access rights to these database objects.
- It is a data manipulation language(DML):-SQL can be used to insert,update,delete and retrieve data from the database
SQL is easy to learn
SQL can retrieve data from database
SQL can execute queries
SQL queries are used to answer question and also to perform actions such as adding,deleting table rows.
Q:Explain various datatypes available in SQL?
AnsThe following table shows some common SQL datatypes
Datatype
|
Format
|
Comments
|
Numeric
|
NUMBER(L,D)
|
Ex: NUMBER(7,2) indicates number will be stored with two decimal places and may be upto 7 digits long,including the sign and decimal places.
|
INTEGER (OR)
INT
| Cannot be used if you want to store numbers that require decimal places. | |
SMALLINT
|
Limited to integer values upto six digits
| |
DECIMAL(L,D)
|
Greater lengths are acceptable, but smaller ones are not.
| |
Character
|
CHAR(L)
|
Fixed length character data for upto 255 characters. If you store strings that are not as long as the CHAR parameter value,the remaining spaces are left unused
|
VARCHAR(L)
OR
VARCHAR2(L)
| Variable length character data will not leave unused spaces. | |
Date
|
DATE
|
Stores dates in the julian date format.
|
Q: Explain how to create table using SQL?
Ans: The CREATE table is used to create a new table in the user database schema.
Syntax:
CREATE TABLE tablename (
Column1 datatype(column width) [constraints],
Column2 datatype(column width) [constraints],
……………
);
Example:
CREATE TABLE VENDOR(
vno number(3) PRIMARY KEY,
vname varchar2(35) NOT NULL,
vcity varchar2(15));
If the above command is executed successfully, the message “table created “ is displayed.
The following are the rules for naming a table.
- Table names should start with an alphabet
- Underscores,numbers and letters are allowed but not blank spaces.
- Maximun length of table name is 30 characters.
- Reserved words of ORACLE cannot be used as table name.
- Two different table should not have the same name.
- Unique column names should be specified.
- Proper data types and size should be specified.
Q: What are SQL constraints? Explain?
Ans: Entity integrity is enforced automatically when the primary key is specified in CREATE TABLE command.
For Ex:
CREATE TABLE PRODUCT(
pno char(3),
pdesc varchar2(35) NOT NULL UNIQUE,
p_indate date,
qoh number(5),
price number(5),
vno number(3),
PRIMARY KEY(pno),
FOREIGN KEY(vno) REFERENCES VENDOR ON UPDATE CASCADE);
The primary key attribute contains both a NOT NULL and a UNIQUE specification.
The foreign key constraint definition ensures that
- You cannot delete a vendor from VENDOR table if atleast one PRODUCT row references that VENDOR.
- ON UPDATE CASCADE (not supported by ORACLE) ensures that when a change is made in VENDOR table, that change will be reflected automatically in PRODUCT table.
Besides the primary key and foreign key constraints, the ANSI SQL standard defines the following constraints.
- NOT NULL ensures that a column will not have null values.
- UNIQUE ensures that a column will not have duplicate values.
- DEFAULT defines a default value for a column(when no value is given).
- CHECK validates data in an attribute and sees that a specified condition exists.
Ex1: The minimum order must be atleast 10
Ex2:The date must be after APRIL 15, 2011
The CREATE TABLE command lets you define constraints in two different places.
- When you create the column definition (known as column constraint)
- When you use CONSTRAINT keyword (known as table constraint)
A column constraint applies to just one column.
A table constraint may apply to many columns.
Q:Explain important data manipulation commands (DML) of SQL?
Ans:
INSERT: Used to enter data into a table.
Syntax:
INSERT INTO tablename VALUES (value1,value2,…..valuen)
Example:
INSERT INTO VENDOR VALUES (100,’RADHA’,’VJA’);
Observe that:
Character and date values must be entered between apostrophes(‘).
Numerical entries are not enclosed in apostrophes(‘).
Attribute entries are separated by commas.
Inserting Rows with NULL attribute
INSERT INTO product VALUES (‘P02’,’PENCIL’,’02-AUG-2011’, 25, 3, NULL);
Note that the NULL entry is accepted only because the vno attribute is optional in PRODUCT table.
The NOT NULL declaration is not used in the CREATE TAVLE statement for these attributes.
Inserting Rows with OPTIONAL attributes:
If the data is not available for all columns, then column list must be included following table name.
INSERT INTO product(pno,pdesc) VALUES(‘P03’,’MOUSE’)
COPYING PARTS OF A TABLE
To create a new table based on selected column and rows of an existing table. In this case, the new table will copy the attribute names,data characteristics and rows of original table.
CREATE TABLE part AS
SELECT pno,pdesc,vno FROM product;
Note that no entity integrity(primary key) or referential integrity (foreign key) rules are automatically applied to the new table.
Saving the table changes or COMMIT:
The COMMIT command permanently saves all changes such as rows added, attributes modified and rows deleted made to any table in the database.
Syntax:
COMMIT;
Any changes made to table contents are not saved on disk until you close the database, close the program you are using, or use the COMMIT command.
UPDATE Command:
The UPDATE command modifies an attribute value in one or more table rows.
Allows you to make data entries in an existing row’s columns.
Syntax:
UPDATE tablename
SET columnname = expression [,columnname = expression]
WHERE conditionlist;
Ex:To change the p_indate of product with pno P01 to 02-AUG-2011.
UPDATE PRODUCT
SET p_indate =’02-AUG-2011’
WHERE pno=’P01’;
Restoring table contents or ROLLBACK:
ROLLBACK-undoes any changes since the last COMMIT command and brings the data back to the values that existed before the changes were made.
Syntax: ROLLBACK;
Ex:
1. Create table called sales.
2. Insert 10 rows in sales table.
3. Execute the ROLLBACK command
ROLLBACK will undo only the result of INSERT and UPDATE commands.
All data definition commands(CREATE TABLE) are automatically committed to data dictionary and cannot be rolled back.
DELETE Command
DELETE -deletes one or more rows from a table
If you do not specify a WHERE condition , all rows from table will be deleted.
REMOVAL OF SPECIFIED ROW(S):
Syntax: DELETE FROM tablename [WHERE conditionlist];
REMOVAL OF ALL ROWS:
Syntax: DELETE FROM tablename;
Viewing data in tables or SELECT
SELECT-lists the contents of a table.
Syntax:
SELECT columnlist
FROM tablename
[WHERE conditionlist];
The columnlist represents one or more attributes separated by commas.
You can use the * wildcard character to list all attributes.
Ex1: SELECT * FROM PRODUCT;
Ex2: SELECT pdesc,p_indate FROM product WHERE pno=’P01’;
Ex3:SELECT * FROM product WHERE p_indate>’01-AUG-2011’;
The SELECT statement retrieves all rows that match the specified condition.
WHERE clause adds conditional restrictions to SELECT statement.
The condition list is represented by one or more conditional expressions separated by logical operators.
Comparison operators can be used to restrict output.
Comparison operators:
Symbol
|
Meaning
|
Example
|
=
|
Equal to
|
SELECT * FROM product WHERE pno=’P01’;
|
<
|
Less than
|
SELECT * FROM product WHERE price<10;
|
<=
|
Less than or equal to
| |
>
|
Greater than
|
SELECT * FROM product WHERE price>10;
|
>=
|
Greater than or equal to
| |
<> or !=
|
Not equal to
|
SELECT * FROM product WHERE vno <> 100;
|
Using Computed Columns
pno
|
qoh*price
|
P01
|
PEN
|
P02
|
PENCIL
|
Oracle uses actual formula text as the label for the computed column.
Ex: SELECT pno,qoh*price FROM PRODUCT;
Result:
Using Column aliases
pno
|
total
|
P01
|
PEN
|
P02
|
PENCIL
|
An alias is an alternative name given to a column or table in any SQL statement.
Ex2: SELECT pno,qoh*price AS total FROM PRODUCT;
Using Date arithmetic
SYSDATE is a special function that returns today’s date.
Ex:1 SELECT pno,p_indate,p_indate+90 AS ExpiryDate FROM product;
Ex:2 SELECT pno,p_indate,SYSDATE-90 AS CutDate FROM product
WHERE p_indate<=SYSDATE-90
The output would change based on today’s date
Arithmetic Operators:
Symbol
|
Meaning
|
Example
|
+
|
Addition
| |
-
|
Subtraction
| |
*
|
Multiply
|
SELECT qoh, price*qoh FROM product;
|
/
|
Division
| |
^
|
Raised to power(some applications uses ** instead of ^)
|
Rules of Precedence: Perform operations within parentheses then perform ^ then *,/ then +,-
Logical Operators:
SQL allows you to have multiple conditions in a query through the use of logical operators.
Symbol
|
Meaning
|
Example
|
AND
|
Both conditions must match
|
SELECT * FROM product
WHERE price > 10 AND price < 100;
|
OR
|
Either condition must match
|
SELECT * FROM product
WHERE vno = 100 OR vno = 101
|
NOT
|
Do not match a certain condition
|
SELECT * FROM product
WHERE NOT(vno = 100)
|
Display the result when all the condition specified using the AND operator are satisfied
Display the result when Either of the condition specified using the OR operator are satisfied
NOT operator is used to find rows that do not match a certain condition. It negates the result of conditional expression
Ex: SELECT * FROM product WHERE ( price < 50 AND p_indate > ’01-AUG-2011’) OR vno = 100;
The rows of vno=100 are included regardless of p_indate and price of those rows.
Special Operators
BETWEEN operator:
Used to check whether an attribute value is within a range
Ex: To see list of products whose price is between $10 and $100, use the command:
SELECT * FROM product WHERE price BETWEEN 10 AND 100;
IS NULL operator:
Used to check whether an attribute value is null.
Ex: To list all the products that do not have a vendor assigned, use the command:
SELECT * FROM product WHERE vno IS NULL;
LIKE operator:Used only with char and varchar2.
Matches a string pattern.
Used in conjuction with wildcards to find patterns within string attributes.
Ex1: To find all vendors whose name start with R
SELECT * FROM vendor WHERE vname LIKE ‘R%’;
To find all vendors whose name has ‘a’ as second letter.
Ex2: SELECT * FROM vendor WHERE vname LIKE ‘_a%’;
SQL allows you to use the percent sign (%) and underscore( _ ) wild card characters to make matches when the entire string is not known.
Wildcard
|
Meaning
|
%
|
Matches any characters
|
_
|
Matches one characters
|
Matches can be made when the query entry is written exactly like table entry.
IN operator: matches any value within a VALUE list.
uses an equality operator i.e, it selects only those rows that match(are equal to) atleast one of the values in the list
Ex:
SELECT * FROM product
WHERE vno IN(100 , 101);
All of the values in the list must be of same data type.
Each of the values in the value list is compared to the attribute.
IN operator is valuable when it is used in subqueries.
SELECT * FROM vendor
WHERE vno IN(SELECT vno FROM product );
Subquery (SELECT vno FROM product) will list all vendors who supply products.
IN operator will compare the values generated by subquery to vno values in VENDOR table.
EXISTS operator:checks whether subquery returns any row.
If subquery returns any row, run the main query otherwise don’t.
Ex:
SELECT * FROM vendor
WHERE (SELECT * FROM product WHERE qoh<=10);
Modifying structure of table:
ALTER Command: All changes to table structure are made using the ALTER command.
Syntax:
ALTER TABLE tablename
{ADD|MODIFY} (columnname datatype [{ADD|MODIFY} columnname datatype]);
To Change column’s datatype
To change the vname datatype from varchar2 to char
ALTER TABLE vendor MODIFY (vname char(35));
To Change column’s data characteristics
To increase the width of vname column to 55 characters
ALTER TABLE vendor MODIFY (vname char(35));
To add a column
ALTER TABLE product ADD (pmin number(5));
If the table already has some data , we cannot add new column with NOT NULL as existing rows will default to NULL for the new column.
TO ADD TABLE CONSTRAINTS:
Syntax: ALTER TABLE tablename ADD constraint [ADD constraint];
To add primary key:
ALTER TABLE part ADD PRIMARY KEY(part_no);
To add foreign key:
ALTER TABLE part ADD FOREIGN KEY(vno) REFERENCES vendor;
(OR)
ALTER TABLE part ADD PRIMARY KEY(part_no)
ADD FOREIGN KEY(vno) REFERENCES vendor;
To add primary and foreign key using the keyword CONSTRAINT:
ALTER TABLE part ADD CONSTRAINT pk_partno PRIMARY KEY(part_no)
ADD CONSTRAINT fk_vno FOREIGN KEY(vno) REFERENCES vendor;
TO REMOVE A COLUMN OR TABLE CONSTRAINT
Synax: ALTER TABLE tablename
DROP{ PRIMARY KEY | COLUMN columnname | CONSTRAINT constraintname};
Dropping a column: deleting a column
ALTER TABLE product DROP COLUMN pmin;
DELETING A TABLE FROM DATABASE:
A table can be deleted from the database using the DROP TABLE command.
Syntax:
DROP TABLE part;
Advanced select queries
ORDER BY clause: Orders the selected rows based on one or more attributes
- Used in the last portion of select statement
- By using this, rows can be sorted
- By default it takes ascending order
- DESC is used for sorting in descending order
- Sorting by column which is not in select list is possible.
- Sorting by column aliases
Example: To produce a list of products sorted in descending order of their prices.
SELECT pno,pdesc,p_indate,price
FROM product
ORDER BY price DESC;
A multilevel ordered sequence is known as cascading order sequence and it can be created easily by listing several attributes, separated by commas, after the ORDER BY clause.
SELECT * FROM employee ORDER BY e_lname,e_fname,e_initial;
DISTINCT clause: Used to eliminate duplicate rows.
Ex:How many different vendors are currently represented in the PRODUCT table?
SELECT DISTINCT vno FROM product;
Explain Aggregate functions?
Ans: Some of the aggregate functions are COUNT,MIN,MAX,AVG.
COUNT: Uses one parameter within parantheses.
COUNT(columnname)-Used to count the number of non-null values of an attribute
COUNT(*) aggregate function is used to count number of rows returned by query, including the rows that contain nulls.
Ex1: How many rows in PRODUCT table have a price value less than or equal to $500?
SELECT COUNT(*) FROM product WHERE price<=500;
Ex:2:How many vendors referenced in the PRODUCT table have supplied products with prices that are <+1?
SELECT COUNT(DISTINCT vno) FROM product WHERE price<=10;
MAX and MIN
Ex1: Which product has highest price?
SELECT * FROM product WHERE price = (SELECT MAX(price) FROM product);
(Here we cannot use SELECT * FROM product WHERE price = MAX(price); because The aggregate functions can be used only in column list of a SELECT statement)
Ex2:Highest price in PRODUCT table?
SELECT MAX(price) FROM product;
Ex:3Lowest price in PRODUCT table?
SELECT MIN(price) FROM product;
Ex4: To find out the product that has the oldest date?
SELECT * FROM product WHERE price = (SELECT MIN(p_indate) FROM product);
Ex5: To find out the most recent product.
SELECT * FROM product WHERE price = (SELECT MAX(p_indate) FROM product);
SUM: Computes total sum of any specified attribute.
Ex:To find the total value of all items
SELECT SUM(qoh*price) AS TOTALVALUE
FROM product;
AVG
Ex1: To find the products whose prices exceed the average product price.
SELECT * FROM product
WHERE price > (SELECT AVG(price) FROM product)
ORDER BY price desc;
Explain about GROUP BY clause?
- Used to group rows on basis of certain common attribute value such as employees of a department, products of a vendor.
- WHERE clause can be used ,if needed.
- The only attributes that can be put in select clause are the aggregated functions and the attributes that have been used for grouping the information.
Ex1:How many products are supplied by each vendor?
SELECT vno, COUNT(pno)
FROM product
GROUP BY vno;
Having clause:
Extension of the GROUP BY feature is the HAVING clause.
HAVING clause is applied to the output of GROUP BY operation.
Ex: how many products supplied by each vendor.List only the products whose average is below $10
SELECT vno, COUNT(pno), AVG(price)
FROM product
GROUP BY vno
HAVING AVG(price) < 10;
Q: Explain about index in SQL
Ans:
Indexes are used to quickly access the data.
Syntax: CREATE INDEX <index name> ON <tablename>(column name);
An index can be created on one or more columns.
Based on the number of columns included in index, an index can be of 2 types.
1. Simple index 2.Composite Index.
To create Simple index:
An index created on a single column is called simple index.
Ex: CREATE INDEX p_in ON product(p_indate)
To create composite index:
An index created on a more than one column is called composite index.
Dropping indexes or deleting an index: Use the DROP INDEX command.
Ex: DROP INDEX p_in;
Q:What is database schema?
Ans:A schema is a group of database objects such as tables and indexes, that are related to each other. Syntax: CREATE SCHEMA AUTHORIZATION {creator}
When a user is created, the DBMS automatically assigns schema to that user.
Schemas are useful to group tables by owner and enforce a first level of security by allowing each user to see only the tables that belong to that user.
Labwork:
VENDOR
| ||
vno
|
vname
|
vcity
|
100
|
RADHA
|
VJA
|
101
|
ALIYA
|
NULL
|
102
|
SIRI
|
VJA
|
103
|
LAK
|
GNT
|
CREATE TABLE VENDOR(
vno number(3) PRIMARY KEY,
vname varchar2(35) NOT NULL,
vcity varchar2(15));
PRODUCT
| |||||
pno
|
pdesc
|
p_indate
|
qoh
|
price
|
vno
|
P01
|
PEN
|
01-AUG-2011
|
20
|
10
|
100
|
P02
|
CD
|
06-AUG-2011
|
2000
|
12
|
103
|
P03
|
PENCIL
|
07-AUG-2011
|
25
|
3
|
NULL
|
P04
|
DVD
|
08-AUG-2011
|
100
|
350
|
101
|
P05
|
CELL
|
09-AUG-2011
|
5
|
5000
|
100
|
P06
|
MOUSE
|
-
|
-
|
-
|
-
|
CREATE TABLE PRODUCT(
pno char(3),
pdesc varchar2(35) NOT NULL UNIQUE,
p_indate date,
qoh number(5),
price number(5),
vno number(3),
PRIMARY KEY(pno),
FOREIGN KEY(vno) REFERENCES VENDOR);
CUSTOMER
| |||
cno
|
cname
|
city
|
baldue
|
201
|
ANU
|
VJA
|
100
|
202
|
ASHA
|
GNT
|
500
|
203
|
RAJ
|
VJA
|
CREATE TABLE CUSTOMER(
cno number(3) PRIMARY KEY,
cname varchar2(35) ,
city varchar2(5),
baldue number(5));
INVOICE
| ||
invno
|
cno
|
invdate
|
301
|
201
|
20-AUG-2011
|
302
|
202
|
20-AUG-2011
|
303
|
203
|
21-AUG-2011
|
304
|
201
|
21-AUG-2011
|
CREATE TABLE INVOICE(
invno number(3),
cno number(3),
invdate date,
PRIMARY KEY(invno),
FOREIGN KEY(cno) REFERENCES CUSTOMER);
All products sold are stored in LINE table
CREATE TABLE LINE(
LINE
| ||||
invno
|
lineno
|
pno
|
line_units
|
line_price
|
301
|
L01
|
P01
|
10
|
10
|
301
|
L02
|
P02
|
10
|
12
|
301
|
L03
|
P03
|
20
|
3
|
302
|
L01
|
P01
|
30
|
10
|
302
|
L02
|
P02
|
20
|
12
|
303
|
L01
|
P01
|
35
|
10
|
303
|
L02
|
P02
|
15
|
12
|
invno number(3),
lineno char(3),
pno char(3),
line_units number(5),
line_price number(5),
PRIMARY KEY(invno,lineno),
FOREIGN KEY(pno) REFERENCES PRODUCT
FOREIGN KEY(invno) REFERENCES INVOICE);
EMP
| ||||
e_lname
|
e_fname
|
e_initial
|
dob
|
Sal
|
REDDY
|
SAM
|
A
|
14-NOV-1994
|
15000.25
|
NAIDU
|
ANU
|
S
|
14-OCT-1992
|
16234.50
|
JAIN
|
NEHA
|
K
|
28-NOV-1993
|
15623.48
|
REDDY
|
RAM
|
T
|
14-SEP-1994
|
1623.89
|
CREATE TABLE EMP(
e_lname varchar2(20),
e_fname varchar2(20),
e_initial varchar2(2),
dob date,
sal number(8,2));
No comments:
Post a Comment