advanced sql aggregations, grouping, sql functions, ddl softuni team technical trainers software...
TRANSCRIPT
![Page 1: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/1.jpg)
Advanced SQLAggregations, Grouping,
SQL Functions, DDL
SoftUni TeamTechnical TrainersSoftware Universityhttp://softuni.bg
![Page 2: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/2.jpg)
Table of Contents
1. Nested SELECT Statements
2. Aggregating Data Group Functions: COUNT, SUM, MIN, MAX Grouping with GROUP BY
3. Microsoft SQL Server Functions
4. Data Definition Language (DDL) Creating Tables in MS SQL Server
5. Transactions in MS SQL Server2
![Page 3: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/3.jpg)
SQL LanguageNested SELECT Statements
SQL
SQL
SQL
SQL
![Page 4: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/4.jpg)
4
SELECT statements can be nested in the WHERE clause
Note: prefer joins to nested SELECT for better performance
Nested SELECT Statements
SELECT FirstName, LastName, SalaryFROM EmployeesWHERE Salary = (SELECT MAX(Salary) FROM Employees)
SELECT FirstName, LastName, DepartmentID, SalaryFROM EmployeesWHERE DepartmentID IN (SELECT DepartmentID FROM Departments WHERE Name='Sales')
FirstName LastName SalaryKen Sanchez 125500.00
![Page 5: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/5.jpg)
5
Tables from the outer SELECT can be referred in the inner SELECT by aliases
Example: find the highest salary for each department and the employee that takes it
Nested SELECT with Table Aliases
SELECT FirstName, LastName, DepartmentID, SalaryFROM Employees eWHERE Salary = (SELECT MAX(Salary) FROM Employees WHERE DepartmentID = e.DepartmentID)ORDER BY DepartmentID
![Page 6: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/6.jpg)
6
Using the EXISTS operator in SELECT statements Find all employees with managers from the first department
Using the EXISTS Operator
SELECT FirstName, LastName, EmployeeID, ManagerIDFROM Employees eWHERE EXISTS (SELECT EmployeeID FROM Employees m WHERE m.EmployeeID = e.ManagerID AND m.DepartmentID = 1)
FirstName LastName EmployeeID ManagerIDRoberto Tamburello 3 12Rob Walters 4 3… … … …
![Page 7: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/7.jpg)
SQL LanguageAggregating Data with Group Functions
![Page 8: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/8.jpg)
8
Group functions operate over sets of rows to return one single result (per group)
Group Functions
EmployeeID Salary1 12500.002 13500.003 43300.004 29800.005 25000.00... ...
MAX(Salary)125500.00
![Page 9: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/9.jpg)
9
COUNT(*) – count of the selected rows COUNT(column) – count of the non-null values in given
column SUM(column) – sum of the values in given column MIN(column) – the minimal value in given column MAX(column) – the maximal value in given column AVG(column) – average of the values in given column
Group Functions in SQL
![Page 10: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/10.jpg)
10
You can use MIN() and MAX() for almost any data type (int, datetime, varchar, ...)
Show the first and last employee's name in alphabetical order:
MIN() and MAX() Functions
SELECT MIN(HireDate) MinHD, MAX(HireDate) MaxHDFROM Employees
MinHD MaxHD1996-07-31 2003-06-03
SELECT MIN(LastName), MAX(LastName)FROM Employees
![Page 11: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/11.jpg)
11
You can use AVG() and SUM() only for numeric data types
AVG() and SUM() Functions
SELECT AVG(Salary) [Average Salary], MAX(Salary) [Max Salary], MIN(Salary) [Min Salary], SUM(Salary) [Salary Sum]FROM EmployeesWHERE JobTitle = 'Production Technician'
Average Salary Max Salary Min Salary Salary Sum12267.5159 15000.00 9500.00 1926000.00
![Page 12: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/12.jpg)
12
COUNT(*) returns the number of rows in the result record set
COUNT(expr) returns the number of rows with non-null values
The COUNT(…) Function
SELECT COUNT(*) Cnt FROM EmployeesWHERE DepartmentID = 3
Cnt18
SELECT COUNT(ManagerID) MgrCount, COUNT(*) AllCountFROM EmployeesWHERE DepartmentID = 16
MgrCount AllCount1 2
![Page 13: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/13.jpg)
13
Group functions ignore NULL values in the target column
If each NULL value in the ManagerID column were considered as 0 in the calculation, the result would be 106
Group Functions and NULLs
SELECT AVG(ManagerID) Avg, SUM(ManagerID) / COUNT(*) AvgAllFROM Employees
Avg AvgAll108 106
![Page 14: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/14.jpg)
14
Find the earliest hired employee for each department
Group Functions in Nested Queries
SELECT e.FirstName, e.LastName, e.HireDate, d.Name as DeptFROM Employees e JOIN Departments d ON e.DepartmentID = d.DepartmentIDWHERE e.HireDate = (SELECT MIN(HireDate) FROM Employees WHERE DepartmentID = d.DepartmentID)
FirstName LastName HireDate DeptGuy Gilbert 1998-07-31 00:00:00 ProductionKevin Brown 1999-02-26 00:00:00 Marketing… … … …
![Page 15: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/15.jpg)
SQL LanguageGroup Functions with GROUP BY
![Page 16: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/16.jpg)
72000
108600
185600
16
Aggregating Groups of Data
DepartmentID Salary12 1030012 1680012 1680012 1030012 178002 288002 250002 298002 2500016 12550016 60100... ...
DepartmentID SUM (Salary)
12 72000
2 108600
16 185600
... ...
![Page 17: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/17.jpg)
17
The GROUP BY clause: split the table rows into groups The SELECT + GROUP BY syntax:
The <group_by_expression> is a list of columns
The GROUP BY Statement
SELECT <columns>, <group_function(column)>FROM <table>[WHERE <condition>][GROUP BY <group_by_expression> ][HAVING <filtering_expression>][ORDER BY <columns>]
![Page 18: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/18.jpg)
18
Example of grouping data:
The GROUP BY column is not required to be in the SELECT list
The GROUP BY Statement (2)
SELECT DepartmentID, SUM(Salary) as SalariesCostFROM EmployeesGROUP BY DepartmentID
DepartmentID SalariesCost12 720002 10860016 185600... ...
![Page 19: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/19.jpg)
19
Grouping by Several Columns
39700
77000
52800
65000
43300
DepartmentID JobTitle Salary
11 Network Manager 39700
11 Network Administrator 32500
11 Network Administrator 32500
11 Database Administrator 38500
11 Database Administrator 38500
10 Accountant 26400
10 Accountant 26400
10 Finance Manager 43300
... ... ...
DepartmentID JobTitle Salary
11 Network Manager 39700
11 Network Administrator 65000
11 Database Administrator 77000
10 Accountant 52800
10 Finance Manager 43300
... ... ...
![Page 20: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/20.jpg)
20
Example of grouping data by several columns:
Grouping by Several Columns – Example
SELECT DepartmentID, JobTitle, SUM(Salary) as Salaries, COUNT(*) as CountFROM EmployeesGROUP BY DepartmentID, JobTitle
DepartmentID JobTitle Salaries Count2 Senior Tool Designer 58600 22 Tool Designer 50000 27 Production Supervisor 525000 217 Production Technician 1926000 157... ... ... ...
![Page 21: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/21.jpg)
21
This SELECT statement is illegal:
Can not combine columns with group functions unless the columns are in the GROUP BY clause
This SELECT statement is also illegal:
Can not use WHERE for group functions
Illegal Use of Group Functions
SELECT DepartmentID, COUNT(LastName) FROM Employees
SELECT DepartmentID, AVG(Salary)FROM EmployeesWHERE AVG(Salary) > 30GROUP BY DepartmentID
![Page 22: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/22.jpg)
22
When using groups we can select only columns listed in theGROUP BY and grouping functions over the other columns
Can not select columns not listed in the GROUP BY clause It is allowed to apply group functions over the columns in the GROUP BY clause, but this has no sense
Restrictions for Grouping
SELECT DepartmentID, JobTitle, SUM(Salary) AS Cost, MIN(HireDate) as StartDateFROM EmployeesGROUP BY DepartmentID, JobTitle
![Page 23: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/23.jpg)
23
HAVING works like WHERE but is used for the grouping functions
Using GROUP BY with HAVING Clause
SELECT DepartmentID, COUNT(EmployeeID) as EmpCount, AVG(Salary) as AverageSalaryFROM EmployeesGROUP BY DepartmentIDHAVING COUNT(EmployeeID) BETWEEN 3 AND 5DepartmentID EmpCount AverageSalary2 4 2715012 5 14400… … …
![Page 24: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/24.jpg)
24
Grouping can be applied on columns from joined tables
Using Grouping Functions and Table Joins
SELECT COUNT(*) AS EmpCount, d.Name AS DeptNameFROM Employees e JOIN Departments d ON e.DepartmentID = d.DepartmentIDWHERE e.HireDate BETWEEN '1999-2-1' AND '2002-12-31'GROUP BY d.NameHAVING COUNT(*) > 5ORDER BY EmpCount DESC
EmpCount DeptName95 Production8 Finance… …
![Page 25: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/25.jpg)
SQL LanguageSQL Server Functions
![Page 26: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/26.jpg)
26
Single-row functions String functions Mathematical functions Date functions Conversion functions
Multiple-row functions Aggregate functions
Standard Functions in MS SQL Server
SQL
![Page 27: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/27.jpg)
27
ISNULL(<value>,<default_value>) Converts NULL values to given default value
ISNULL() Function
SELECT Name AS [Projects Name], ISNULL(EndDate, GETDATE()) AS [End Date]FROM Projects
Projects Name End DateClassic Vest 2015-02-11 16:43:00Cycling Cap 2003-06-01 00:00:00.000Full-Finger Gloves 2003-06-01 00:00:00.000... ...
EndDate is NULL, so the current date is returned instead
![Page 28: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/28.jpg)
28
Changing the character casing: LOWER(), UPPER() String manipulation functions: SUBSTRING(), LEN(), LEFT(), RIGHT(), TRIM(), REPLACE()
String Functions
SELECT LastName, LEN(LastName) AS LastNameLen, UPPER(LastName) AS UpperLastNameFROM EmployeesWHERE RIGHT(LastName, 3) = 'son'
LastName LastNameLen UpperLastNameErickson 8 ERICKSONJohnson 7 JOHNSON... ... ...
![Page 29: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/29.jpg)
29
Mathematical functions: ROUND, FLOOR, POWER, ABS, SQRT, …
Date functions: GETDATE, DATEADD, DAY, MONTH, YEAR, …
Conversion functions: CONVERT, CAST
Other Functions
SELECT FLOOR(3.14) 3SELECT ROUND(5.86, 0) 6.00
SELECT CONVERT(DATETIME, '20051231', 112) 2005-12-31 00:00:00.000-- 112 is the ISO formatting style YYYYMMDD
SELECT DATEADD(day, 15, GETDATE())
![Page 30: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/30.jpg)
30
We can combine functions to achieve more complex behavior
Combining Functions
SELECT Name AS [Projects Name], ISNULL(CONVERT(nvarchar(50), EndDate), 'Not Finished') AS [Date Finished]FROM Projects
Projects Name Date FinishedHL Mountain Front Wheel Jun 1 2003 12:00AMLL Touring Handlebars Not FinishedHL Touring Handlebars Not FinishedLL Road Front Wheel Jun 1 2003 12:00AM... ...
![Page 31: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/31.jpg)
31
We can aggregate strings with STUFF function.
SQL Aggregation
SELECT STUFF(( SELECT ', ' + Name FROM Towns FOR XML PATH('')), 1, 2, '') AS Towns
TownsRedmond, Calgary, Edmonds, Seattle, Bellevue, Issaquah, Everett, Bothell, San Francisco, Index, Snohomish, Monroe, Renton, Newport Hills, Carnation, Sammamish, Duvall, Gold Bar, Nevada, Kenmore, Melbourne, Kent, Cambridge, Minneapolis, Portland, Duluth, Detroit, Memphis, Ottawa, Bordeaux, Berlin, Sofia
![Page 32: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/32.jpg)
SQL LanguageData Definition Language (DDL)
![Page 33: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/33.jpg)
33
Data Definition Language (DDL) for defining / editing objects CREATE ALTER DROP
Data Control Language (DCL) for managing access permissions GRANT REVOKE DENY
DDL and DCL Commands
![Page 34: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/34.jpg)
34
The SQL CREATE command: CREATE TABLE <name> (<field_definitions>) CREATE VIEW <name> AS <select> CREATE <object> <definition>
Creating Database Objects
CREATE TABLE Persons ( PersonID int IDENTITY, Name nvarchar(100) NOT NULL, CONSTRAINT PK_Persons PRIMARY KEY(PersonID))GO
CREATE VIEW [First 10 Persons] ASSELECT TOP 10 Name FROM Persons
![Page 35: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/35.jpg)
35
Creating Objects – More Examples
CREATE TABLE Countries ( CountryID int IDENTITY, Name nvarchar(100) NOT NULL, CONSTRAINT PK_Countries PRIMARY KEY(CountryID))
GO
CREATE TABLE Cities ( CityID int IDENTITY, Name nvarchar(100) NOT NULL, CountryID int NOT NULL, CONSTRAINT PK_Cities PRIMARY KEY(CityID))
![Page 36: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/36.jpg)
36
The SQL ALTER command ALTER TABLE <name> <command> ALTER <object> <command>
Modifying Database Objects
-- Add a foreign key constraint Cities --> CountryALTER TABLE CitiesADD CONSTRAINT FK_Cities_Countries FOREIGN KEY (CountryID) REFERENCES Countries(CountryID)
-- Add a column Population to the table CountryALTER TABLE Countries ADD Population int
-- Remove the column Population from the table CountryALTER TABLE Countries DROP COLUMN Population
![Page 37: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/37.jpg)
37
DROP command DROP TABLE <name> DROP TRIGGER <name> DROP INDEX <name> DROP <object>
Deleting Database Objects
DROP TABLE Persons
ALTER TABLE CitiesDROP CONSTRAINT FK_Cities_Countries
![Page 38: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/38.jpg)
38
GRANT command
Example:
REVOKE command
Example:
Managing Access Permissions
GRANT <persmission> ON <object> TO <role>
GRANT SELECT ON Persons TO public
REVOKE <persmission> ON <object> FROM <role>
REVOKE SELECT ON Employees FROM public
![Page 39: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/39.jpg)
Creating Tables in SQL ServerBest Practices
![Page 40: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/40.jpg)
40
Creating a new table: Define the table name
Should have good name Define the columns and their types
Use proper data type Define the table primary key
Use IDENTITY for enabling auto increment of the primary key Define foreign keys and constraints
Creating Tables in SQL Server
![Page 41: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/41.jpg)
41
CREATE TABLE Groups ( GroupID int IDENTITY, Name nvarchar(100) NOT NULL, CONSTRAINT PK_Groups PRIMARY KEY(GroupID))
CREATE TABLE Users ( UserID int IDENTITY, UserName nvarchar(100) NOT NULL, GroupID int NOT NULL, CONSTRAINT PK_Users PRIMARY KEY(UserID), CONSTRAINT FK_Users_Groups FOREIGN KEY(GroupID) REFERENCES Groups(GroupID))
Creating Tables in SQL Server – Examples
![Page 42: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/42.jpg)
TransactionsBegin / Commit / Rollback in SQL Server
![Page 43: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/43.jpg)
43
Pessimistic concurrency (default in SQL Server) Locks table data during each data modification Concurrent users wait until the lock is released
Optimistic concurrency (default in MySQL and Oracle) No locks are performed when data is being read or changed Concurrent users don’t see the changes until they are committed /
rolled-back Supported with the SNAPSHOT isolation level in SQL Server
What Is Concurrency Control?
![Page 44: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/44.jpg)
44
Transactions start with BEGIN TRANSACTION (or just BEGIN TRAN)
Use COMMIT to confirm changes and finish the transaction Use ROLLBACK to cancel changes and abort the transaction Example:
Transactions
BEGIN TRANDELETE FROM EmployeesProjects;DELETE FROM Projects;ROLLBACK TRAN
![Page 45: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/45.jpg)
45
What is implicit transactions mode? Automatically start a new transaction after each commit or
rollback Nested transactions are not allowed Transaction must be explicitly completed with COMMIT or ROLLBACK TRANSACTION
By default, IMPLICIT_TRANSACITONS setting is switched off
The Implicit Transactions Option
SET IMPLICIT_TRANSACTIONS ON
![Page 46: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/46.jpg)
46
1. How do we nest SELECT statements?
2. How do we aggregate data in SQL? Explain the group functions in SQL Explain the GROUP BY clause
3. Explain a few MS SQL Server functions?
4. What are the DDL commands in SQL? How to create a table in MS SQL Server?
5. How to start / commit / cancel a transaction?
Summary
![Page 47: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/47.jpg)
Questions??
??
?
?
??
?
?
https://softuni.bg/courses/databases
Advanced SQL
![Page 48: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/48.jpg)
License
This course (slides, examples, demos, videos, homework, etc.)is licensed under the "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International" license
48
Attribution: this work may contain portions from "Databases" course by Telerik Academy under CC-BY-NC-SA license
![Page 49: Advanced SQL Aggregations, Grouping, SQL Functions, DDL SoftUni Team Technical Trainers Software University](https://reader038.vdocuments.mx/reader038/viewer/2022102908/56649e925503460f94b9827e/html5/thumbnails/49.jpg)
Free Trainings @ Software University Software University Foundation – softuni.org Software University – High-Quality Education,
Profession and Job for Software Developers softuni.bg
Software University @ Facebook facebook.com/SoftwareUniversity
Software University @ YouTube youtube.com/SoftwareUniversity
Software University Forums – forum.softuni.bg