Presentation is loading. Please wait.

Presentation is loading. Please wait.

SQL From: SQL It is a standard language for accessing and manipulating databases – MySQL, SQL Server, Access, Oracle, Sybase,

Similar presentations


Presentation on theme: "SQL From: SQL It is a standard language for accessing and manipulating databases – MySQL, SQL Server, Access, Oracle, Sybase,"— Presentation transcript:

1 SQL From:

2 SQL It is a standard language for accessing and manipulating databases – MySQL, SQL Server, Access, Oracle, Sybase, DB2, and others SQL stands for Structured Query Language SQL is an ANSI (American National Standards Institute) standard – There are many variations and different systems have their own extensions – But the major commands are same

3 SQL SQL include – Data Manipulation Language (DML) – Data Definition Language (DDL) The query and update commands for DML – SELECT: extracts data from a database – UPDATE: updates data in a database – DELETE: deletes data from a database – INSERT INTO: insert new data into a database DDL: permits database tables to be created or deleted, define indexes (keys), impose constraints between tables. Some important statements: – CREATE DATABASE: creates a new database – ALTER DATABASE: modifies a database – CREATE TABLE: creates a new table – ALTER TABLE: modifies a table – DROP TABLE: deletes a table – CREATE INDEX: creates an index – DROP INDEX: deletes an index

4 Create Persons Table P_IdLastNameFirstNameAddressCity 1HansenOlaTimoteivn 10Sandnes 2SvendsonToveBorgvn 23Sandnes 3PettersenKariStorgt 20Stavanger Persons Table CREATE DATABASE test; CREATE TABLE persons ( P_IdINT, LastNameVARCHAR(25), FirstNameVARCHAR(25), Address VARCHAR(25), City VARCHAR(15), PRIMARY KEY (P_Id) ); INSERT INTO persons VALUES (1, 'Hansen', 'Ola', 'Timoteivn10', 'Sandnes'); INSERT INTO persons VALUES (2, 'Svendson', 'Tove', 'Borgvn23','Sandnes'); INSERT INTO persons VALUES (3, 'Pettersen', 'Kari', 'Storgt20', 'Stavanger');

5 Aqua Data Studio You can use either “go” or “/” to replace the “;” so that it can process multiple SQLs at the same time. More info: select * from t1 select * from t2 select * from t3 select * from t1 / select * from t2 / select * from t3 / select * from t1 go select * from t2 go select * from t3 go

6 SQL BASIC

7 SELECT SELECT is used to select data from a database The result is stored in a result table, called the result-set SQL is not case sensitive SELECT syntax SELECT column_name(s) FROM table_name; SELECT * FROM table_name;

8 SELECT P_IdLastNameFirstNameAddressCity 1HansenOlaTimoteivn 10Sandnes 2SvendsonToveBorgvn 23Sandnes 3PettersenKariStorgt 20Stavanger Persons Table SELECT LastName, FirstName FROM Persons; SELECT *FROM Persons;

9 SELECT DISTINCT SELECT DISTINCT column_name(s) FROM table_name; SELECT DISTINCT city FROM persons;

10 WHERE clause SELECT column_name(s) FROM table_name WHERE column_name operator value; SELECT * FROM persons WHERE city=‘Sandnes’;

11 WHERE Clause Text values should be quoted by single quotes or double quotes Numeric values do not need to be enclosed in quotes SELECT * FROM persons WHERE city=‘Sandnes’; Or SELECT * FROM persons WHERE city=“Sandnes”; Or SELECT * FROM persons WHERE P_Id=1;

12 WHERE Clause Operator Description = Equal <> Not equal > Greater than < Less than >= Greater than or equal <= Less than or equal BETWEEN Between an inclusive range LIKE Search for a pattern IN If you know the exact value you want to return for at least one of the columns

13 AND or OR AND, OR operators are used to filter records based on more than one condition AND=both the first and the second conditions is true OR=either the first or the second condition is true

14 AND or OR SELECT * FROM persons WHERE firstname=‘Tove’ AND lastname=‘Svendson’; SELECT * FROM persons WHERE firstname=‘Tove’ OR firstname=‘Ola’; SELECT * FROM persons WHERE lastname=‘Svendson’ AND (firstname=‘Tove’ OR firstname=‘Ola’);

15 ORDER BY The ORDER BY keyword is used to sort the result-set by a specified column It sorts the records in ascending order by default Use DESC for a descending order SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC;

