an introduction to sql kirk anne computing & information technology suny geneseo [email protected]...
TRANSCRIPT
An Introduction to SQL
• Kirk AnneComputing & Information Technology
• SUNY Geneseo• [email protected]
Nael [email protected]
What is a database?
Parts of a database
• Attributes (fields)– An attribute or field is a component of a record that
describes something about an item.• Records
– A record is the representation of an individual item.• Table
– A collection of records• Database
– A collection of tables and rules for accessing the tables
Parts of a database
Record
Attribute/Field
Tables
• Records become “rows”• Attributes/fields become “columns”• Rules determine the relationship between the tables and tie the data together to form a database
I need a new database!
• Many people ask for “new databases” when in fact they only need a new table within an existing database.
• The data within the tables should be all related somehow.– By owner– By project
Creating a database
• What information are we trying to store?• How do we describe the information?• Phone Book/Contact entries
– Name– Address– Company– Phone Number– URL/Web Page– Age– Height (in meters)– Birthday– When we added the entry
Data Types
• Binary– Database specific binary objects– Pictures, digital signatures, etc.
• Boolean– True/False values
• Character– Fixed width or variable size
• Numeric– Integer, Real (floating decimal point), Money
• Temporal– Time, Date, Timestamp
Phone Book/Contact Record
Name CharacterAddress CharacterCompany CharacterPhone Number CharacterURL/Web Page CharacterAge IntegerHeight Real (float)Birthday DateWhen we added the entry Timestamp
All you need to know about SQL
What is SQL?
1. SQL stands for Structured Query Language2. SQL lets you access and manipulate databases3. SQL is an ANSI (American National Standards Institute) standard
• SQL can execute queries against a database• SQL can retrieve data from a database• SQL can insert records in a database• SQL can update records in a database• SQL can delete records from a database• SQL can create new databases• SQL can create new tables in a database• SQL can create stored procedures in a database• SQL can create views in a database• SQL can set permissions on tables, procedures, and
views
SQL can be divided into two parts: The Data Manipulation Language (DML) and the Data Definition Language (DDL).
The query and update commands form the DML part of SQL:
SELECT - extracts data from a databaseUPDATE - updates data in a databaseDELETE - deletes data from a databaseINSERT INTO - inserts new data into a database
The DDL part of SQL permits database tables to be created or deleted. It also define indexes (keys), specify links between tables, and impose constraints between tables.
The most important DDL statements in SQL are:
CREATE DATABASE - creates a new databaseALTER DATABASE - modifies a databaseCREATE TABLE - creates a new tableALTER TABLE - modifies a tableDROP TABLE - deletes a tableCREATE INDEX - creates an index (search key)DROP INDEX - deletes an index
Basic SQL Commands
• Creating tables with CREATE• Adding data with INSERT• Viewing data with SELECT• Removing data with DELETE• Modifying data with UPDATE• Destroying tables with DROP
Creating tables with CREATE
• Generic form
CREATE TABLE tablename (column_name data_type attributes…,column_name data_type attributes…,…
)
• Table and column names can’t have spaces or be “reserved words” like TABLE, CREATE, etc.
Phone Book/Contact Record
Name CharacterAddress CharacterCompany CharacterPhone Number CharacterURL/Web Page CharacterAge IntegerHeight Real (float)Birthday DateWhen we added the entry Timestamp
Phone Book/Contact Table
CREATE TABLE contacts (Name VARCHAR(40),Address VARCHAR(60),Company VARCHAR(60),Phone VARCHAR(11),URL VARCHAR(80),Age INT,Height FLOAT,Birthday DATE,WhenEntered TIMESTAMP
);Plan your tables very carefully!
Once created, they are difficult to change!
Phone Book/Contact Table
CREATE TABLE contacts (ContactID INT PRIMARY KEY,Name VARCHAR(40),Address VARCHAR(60),Company VARCHAR(60),Phone VARCHAR(11),URL VARCHAR(80),Age INT,Height FLOAT,Birthday DATE,WhenEntered TIMESTAMP
);If you are going to use the relational nature of a database,don’t forget you need to have a unique way to access records!
There is a way to make the key automatically increment,so you don’t have to worry about which one is next.
Data Types
• Binary– Database specific binary objects (BLOB)
• Boolean– True/False values (BOOLEAN)
• Character– Fixed width (CHAR) or variable size (VARCHAR)
• Numeric– Integer (INT), Real (FLOAT), Money (MONEY)
• Temporal– Time (TIME), Date (DATE), Timestamp (TIMESTAMP)
Create Table emp ( eno Varchar2(10) Not Null, ename Varchar2(30) ,age Varchar2(5) Null , salary Number(10) , birth_day Date ) ;
التالية القيم على يحتوي جدول انشاء
الحقل اسم نوعة طولةادخال يجب
القيمة
eno Varchar2 10not Null يجب ادخالها
ename Varchar2 30not Null يجب ادخالها
age Varchar2 5 ادخالها اليجب
salary number 10 Null ادخالها اليجب
birth_day date - ادخالها اليجب
Adding data with INSERT
• Generic Form
INSERT INTO tablename (column_name,…)VALUES (value,…)
Inserting a record into ‘contacts’
INSERT INTO contacts (contactid,name,address,company,phone,url,age,height,birthday,whenentered)
VALUES(1,‘Joe’,’123 Any St.’,’ABC’,’800-555-1212’,‘http://abc.com’,30,1.9,’6/14/1972’,now());
Inserting a partial record
INSERT INTO contacts (contactid,name,phone)VALUES (2,’Jane’,’212-555-1212’);
Automatic key generation
• CREATE SEQUENCE contactidseq;• Change the ContactID line in the
CREATE TABLE to:ContactIDINT DEFAULT nextval(‘contactidseq’) PRIMARY KEY
• Or when inserting into a tableINSERT contacts (contactid,name,phone)VALUES (nextval(‘contactidseq’),’Jack’,
‘716-555-1212’);
Insert Into emp (eno,ename) values ('10' , 'صالح' )
المحددة الحقول الى التالية البيانات اضافة
Insert Into emp (eno,ename) values (&no , '&name' );
ويطلب المحددة الحقول الى التالية البيانات عند اضافة القيمالتنفيذ
Viewing data with SELECT
• Generic FormSELECT column,… FROM table,…
WHERE condition GROUP BY group_by_expressionHAVING condition ORDER BY order_expression
• The most used command• Probably the most complicated also• If used improperly, can cause very long waits because
complex computations
A few simple SELECTs
• SELECT * FROM contacts;– Display all records in the ‘contacts’ table
• SELECT contactid,name FROM contacts;– Display only the record number and names
• SELECT DISTINCT url FROM contacts;– Display only one entry for every value of URL.
Select Distinct ename from emp ;
بدون الموظفين اسماء تكرار عرض
Select Distinct ename,eno from emp ;
حقل قيم تكرار دون وارقامهم الموظفين اسماء عرضاالسم
Refining selections with WHERE
• The WHERE “subclause” allows you to select records based on a condition.
• SELECT * FROM contactsWHERE age<10;
– Display records from contacts where age<10
• SELECT * FROM contactsWHERE age BETWEEN 18 AND 35;
– Display records where age is 18-35
Additional selections
• The “LIKE” condition– Allows you to look at strings that are alike
• SELECT * FROM contactsWHERE name LIKE ‘J%’;
– Display records where the name starts with ‘J’
• SELECT * FROM contactsWHERE url LIKE ‘%.com’;
– Display records where url ends in “.com”
Select * from emp ;
Emp الجدول بيانات جميع عرض
Select ename from emp ;
الموظفين جدول من الموظفين اسماء عرض
Select salary*0.91 from emp ;
التقاعد منها مخصوم الموظفين رواتب 9عرضالمائة في
Removing data with DELETE
• Generic Form
DELETE FROM table WHERE condition;
DELETE FROM contacts WHERE age<13;
Delete * from emp where eno=12 ;
رقمة الذي الموظف بيانات جميع 12حذف
Delete * from emp where eno=12 ;
رقمة الذي الموظف بيانات جميع 12حذف
Delete eno,name from emp where eno=12 ;
رقمة الذي الموظف واسم رقم 12حذف
Modifying data with UPDATE
• Generic Form
UPDATE table SET column=expression WHERE condition;
UPDATE contacts SET company=‘AOL’WHERE company=‘Time Warner’;
Destroying tables with DROP
• Generic Form
DROP TABLE tablename;
DROP TABLE contacts;
More about SELECT
Different types of JOINs
• “Inner Join”– Unmatched rows in either table aren’t printed
• “Left Outer Join”– All records from the “left” side are printed
• “Right Outer Join”– All records from the “right” side are printed
• “Full Outer Join”– All records are printed
• Multiple Table Join– Join records from multiple tables
General form of SELECT/JOIN
SELECT columns,…FROM left_tablejoin_type JOIN right_table ON condition;
SELECT name,phone FROM peopleJOIN phonenumbers ON people.id=phonenumbers.id;
Other versions
SELECT name,phone FROM peopleLEFT JOIN phonenumbers ON people.id=phonenumbers.id;
SELECT name,phone FROM peopleRIGHT JOIN phonenumbers ON people.id=phonenumbers.id;
SELECT name,phone FROM peopleFULL JOIN phonenumbers ON people.id=phonenumbers.id;
“Theta style” vs. ANSI
• Theta Style (used in most SQL books)
SELECT name,phone,zip FROM people, phonenumbers, address WHERE people.addressid=address.addressid AND
people.id=phonenumbers.id;
• ANSI Style uses JOIN
SELECT name,phone,zip FROM peopleJOIN phonenumbers ON people.id=phonenumbers.idJOIN address ON people.addressid=address.addressid;
Other SELECT examples
• SELECT * FROM contactsWHERE name is NULL;
• SELECT * FROM contactsWHERE zip IN (‘14454’,’12345’);
• SELECT * FROM contactsWHERE zip IN (
SELECT zip FROM addressWHERE state=‘NY’
);
GROUP BY/HAVING
• The “GROUP BY” clause allows you to group results together with “aggregate functions”– AVG(), COUNT(), MAX(), MIN(), SUM()– COUNT DISTINCT
• HAVING allows you to search the GROUP BY results
GROUP BY Examples
SELECT company,count(company)FROM contactsGROUP BY company;
SELECT company,count(company)FROM contactsGROUP BY companyHAVING count(company) > 5;
ORDER BY
• The “ORDER BY” clause allows you to sort the results returned by SELECT.
SELECT * FROM contactsORDER BY company;
SELECT * FROM contactsORDER BY company, name;
Views
• You can use “CREATE VIEW” to create a virtual table from a SELECT statement.
CREATE VIEW contactview AS(SELECT name,phone,zip FROM
people,phonenumbers,addressWHERE people.id=phonenumbers.id AND people.addressid=address.addressid);