16 ORDER BY INSERT INTO persons VALUES (4, ‘Nilsen’, ‘Tom’, ‘Vingvn23', 'Stavanger'); SELECT * FROM Persons ORDER BY lastname; SELECT * FROM Persons ORDER BY lastname DESC;

17 INSERT INTO Use to insert new records in a table INSERT INTO table_name VALUES (value1, value2, value3,…); INSERT INTO table_name (column1, column2, column3, … VALUES (value1, value2, value3,…); INSERT INTO persons VALUES (4, ‘Nilsen’, ‘Tom’, ‘Vingvn23', 'Stavanger'); INSERT INTO persons (P_Id, lastname, firstname) VALUES (5, ‘Tjessem’, ‘Jakob’);

18 UPDATE Update records in a table UPDATE table_name SET column=value, column2=value2,… WHERE some_column=some_value; UPDATE Persons SET Address=‘Nissestien 67’, city=‘Sandnes’ WHERE lastname=‘Tjessem’ AND firstname=‘Jakob’; Warning: if you forget to add WHERE clause, all the address and city will be set to ‘Nissestien 67’ and ‘Sandnes’.

19 DELETE statement Used to delete records in a table DELETE FROM table_name WHERE some_column=some_value; DELETE FROM persons WHERE lastname=‘Tjessem’ AND firstname=‘Jakob’; DELETE FROM table_name; Or DELETE * FROM table_name;

20 Test CompanyNameContactNameAddressCity Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå Centro comercial Moctezuma Francisco Chang Sierras de Granada 9993 México D.F. Ernst Handel Roland Mendel Kirchgasse 6 Graz FISSA Fabrica Inter. Salchichas S.A. Diego Roel C/ Moralzarzal, 86 Madrid Galería del gastrónomo Eduardo Saavedra Rambla de Cataluña, 23 Barcelona Island Trading Helen Bennett Garden House Crowther Way Cowes Königlich Essen Philip Cramer Maubelstr. 90 Brandenburg Laughing Bacchus Wine Cellars Yoshi Tannamuri 1900 Oak St. Vancouver Magazzini Alimentari Riuniti Giovanni Rovelli Via Ludovico il Moro 22 Bergamo North/South Simon Crowther South House 300 Queensbridge London Paris spécialités Marie Bertrand 265, boulevard Charonne Paris Rattlesnake Canyon Grocery Paula Wilson 2817 Milton Dr. Albuquerque Simons bistro Jytte Petersen Vinbæltet 34 København The Big Cheese Liz Nixon 89 Jefferson Way Suite 2 Portland Vaffeljernet Palle Ibsen Smagsløget 45 Århus Wolski Zajazd Zbyszek Piestrzeniewicz ul. Filtrowa 68 Warszawa Create this Customers table and do the following SQL queries

21 TEST CREATE TABLE customers ( CompanyNameVARCHAR(100), ContactNameVARCHAR(100), Address VARCHAR(100), City VARCHAR(50) ); INSERT INTO customers VALUES ('Alfreds Futterkiste', 'Maria Anders', 'Obere Str. 57', 'Berlin'); INSERT INTO customers VALUES ('Berglunds snabbköp', 'Christina Berglund', 'Berguvsvägen 8','Luleå'); INSERT INTO customers VALUES ('Centro comercial Moctezuma', 'Francisco Chang', 'Sierras de Granada 9993', 'México D.F.'); INSERT INTO customers VALUES ('Ernst Handel', 'Roland Mendel', 'Kirchgasse 6', 'Graz'); INSERT INTO customers VALUES ('FISSA Fabrica Inter. Salchichas S.A.', 'Diego Roel', 'C/Moralzarzal, 86 ', 'Madrid'); INSERT INTO customers VALUES ('Galería del gastrónomo', 'Eduardo Saavedra', 'Rambla de Cataluña, 23', 'Barcelona'); INSERT INTO customers VALUES ('Island Trading', 'Helen Bennett', 'Garden House Crowther Way', 'Cowes'); INSERT INTO customers VALUES ('Königlich Essen', 'Philip Cramer', 'Maubelstr. 90', 'Brandenburg'); INSERT INTO customers VALUES ('Laughing Bacchus Wine Cellars', 'Yoshi Tannamuri', '1900 Oak St.', 'Vancouver'); INSERT INTO customers VALUES ('Magazzini Alimentari Riuniti', 'Giovanni Rovelli', 'Via Ludovico il Moro 22', 'Bergamo'); INSERT INTO customers VALUES ('North/South', 'Simon Crowther', 'South House 300 Queensbridge', 'London'); INSERT INTO customers VALUES ('Paris spécialités', 'Marie Bertrand', '265, boulevard Charonne', 'Paris'); INSERT INTO customers VALUES ('Rattlesnake Canyon Grocery', 'Paula Wilson', '2817 Milton Dr.', 'Albuquerque'); INSERT INTO customers VALUES ('Simons bistro', 'Jytte Petersen', 'Vinbæltet 34', 'København'); INSERT INTO customers VALUES ('The Big Cheese', 'Liz Nixon', '89 Jefferson Way Suite 2', 'Portland'); INSERT INTO customers VALUES ('Vaffeljernet', 'Palle Ibsen', 'Smagsløget 45', 'Århus'); INSERT INTO customers VALUES ('Wolski Zajazd', 'Zbyszek Piestrzeniewicz', 'ul. Filtrowa 68', 'Warszawa');

22 TEST SELEC * FROM customers; SELECT CompanyName, ContactName FROM customers; SELECT * FROM customers WHERE companyname LIKE ‘a%’; SELECT * FROM customers WHERE companyname LIKE ‘A%’; SELECT companyname, contactname FROM customers WHERE companyname > ‘A’; SELECT companyname, contactname FROM customers WHERE companyname > ‘G’ AND contactname > ‘G’;

23 SQL ADVANCED

24 LIMIT clause Used to specify the number of records to return SELECT column_name(s) FROM table_name LIMIT number; SELECT * FROM persons LIMIT 2; Oracle, SQL Server: Top number|percent (e.g., Top 2, or Top 50 PERCENT Oracle: ROWNUM<=number (e.g., ROWNUM<=5)

25 LIKE operator Used in a WHERE clause to search for a specified pattern in a column SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern; SELECT * FROM persons WHERE city LIKE ‘S%’; %: define wildcards (missing letters) both before and after the pattern SELECT * FROM persons WHERE city LIKE ‘%s’;

26 SQL Wildcards SQL Wildcards can substitute for one or more characters when searching for data in a database SQL wildcards must be used with the SQL LIKE operator Wildcard Description %A substitute for zero or more characters _A substitute for exactly one character

27 SQL Wildcards SELECT * FROM persons WHERE city LIKE ‘Sa%’; SELECT * FROM persons WHERE city LIKE ‘%nes%’; SELECT * FROM persons WHERE firstname LIKE ‘_la’; SELECT * FROM persons WHERE lastname LIKE ‘S_end_on’;

28 IN operator To specify multiple values in a WHERE clause SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2,…) SELECT * FROM Persons WHERE lastname IN (‘Hansen’, ‘Pettersen’) SELECT * FROM Persons WHERE lastname IN (SELECT lastname from Persons where city=‘Sandnes’)

29 BETWEEN operator Used in a WHERE clause to select a range of data between two values SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value 2; SELECT * FROM persons WHERE lastname BETWEEN ‘Hansen’ AND ‘Pettersen’; SELECT * FROM persons WHERE lastname NOT BETWEEN ‘Hansen’ AND ‘Pettersen’; Warning: different database systems have different ways of processing BETWEEN operator

30 Alias An alias name can be given to a table or a column SELECT column_name(s) FROM table_name AS alias_name; Or SELECT column_name AS alias_name FROM table_name; SELECT po.O_ID, p.LastName, p.FirstName FROM Persons AS p, Orders AS po WHERE p.LastName='Hansen' AND p.FirstName='Ola'; Without alias SELECT Orders.OrderID, Persons.LastName, Persons.FirstName FROM Persons, Orders WHERE Persons.LastName=‘Hansen’ AND Persons.FirstName=‘Ola’;

31 JOIN Used to query data from two or more tables – JOIN: return rows when there is at least one match in both tables – LEFT JOIN: return all rows from the left table, even if there are no matches in the right table – RIGHT JOIN: return all rows from the right table, even if there are no matches in the left table – FULL JOIN: return rows where there is a match in one of the tables

32 JOIN O_IdOrderNoP_Id CREATE DATABASE test; CREATE TABLE orders ( O_IdINT, OrderNOINT, P_IdINT, PRIMARY KEY (O_Id) ); INSERT INTO orders VALUES (1, 77895, 3); INSERT INTO orders VALUES (2, 44678, 3); INSERT INTO orders VALUES (3, 22456, 1); INSERT INTO orders VALUES (4, 24562, 1); INSERT INTO orders VALUES (5, 34764, 15); Same as INNER JOIN

33 INNER JOIN SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name; SELECT persons.lastname, persons.firstname, orders.orderNo From Persons INNER JOIN Orders ON persons.P_Id=orders.P_Id ORDER BY persons.Lastname; The INNER JOIN keyword returns rows where there is at least one match in both tables. If there are rows in Persons that do not have matches in Orders, those rows will NOT be listed.

34 LEFT JOIN Returns all rows from the left table, even if there are no matches in the right table SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name; In some databases, LEFT JOIN is called LEFT OUTER JOIN SELECT persons.lastname, persons.firstname, orders.orderno FROM persons LEFT JOIN orders ON persons.P_Id=orders.P_Id ORDER BY persons.lastname;

35 RIGHT JOIN Returns all rows from the right table (table 2), even if there are no matches in the left table (table 1) SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name; In some databases, RIGHT JOIN is called RIGHT OUTER JOIN SELECT persons.lastname, persons.firstname, orders.orderno FROM persons RIGHT JOIN orders ON persons.P_Id=orders.P_Id ORDER BY persons.lastname;

36 FULL JOIN Return rows when there is a match in one of the tables SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name; SELECT persons.lastname, persons.firstname, orders.orderno FROM persons FULL JOIN orders ON persons.P_Id=orders.P_Id ORDER BY persons.lastname; SELECT persons.lastname, persons.firstname, orders.orderno FROM persons LEFT JOIN orders ON persons.P_Id=orders.P_Id UNION SELECT persons.lastname, persons.firstname, orders.orderno FROM persons RIGHT JOIN orders ON persons.P_Id=orders.P_Id FULL JOIN is not supported by MySQL. FULL JOIN = LEFT JOIN UNION RIGHT JOIN

37 UNION operator Combines two or more SELECT statements Each SELECT statement must have the same columns (same name, same data types, in the same order) UNION selects only distinct values by default. To allow duplicate values, use UNION ALL. SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2; SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2; SELECT P_Id FROM persons UNION SELECT P_Id FROM orders;

38 CREATE DATABASE Used to create a database CREATE DATABASE database_name; CREATE DATABASE my_db;

39 CREATE TABLE Used to create a table within a database CREATE TABLE table_name (column_name1 data_type, column_name2 data_type, column_name3 data_type, ….); CREATE TABLE persons ( P_IdINT, LastNameVARCHAR(25), FirstNameVARCHAR(25), Address VARCHAR(25), City VARCHAR(15), PRIMARY KEY (P_Id) );

40 Constraints Used to limit the type of data that can go into a table Can be specified when a table is created (with the CREATE TABLE statement) or after the table is created (with the ALTER TABLE statement) Type of constraints: – NOT NULL – UNIQUE – PRIMARY KEY – FOREIGN KEY – CHECK – DEFAULT

41 NOT NULL Enforce a column to not accept NULL values CREATE TABLE Persons ( P_Id INT NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Addressvarchar(255), Cityvarchar(255) );

42 UNIQUE Uniquely identifies each record in a database table UNIQUE and PRIMARY KEY both provide a guarantee for uniqueness for a column or set of columns A PRIMARY KEY constraint automatically has a UNIQUE constraint defined on it.

43 UNIQUE CREATE TABLE Persons ( P_Id INT NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Addressvarchar(255), Cityvarchar(255) UNIQUE (P_Id) ); CREATE TABLE Persons ( P_Id INT NOT NULL UNIQUE, LastName varchar(255) NOT NULL, FirstName varchar(255), Addressvarchar(255), Cityvarchar(255) ); MySQL SQL Server/Oracle/MS Access CREATE TABLE Persons ( P_Id INT NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Addressvarchar(255), Cityvarchar(255) CONSTRAINT uc_PersonID UNIQUE (P_Id, LastName) ); MySQL/SQL Server/Oracle/MS Access

44 UNIQUE ALTER TABLE Persons ADD UNIQUE (P_Id) ALTER TABLE Persons ADD CONSTRAINT un_PersonID UNIQUE (P_Id, LastName) When Persons table has already been created, use Alter to add new constraints. To drop a UNIQUE constraint ALTER TABLE Persons DROP INDEX un_PersonID ALTER TABLE Persons DROP CONSTRAINT un_PersonID MySQL SQL Server/Oracle/MS Access

45 PRIMARY KEY Each table should have one and only one primary key Primary key should be unique and does not contain NULL values CREATE TABLE Persons ( P_Id INT NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Addressvarchar(255), Cityvarchar(255) PRIMARY KEY (P_Id) ); MySQL CREATE TABLE Persons ( P_Id INT NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Addressvarchar(255), Cityvarchar(255) ); SQL Server/Oracle/MS Access CREATE TABLE Persons ( P_Id INT NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Addressvarchar(255), Cityvarchar(255) CONSTRAINT pk_PersonID PRIMARY KEY (P_Id, LastName) ); MySQL/SQL Server/Oracle/MS Access

46 PRIMARY KEY ALTER TABLE Persons ADD PRIMARY KEY (P_Id) ALTER TABLE Persons ADD CONSTRAINT un_PersonID PRIMARY KEY (P_Id, LastName) When Persons table has already been created, use Alter to add new constraints. To drop a constraint ALTER TABLE Persons DROP PRIMARY KEY ALTER TABLE Persons DROP CONSTRAINT pk_PersonID MySQL SQL Server/Oracle/MS Access

47 FOREIGN KEY A foreign key in one table points to a primary key in another table The foreign key constraint prevents invalid data from being inserted into the foreign key column because it has to be one of the values contained in the table it points to. CREATE TABLE Orders ( O_IdINT NOT NULL, OrderNo INT NOT NULL, P_IdINT, PRIMARY KEY (O_Id), FOREIGN KEY (P_Id) REFERENCES Persons (P_Id) ); MySQL CREATE TABLE Orders ( O_IdINT NOT NULL PRIMARY KEY, OrderNo INT NOT NULL, P_IdINT FOREIGN KEY REFERENCES Persons(P_Id) ); SQL Server/Oracle/MS Access CREATE TABLE Orders ( O_IdINT NOT NULL, OrderNo INT NOT NULL, P_IdINT, PRIMARY KEY (O_Id), CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons (P_Id)); MySQL/SQL Server/Oracle/MS Access

48 FOREIGN KEY ALTER TABLE Orders ADD FOREIGN KEY (P_Id) REFERENCES Persons (P_Id) ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) When Orders table has already been created, use Alter to add new constraints. To drop a constraint ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders MySQL SQL Server/Oracle/MS Access

49 CHECK Constraint Used to limit the value range of a column CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CHECK (P_Id>0) ) MySQL CREATE TABLE Persons ( P_Id int NOT NULL CHECK (P_Id>0), LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) ) SQL Server/Oracle/MS Access CREATE TABLE Persons (P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes‘)); MySQL/SQL Server/Oracle/MS Access

50 CHECK Constraint ALTER TABLE Persons ADD CHECK (P_Id>0) ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City=‘Sandnes’) When a table has already been created, use Alter to add new constraints. To drop a constraint ALTER TABLE Persons DROP CONSTRAINT chk_Person SQL Server/Oracle/MS Access

51 DEFAULT Constraint Used to insert a default value into a column CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) DEFAULT 'Sandnes' ) CREATE TABLE Orders ( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, OrderDate date DEFAULT GETDATE() ) MySQL/SQL Server/Oracle/MS Access

52 DEFAULT Constrain ALTER TABLE Persons ALTER City SET DEFAULT ‘Sandnes’ ALTER TABLE Persons ALTER COLUMN City SET DEFAULT ‘Sandnes’ When a table has already been created, use Alter to add new constraints. To drop a constraint ALTER TABLE Persons ALTER City DROP DEFAULT ALTER TABLE Persons ALTER COLUMN City DROP DEFAULT MySQL SQL Server/Oracle/MS Access MySQL SQL Server/Oracle/MS Access

53 CREATE INDEX statement An index can be created in a table to find data more quickly and efficiently. The users cannot see the indexes. Indexes can speed up searches/queries Updating a table with indexes takes more time than updating a table without indexes. Because indexes also need to update. So please create indexes on columns (and tables) that will be frequently searched.

54 CREATE INDEX statement CREATE INDEX index_name ON table_name (column_name) Duplicate values are allowed CREATE UNIQUE INDEX index_name ON table_name (column_name) Duplicate values are not allowed CREATE INDEX PIndex ON Persons (lastname) CREATE INDEX PIndex ON Persons (LastName, FirstName)

55 SQL DROP INDEX, DROP TABLE, DROP DATABASE DROP INDEX index_name ON table_name MS Access DROP INDEX table_name.index_nameMS SQL Server DROP INDEX index_name DROP DATABASE database_name DB2/Oracle ALTER TABLE table_name DROP INDEX index_nameMySQL DROP TABLE table_name TRUNCATE TABLE table_nameDelete data inside the table, not the table itself

56 SQL ALTER TABLE statement Alter table statement is used to add, delete, or modify columns in an existing table ALTER TABLE table_name ADD column_name datatype To add a column in a table ALTER TABLE table_name DROP COLUMN column_name To delete a column in a table (some database systems don’t allow deleting a column) ALTER TABLE table_name ALTER COLUMN column_name datatype To change the data type of a column in a table

57 SQL ALTER TABLE statement ALTER TABLE Persons ADD DateOfBirth date ALTER TABLE Persons DROP COLUMN DateOfBirth

58 SQL AUTO INCREMENT Auto-increment allows a unique number to be generated when a new record is inserted into a table CREATE TABLE Persons ( P_Id int NOT NULL AUTO_INCREMENT, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (P_Id) ) ALTER TABLE Persons AUTO_INCREMENT=100 To start the auto_increment with another value INSERT INTO Persons (FirstName, LastName) VALUES (‘Lars’, ‘Monsen’) MySQL

59 SQL AUTO INCREMENT Auto-increment allows a unique number to be generated when a new record is inserted into a table CREATE TABLE Persons ( P_Id int PRIMARY KEY IDENTITY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) ) ALTER TABLE Persons AUTO_INCREMENT=100 To start the auto_increment with another value INSERT INTO Persons (FirstName, LastName) VALUES (‘Lars’, ‘Monsen’) SQL Server To start at 10 and increment by 5  IDENTITY(10,5)

60 SQL AUTO INCREMENT Auto-increment allows a unique number to be generated when a new record is inserted into a table CREATE TABLE Persons ( P_Id PRIMARY KEY AUTOINCREMENT, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) ) INSERT INTO Persons (FirstName, LastName) VALUES (‘Lars’, ‘Monsen’) Access To start at 10 and increment by 5  AUTOINCREMENT(10,5)

61 SQL AUTO INCREMENT Auto-increment allows a unique number to be generated when a new record is inserted into a table CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10 INSERT INTO Persons (P_Id,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen') Oracle To start at 10 and increment by 5  AUTOINCREMENT(10,5)

62 SQL Views A view is a virtual table based on the result-set of an SQL statement A view just looks like a real table with fields and records from one or more real tables in the database CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition CREATE VIEW Sandnes AS SELECT LastName, FirstName FROM Persons WHERE city=‘Sandnes’ SELECT * FROM Sandnes CREATE VIEW SandnesLastName AS SELECT LastName FROM Sandnes SELECT * FROM SandnesLastName

63 SQL Views A view can be updated or dropped CREATE OR REPLACE OR ALTER VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition ALTER VIEW Sandnes AS SELECT LastName, FirstName, Address FROM Persons WHERE city=‘Sandnes’ SELECT * FROM Sandnes DROP VIEW view_name DROP VIEW Sandnes

64 SQL FUNCTIONS

65 SQL Functions SQL Aggregate functions: return a single value calculated from values in a column – AVG() – Returns the average value – COUNT() – Returns the number of rows – FIRST() – Returns the first value – LAST() – Returns the last value – MAX() – Returns the largest value – MIN() – Returns the smallest value – SUM() – Returns the sum

66 SQL Functions SQL Scalar functions: returns a single value based on the input value – UCASE() – Converts a field to upper case – LCASE() – Converts a field to lower case – MID() – Extracts characters from a text field – LEN() – Returns the length of a text field – ROUND() – Rounds a numeric field to the number of decimals specified – NOW() – Returns the current system date and time – FORMAT() – Formats how a field is to be displayed

67 Create Products Table Persons Table CREATE TABLE products ( P_IdINT, ProductNameVARCHAR(25), UnitPricedecimal, UnitsInStock INT, UnitsOnOrder INT, PRIMARY KEY (P_Id) ); INSERT INTO products VALUES (1, ‘Jarlsberg', 10.45, 16, 15); INSERT INTO products VALUES (2, ‘Mascarpone', 32.56, 23,NULL); INSERT INTO products VALUES (3, ‘Gorgonzola', 15.67, 9, 20); P_IdProductNameUnitPriceUnitsInStockUnitsOnOrder 1Jarlsberg Mascarpone Gorgonzola

68 SQL AVG() Function AVG() returns the average value of a numeric column SELECT AVG(column_name) FROM table_name SELECT AVG(UnitPrice) AS UnitAverage FROM Products SELECT ProductName FROM products WHERE UnitPrice>( SELECT AVG(UnitPrice) FROM Products)

69 SQL COUNT() Function COUNT() returns the number of rows that matches a specified criteria SELECT COUNT(column_name) FROM table_name SELECT COUNT(*) FROM Products SELECT COUNT(DISTINCT column_name) FROM table_name SELECT COUNT(DISTINCT city) As CityName From persons

70 SQL MAX() Function MAX() returns the largest value of the selected column SELECT MAX(column_name) FROM table_name SELECT MAX(UnitPrice) AS LargestUnitPrice FROM Products

71 SQL SUM() Function SUM() returns the total sum of the selected column SELECT SUM(column_name) FROM table_name SELECT SUM(UnitPrice) AS TotalUnitPrice FROM Products

72 Create CumOrders Table CREATE TABLE CumOrders ( O_IdINT, OrderDateDate, OrderPriceINT, CustomerVarchar(30), PRIMARY KEY (O_Id)); INSERT INTO cumorders VALUES (1, ‘ ’, 1000, ‘Hansen’); INSERT INTO cumorders VALUES (2, ‘ ’, 1600, ‘Nilsen’); INSERT INTO cumorders VALUES (3, ‘ ’, 700, ‘Hansen’); INSERT INTO cumorders VALUES (4, ‘ ’, 300, ‘Hansen’); INSERT INTO cumorders VALUES (5, ‘ ’, 2000, ‘Jensen’); INSERT INTO cumorders VALUES (6, ‘ ’, 100, ‘Nilsen’); O_IdOrderDateOrderPriceCustomer 12008/11/121000Hansen 22008/10/231600Nilsen 32008/09/02700Hansen 42008/09/03300Hansen 52008/08/302000Jensen 62008/10/04100Nilsen

73 SQL GROUP BY Statement Aggregate functions often need an added GROUP BY statement to group the result-set by one or more columns SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name SELECT Customer, SUM(OrderPrice) FROM CumOrders GROUP BY Customer SELECT Customer, OrderDate, SUM(OrderPrice) FROM CumOrders GROUP BY Customer, OrderDate

74 SQL HAVING Clause HAVING was added to SQL because the WHERE keyword could not be used wit the aggregate functions SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value SELECT Customer, SUM(OrderPrice) FROM CumOrders GROUP BY Customer HAVING SUM(OrderPrice)<2000

75 SQL HAVING Clause SELECT Customer, SUM(OrderPrice) FROM CumOrders WHERE Customer=‘Hansen’ OR Customer=‘Jensen’ GROUP BY Customer HAVING SUM(OrderPrice)>1500

76 SQL UCASE() Function UCASE() converts the value of a field to uppercase. SELECT UCASE(column_name) FROM table_name SELECT UCASE(LastName) as LastName From Persons

77 SQL LCASE() Function LCASE() converts the value of a field to lowercase. SELECT LCASE(column_name) FROM table_name SELECT LCASE(LastName) as LastName From Persons

78 SQL MID() Function MID() extracts characters from a text field SELECT MID(column_name, start[, length]) FROM table_name SELECT MID(City, 1, 4) as SmallCity From Persons ParameterDescription column_nameRequired. The field to extract characters from startRequired. Specifies the starting position (starts at 1) lengthOptional. The number of characters to return. If omitted, the MID() function returns the rest of the text SELECT substr(City, 1, 4) as SmallCity From Persons PostgreSQL MySQL PostgreSQL:

79 SQL LENGTH() Function LENGTH() returns the length of the value in a text field. SELECT LENGTH(column_name) FROM table_name SELECT LENGTH(Address) as LengthOfAddress From Persons

80 SQL ROUND() Function ROUND() rounds a numeric field to the number of decimals specified SELECT ROUND(column_name, decimals) FROM table_name SELECT ROUND(UnitPrice, 0) as Price From Products ParameterDescription column_nameRequired. The field to round. decimalsRequired. Specifies the number of decimals to be returned. UPDATE Products SET UnitPrice=10.49 WHERE P_Id=1

81 SQL Date Functions Introduces some build-in functions to deal with dates FunctionDescription NOW()Returns the current date and time CURDATE()Returns the current date CURTIME()Returns the current time DATE()Extracts the date part of a date or date/time expression EXTRACT()Returns a single part of a date/time DATE_ADD()Adds a specified time interval to a date DATE_SUB()Subtracts a specified time interval from a date DATEDIFF()Returns the number of days between two dates DATE_FORMAT()Displays date/time data in different formats MySQL Date Functions PostgreSQL:

82 MySQL NOW() Function NOW() returns the current date and time SELECT NOW(), CURDATE(), CURTIME() CREATE TABLE Orders ( OrderId int NOT NULL, ProductName varchar(50) NOT NULL, OrderDate datetime NOT NULL, PRIMARY KEY (OrderId) ) INSERT INTO orders VALUES (1, ‘Jarlsberg Cheese’, NOW()) SELECT ProductName, UnitPrice, NOW() as PerDate FROM Products SELECT NOW() PostgreSQL MySQL

83 MySQL CURDATE() Function CURDATE() returns the current date SELECT NOW(), CURDATE(), CURTIME() CREATE TABLE Orders ( OrderId int NOT NULL, ProductName varchar(50) NOT NULL, OrderDate datetime NOT NULL, PRIMARY KEY (OrderId) ) INSERT INTO orders VALUES (2, ‘Jarlsberg Cheese’, CURDATE())

84 MySQL DATE() Function DATE() function extracts the date part of a date or date/time expression DATE(date) SELECT ProductName, DATE(OrderDate) as OrderDate FROM Orders WHERE OrderId=1

85 MySQL EXTRACT() Function The EXTRACT() function returns a single part of a date/time, such as year, month, day, hour, minute, etc. Unit value can be: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR, or any combination of them EXTRACT(unit FROM date) SELECT EXTRACT(YEAR FROM OrderDate) as OrderYear, EXTRACT(Month FROM OrderDate) as OrderMonth, EXTRACT(DAY FROM OrderDate) as OrderDay FROM Orders WHERE OrderID=1

86 MySQL DATE_ADD() Function The DATE_ADD() function adds a specified time interval to a date. DATE_ADD(date, INTERVAL expr type) SELECT OrderID, DATE_ADD(OrderDate, INTERVAL 45 DAY) AS OrderPayDate FROM Orders

87 MySQL DATE_SUB() Function The DATE_SUB() function subtracts a specified time interval from a date. DATE_SUB(date, INTERVAL expr type) SELECT OrderID, DATE_SUB(OrderDate, INTERVAL 5 DAY) AS SubtractDate FROM Orders

88 MySQL DATEIFF() Function The DATEDIFF() function returns the time between two dates. DATEDIFF(date1, date2) SELECT DATEDIFF ( ‘ ’, ‘ ’) AS DiffDate

89 MySQL DATE_FORMAT() Function The DATE_FORMAT() function displays the date/time in different formats. DATE_FORMAT(date, format) SELECT DATE_FORMAT(NOW(), ‘%m-%d-%y’)

90 SQL Date Functions Introduces some build-in functions to deal with dates SQL Server Date Functions FunctionDescription GETDATE()Returns the current date and time DATEPART()Returns a single part of a date/time DATEADD()Adds or subtracts a specified time interval from a date DATEDIFF()Returns the time between two dates CONVERT()Displays date/time data in different formats

91 SQL Date Datatypes MySQL – Date: YYYY-MM-DD – Datetime: YYYY-MM-DD HH:MM:SS – Timestamp: YYYY-MM-DD HH:MM:SS – Year: YYYY or YY SELECT * FROM Orders WHERE OrderDate=‘ ’

92 SQL NULL Values NULL values represent missing unknown data. NULL is used as a placeholder for unknown or inapplicable values NULL vs. 0 INSERT INTO persons VALUES (5, 'Ding', 'Ying', NULL, NULL); DELETE FROM Persons WHERE P_ID=5 SELECT * FROM Persons WHERE Address IS NULL SELECT * FROM Persons WHERE Address IS NOT NULL

93 SQL NULL Functions SELECT ProdcutName, UnitPrice*(UnitsInStock+UnitsOnOrder) FROM Products ISNULL(), NVL(), IFNULL(), COALESCE() are used to treat NULL values. Below all makes nulls to be zero SELECT ProductName, UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0)) FROM Products SQL Server/Access SELECT ProductName, UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0)) FROM Products Oracle SELECT ProductName, UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0)) AS Price FROM Products SELECT ProductName, UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))AS Price FROM Products MySQL

94 SQL DATATYPES

95 SQL Datatype Data typeDescriptionStorage TextUse for text or combinations of text and numbers. 255 characters maximum MemoMemo is used for larger amounts of text. Stores up to 65,536 characters. Note: You cannot sort a memo field. However, they are searchable ByteAllows whole numbers from 0 to 2551 byte IntegerAllows whole numbers between -32,768 and 32,7672 bytes LongAllows whole numbers between -2,147,483,648 and 2,147,483,6474 bytes SingleSingle precision floating-point. Will handle most decimals4 bytes DoubleDouble precision floating-point. Will handle most decimals8 bytes CurrencyUse for currency. Holds up to 15 digits of whole dollars, plus 4 decimal places. Tip: You can choose which country's currency to use 8 bytes AutoNumberAutoNumber fields automatically give each record its own number, usually starting at 1 4 bytes Date/TimeUse for dates and times8 bytes Yes/NoA logical field can be displayed as Yes/No, True/False, or On/Off. In code, use the constants True and False (equivalent to -1 and 0). Note: Null values are not allowed in Yes/No fields 1 bit OLE ObjectCan store pictures, audio, video, or other BLOBs (Binary Large OBjects)up to 1GB HyperlinkContain links to other files, including web pages Lookup WizardLet you type a list of options, which can then be chosen from a drop-down list 4 bytes Access

96 SQL Datatype Data typeDescription CHAR(size)Holds a fixed length string (can contain letters, numbers, and special characters). The fixed size is specified in parenthesis. Can store up to 255 characters VARCHAR(size)Holds a variable length string (can contain letters, numbers, and special characters). The maximum size is specified in parenthesis. Can store up to 255 characters. Note: If you put a greater value than 255 it will be converted to a TEXT type TINYTEXTHolds a string with a maximum length of 255 characters TEXTHolds a string with a maximum length of 65,535 characters BLOBFor BLOBs (Binary Large OBjects). Holds up to 65,535 bytes of data MEDIUMTEXTHolds a string with a maximum length of 16,777,215 characters MEDIUMBLOBFor BLOBs (Binary Large OBjects). Holds up to 16,777,215 bytes of data LONGTEXTHolds a string with a maximum length of 4,294,967,295 characters LONGBLOBFor BLOBs (Binary Large OBjects). Holds up to 4,294,967,295 bytes of data ENUM(x,y,z,etc.)Let you enter a list of possible values. You can list up to values in an ENUM list. If a value is inserted that is not in the list, a blank value will be inserted.Note: The values are sorted in the order you enter them. You enter the possible values in this format: ENUM('X','Y','Z') SETSimilar to ENUM except that SET may contain up to 64 list items and can store more than one choice MySQL: Text

97 SQL Datatype Data typeDescription TINYINT(size)-128 to 127 normal. 0 to 255 UNSIGNED*. The maximum number of digits may be specified in parenthesis SMALLINT(size) to normal. 0 to UNSIGNED*. The maximum number of digits may be specified in parenthesis MEDIUMINT(size) to normal. 0 to UNSIGNED*. The maximum number of digits may be specified in parenthesis INT(size) to normal. 0 to UNSIGNED*. The maximum number of digits may be specified in parenthesis BIGINT(size) to normal. 0 to UNSIGNED*. The maximum number of digits may be specified in parenthesis FLOAT(size,d)A small number with a floating decimal point. The maximum number of digits may be specified in the size parameter. The maximum number of digits to the right of the decimal point is specified in the d parameter DOUBLE(size,d)A large number with a floating decimal point. The maximum number of digits may be specified in the size parameter. The maximum number of digits to the right of the decimal point is specified in the d parameter DECIMAL(size,d)A DOUBLE stored as a string, allowing for a fixed decimal point. The maximum number of digits may be specified in the size parameter. The maximum number of digits to the right of the decimal point is specified in the d parameter MySQL: Number Unsigned: integer cannot be negative

98 SQL Datatype Data typeDescription DATE()A date. Format: YYYY-MM-DDNote: The supported range is from ' ' to ' ' DATETIME()*A date and time combination. Format: YYYY-MM-DD HH:MM:SSNote: The supported range is from ' :00:00' to ' :59:59' TIMESTAMP()*A timestamp. TIMESTAMP values are stored as the number of seconds since the Unix epoch (' :00:00' UTC). Format: YYYY-MM-DD HH:MM:SSNote: The supported range is from ' :00:01' UTC to ' :14:07' UTC TIME()A time. Format: HH:MM:SSNote: The supported range is from '- 838:59:59' to '838:59:59' YEAR()A year in two-digit or four-digit format.Note: Values allowed in four- digit format: 1901 to Values allowed in two-digit format: 70 to 69, representing years from 1970 to 2069 MySQL: Date

99 Homework 5 Create one database containing several tables using PostgreSQL 10 SQL queries – Embedded queries – GroupBy queries – Join queries SELECT Customer, SUM(OrderPrice) FROM CumOrders GROUP BY Customer HAVING SUM(OrderPrice)<2000 SELECT persons.lastname, persons.firstname, orders.orderNo From Persons INNER JOIN Orders ON persons.P_Id=orders.P_Id ORDER BY persons.Lastname; SELECT * FROM Persons WHERE lastname IN (SELECT lastname from Persons where city=‘Sandnes’)

100 SQL Quiz


Download ppt "SQL From: SQL It is a standard language for accessing and manipulating databases – MySQL, SQL Server, Access, Oracle, Sybase,"

Similar presentations


Ads by Google