SlideShare uma empresa Scribd logo
1 de 24
[object Object],[object Object],[object Object],[object Object],[object Object]
Table of Contents Introduction – 3 BlockFlix Movie Rental -4 BlockFlix SSIS – 6 BlockFlix SSRS - 10 Piggy Bank  - 14 Shred XML – 16 View  - 17 Triggers – 18 Stored Procedure -19
Introduction This Presentation will illustrate key skills learned  in the SQL Masters course such as SSIS,  SSRS,  SQLServer,  T-SQL,  Triggers  and Views
BlockFlix Movie Rental ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Database Diagram
Sample XML Input
IMPORT XML FILE VIA SSIS AFTER CONTROL FLOW EXECUTION ADD MOVIE Demonstration Consisting of 3 linked data flows
IMPORT XML FILE VIA SSIS  AFTER MOVIE/TALENT EXECUTION ADD MOVIE Demonstration
IMPORT XML FILE VIA SSIS  AFTER MOVIE/TALENT EXECUTION ADD MOVIE Demonstration
Most active customers in the past month
Most rented movies in the past month
Lost / damaged movies and their related transactions
Customers   and Membership Types
P I G G Y - B A N K ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Database Diagram
Shred Xml into Database Table ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Create View for Statements CREATE VIEW [dbo].[AccountStatement] WITH SCHEMABINDING AS SELECT  dbo.Account.CurrentBalance, dbo.Account.AccountID,  dbo.TransactionType.TransactionTypeName, dbo.AccountStatus.AccountStatus,  dbo.AccountType.AccountTypeName, dbo.AccountType.InterestRate,  dbo.Customer.CustomerID, dbo.Customer.CustomerFirstName,  dbo.Customer.CustomerLastName,  dbo.Customer.CustomerMiddleInitial,  dbo.Customer.Street, dbo.Customer.City, dbo.Customer.State, dbo.Customer.ZipCode,  dbo.Customer.HomePhone,  dbo.Transactions.TransactionDate,  dbo.Transactions.TransactionAmount,dbo.Transactions.NewBalance FROM  dbo.Account  INNER JOIN  dbo.AccountStatus  ON  dbo.Account.AccountStatusID = dbo.AccountStatus.AccountStatusID  INNER JOIN  dbo.AccountType  ON  dbo.Account.AccountTypeID = dbo.AccountType.AccountTypeID  INNER JOIN  dbo.CustomerAccount  ON  dbo.Account.AccountID = dbo.CustomerAccount.AccountID  INNER JOIN  dbo.Customer  ON  dbo.CustomerAccount.CustomerID = dbo.Customer.CustomerID  INNER JOIN  dbo.Transactions  ON  dbo.Account.AccountID = dbo.Transactions.AccountID  AND  dbo.Customer.CustomerID = dbo.Transactions.CustomerID  INNER JOIN dbo.TransactionType  ON  dbo.Transactions.TransactionTypeID =  dbo.TransactionType.TransactionTypeID
Triggers to protect Data CREATE TRIGGER PreventChange  ON DATABASE  FOR DROP_TABLE, ALTER_TABLE  AS  PRINT 'You must disable Trigger "PreventChange" to drop or alter tables!'  ROLLBACK CREATE TRIGGER DelTrans ON [dbo].[Transactions] INSTEAD OF DELETE AS BEGIN  Raiserror('Deletes of Transactions not allowed', 13,1); ROLLBACK TRAN; END   Create Trigger DelAccount on [dbo].[Account] INSTEAD OF DELETE AS BEGIN  Raiserror('Deletes of Accounts not allowed', 13,1); ROLLBACK TRAN; END   CREATE TRIGGER UpdTran ON [dbo].[Transactions] INSTEAD OF UPDATE AS BEGIN  Raiserror('Updates of Transactions not allowed', 14,1); ROLLBACK TRAN; END
Stored Procedures with T-SQL CREATE PROCEDURE [dbo].[Deposit] -- Add the parameters for the stored procedure here @CustomerID  int = NULL,  @AccountID  int = NULL, @TransactionAmount money = NULL AS BEGIN TRY BEGIN TRAN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Check for null values if @AccountID is null BEGIN raiserror('Account ID must be provided', 12, 1); END if @CustomerID is null BEGIN   raiserror('Customer ID must be provided', 12, 2); END   If @TransactionAmount Is Null   BEGIN raiserror('Transaction Amount must be provided', 12, 3); END
--check valid Custid and  accountid if @AccountID != (SELECT AccountID FROM Account WHERE AccountID = @AccountID) BEGIN   raiserror('Account ID is invalid', 12, 4); END if @CustomerID != (SELECT CustomerID FROM Customer WHERE CustomerID = @CustomerID) BEGIN raiserror('Customer ID is invalid', 12, 5); END --Fetch current balance to calculate new balance DECLARE @CURRBAL money = (SELECT CurrentBalance FROM Account WHERE AccountID = @AccountID), @NewBalance money  = NULL, @TransactionTypeID tinyint = 2, @AcctStatID tinyint = 1 SET @NewBalance = @CURRBAL + @TransactionAmount;
-- Insert statements for procedure here -- check account active if @AcctStatID != (SELECT AccountStatusID FROM Account WHERE AccountID = @AccountID) BEGIN Raiserror('Can not Deposit for Inactive Account', 12, 6); END BEGIN INSERT INTO [PIGGYBank].[dbo].[Transactions]   ([AccountID] ,[TransactionTypeID] ,[CustomerID] ,[TransactionDate] ,[TransactionAmount]   ,[NewBalance])   VALUES   (@AccountID ,@TransactionTypeID ,@CustomerID ,CURRENT_TIMESTAMP ,@TransactionAmount  ,@NewBalance);   UPDATE [PIGGYBank].[dbo].[Account] SET [CurrentBalance] = @NewBalance WHERE AccountID = @AccountID; END COMMIT TRAN END TRY
BEGIN CATCH   if @@TRANCOUNT > 0   ROLLBACK TRAN   DECLARE @ErrorMessage NVARCHAR(4000);   DECLARE @ErrorSeverity INT;   DECLARE @ErrorState INT;   --populate vars with error info   SELECT @ErrorMessage = ERROR_MESSAGE(),    @ErrorSeverity = ERROR_SEVERITY(),    @ErrorState = ERROR_STATE();   -- rethrow pass to front end or another proc   RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState); END CATCH
 
 

Mais conteúdo relacionado

Destaque

Greg Lewis SQL Portfolio
Greg Lewis SQL PortfolioGreg Lewis SQL Portfolio
Greg Lewis SQL Portfoliogregmlewis
 
Kevin Bengtson Portfolio
Kevin Bengtson PortfolioKevin Bengtson Portfolio
Kevin Bengtson PortfolioKbengt521
 
BI SQL Server2008R2 Portfolio
BI SQL Server2008R2 PortfolioBI SQL Server2008R2 Portfolio
BI SQL Server2008R2 Portfoliodlinder25
 
Relational database concept
Relational database conceptRelational database concept
Relational database conceptfikirabc
 
SQL Server 2008 Portfolio for Saumya Bhatnagar
SQL Server 2008 Portfolio for Saumya BhatnagarSQL Server 2008 Portfolio for Saumya Bhatnagar
SQL Server 2008 Portfolio for Saumya Bhatnagarsammykb
 
Pierre Xavier Portfolio
Pierre Xavier PortfolioPierre Xavier Portfolio
Pierre Xavier Portfoliopbxavier
 
Database Concept by Luke Lonergan
Database Concept by Luke LonerganDatabase Concept by Luke Lonergan
Database Concept by Luke LonerganLuke Lonergan
 
9 relational database concepts
9 relational database concepts9 relational database concepts
9 relational database conceptsKumar
 
Jim Killian\'s SQL Server 2008 Portfolio
Jim Killian\'s SQL Server 2008 PortfolioJim Killian\'s SQL Server 2008 Portfolio
Jim Killian\'s SQL Server 2008 PortfolioJim Killian
 
overview of database concept
overview of database conceptoverview of database concept
overview of database conceptgourav kottawar
 
Sql2005 xml
Sql2005 xmlSql2005 xml
Sql2005 xmlnkaluva
 
SQL Server 2008 Portfolio
SQL Server 2008 PortfolioSQL Server 2008 Portfolio
SQL Server 2008 Portfoliolilredlokita
 
Marino mercedesportfolio201212
Marino mercedesportfolio201212Marino mercedesportfolio201212
Marino mercedesportfolio201212Marino Mercedes
 

Destaque (20)

Greg Lewis SQL Portfolio
Greg Lewis SQL PortfolioGreg Lewis SQL Portfolio
Greg Lewis SQL Portfolio
 
Kallkritik kalmar
Kallkritik kalmarKallkritik kalmar
Kallkritik kalmar
 
News letter
News letterNews letter
News letter
 
SQL Portfolio
SQL PortfolioSQL Portfolio
SQL Portfolio
 
Kevin Bengtson Portfolio
Kevin Bengtson PortfolioKevin Bengtson Portfolio
Kevin Bengtson Portfolio
 
BI SQL Server2008R2 Portfolio
BI SQL Server2008R2 PortfolioBI SQL Server2008R2 Portfolio
BI SQL Server2008R2 Portfolio
 
Relational database concept
Relational database conceptRelational database concept
Relational database concept
 
SQL Server 2008 Portfolio for Saumya Bhatnagar
SQL Server 2008 Portfolio for Saumya BhatnagarSQL Server 2008 Portfolio for Saumya Bhatnagar
SQL Server 2008 Portfolio for Saumya Bhatnagar
 
Pierre Xavier Portfolio
Pierre Xavier PortfolioPierre Xavier Portfolio
Pierre Xavier Portfolio
 
Database Concept by Luke Lonergan
Database Concept by Luke LonerganDatabase Concept by Luke Lonergan
Database Concept by Luke Lonergan
 
9 relational database concepts
9 relational database concepts9 relational database concepts
9 relational database concepts
 
Research gadot
Research gadotResearch gadot
Research gadot
 
Jim Killian\'s SQL Server 2008 Portfolio
Jim Killian\'s SQL Server 2008 PortfolioJim Killian\'s SQL Server 2008 Portfolio
Jim Killian\'s SQL Server 2008 Portfolio
 
A concept of dbms
A concept of dbmsA concept of dbms
A concept of dbms
 
overview of database concept
overview of database conceptoverview of database concept
overview of database concept
 
Sql2005 xml
Sql2005 xmlSql2005 xml
Sql2005 xml
 
SQL Server 2008 Portfolio
SQL Server 2008 PortfolioSQL Server 2008 Portfolio
SQL Server 2008 Portfolio
 
Database Relationships
Database RelationshipsDatabase Relationships
Database Relationships
 
Marino mercedesportfolio201212
Marino mercedesportfolio201212Marino mercedesportfolio201212
Marino mercedesportfolio201212
 
week-18x
week-18xweek-18x
week-18x
 

Semelhante a Presentation Paul

Shangz R Brown Presentation
Shangz R Brown PresentationShangz R Brown Presentation
Shangz R Brown Presentationshangbaby
 
Denise Brown Sql Porfolio
Denise Brown Sql PorfolioDenise Brown Sql Porfolio
Denise Brown Sql Porfoliobibbab1
 
Porfolio of Setfocus work
Porfolio of Setfocus workPorfolio of Setfocus work
Porfolio of Setfocus workKevinPSF
 
Jazmine Kane Portfolio
Jazmine Kane PortfolioJazmine Kane Portfolio
Jazmine Kane PortfolioJazmine Kane
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummiesdreamforce2006
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummiesdreamforce2006
 
SetFocus SQL Portfolio
SetFocus SQL PortfolioSetFocus SQL Portfolio
SetFocus SQL Portfoliogeometro17
 
Expanding Your Sales Funnel with SAS
Expanding Your Sales Funnel with SASExpanding Your Sales Funnel with SAS
Expanding Your Sales Funnel with SASMichael Mina
 
Supersize me
Supersize meSupersize me
Supersize medominion
 
Banking management system
Banking management systemBanking management system
Banking management systemHome
 
Set Focus SQL Portfolio
Set Focus SQL PortfolioSet Focus SQL Portfolio
Set Focus SQL Portfoliobrentbybee
 
Accounting Learning Tutorial
Accounting Learning TutorialAccounting Learning Tutorial
Accounting Learning TutorialAshim Sikder
 
dokumen.tips_collaborate12-baugh-r12-federal-financials-subledger-accounting-...
dokumen.tips_collaborate12-baugh-r12-federal-financials-subledger-accounting-...dokumen.tips_collaborate12-baugh-r12-federal-financials-subledger-accounting-...
dokumen.tips_collaborate12-baugh-r12-federal-financials-subledger-accounting-...sarfrajahamad1
 
Performance Tuning for Visualforce and Apex
Performance Tuning for Visualforce and ApexPerformance Tuning for Visualforce and Apex
Performance Tuning for Visualforce and ApexSalesforce Developers
 
Bank management system
Bank management systemBank management system
Bank management systemMahmudul Hasan
 

Semelhante a Presentation Paul (20)

Marcus Matthews
Marcus MatthewsMarcus Matthews
Marcus Matthews
 
My Portfolio
My PortfolioMy Portfolio
My Portfolio
 
My Portfolio
My PortfolioMy Portfolio
My Portfolio
 
Shangz R Brown Presentation
Shangz R Brown PresentationShangz R Brown Presentation
Shangz R Brown Presentation
 
Denise Brown Sql Porfolio
Denise Brown Sql PorfolioDenise Brown Sql Porfolio
Denise Brown Sql Porfolio
 
Porfolio of Setfocus work
Porfolio of Setfocus workPorfolio of Setfocus work
Porfolio of Setfocus work
 
Jazmine Kane Portfolio
Jazmine Kane PortfolioJazmine Kane Portfolio
Jazmine Kane Portfolio
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummies
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummies
 
FI-Bank.ppt
FI-Bank.pptFI-Bank.ppt
FI-Bank.ppt
 
SetFocus SQL Portfolio
SetFocus SQL PortfolioSetFocus SQL Portfolio
SetFocus SQL Portfolio
 
Banking Database
Banking DatabaseBanking Database
Banking Database
 
Expanding Your Sales Funnel with SAS
Expanding Your Sales Funnel with SASExpanding Your Sales Funnel with SAS
Expanding Your Sales Funnel with SAS
 
Supersize me
Supersize meSupersize me
Supersize me
 
Banking management system
Banking management systemBanking management system
Banking management system
 
Set Focus SQL Portfolio
Set Focus SQL PortfolioSet Focus SQL Portfolio
Set Focus SQL Portfolio
 
Accounting Learning Tutorial
Accounting Learning TutorialAccounting Learning Tutorial
Accounting Learning Tutorial
 
dokumen.tips_collaborate12-baugh-r12-federal-financials-subledger-accounting-...
dokumen.tips_collaborate12-baugh-r12-federal-financials-subledger-accounting-...dokumen.tips_collaborate12-baugh-r12-federal-financials-subledger-accounting-...
dokumen.tips_collaborate12-baugh-r12-federal-financials-subledger-accounting-...
 
Performance Tuning for Visualforce and Apex
Performance Tuning for Visualforce and ApexPerformance Tuning for Visualforce and Apex
Performance Tuning for Visualforce and Apex
 
Bank management system
Bank management systemBank management system
Bank management system
 

Presentation Paul

  • 1.
  • 2. Table of Contents Introduction – 3 BlockFlix Movie Rental -4 BlockFlix SSIS – 6 BlockFlix SSRS - 10 Piggy Bank - 14 Shred XML – 16 View - 17 Triggers – 18 Stored Procedure -19
  • 3. Introduction This Presentation will illustrate key skills learned in the SQL Masters course such as SSIS, SSRS, SQLServer, T-SQL, Triggers and Views
  • 4.
  • 7. IMPORT XML FILE VIA SSIS AFTER CONTROL FLOW EXECUTION ADD MOVIE Demonstration Consisting of 3 linked data flows
  • 8. IMPORT XML FILE VIA SSIS AFTER MOVIE/TALENT EXECUTION ADD MOVIE Demonstration
  • 9. IMPORT XML FILE VIA SSIS AFTER MOVIE/TALENT EXECUTION ADD MOVIE Demonstration
  • 10. Most active customers in the past month
  • 11. Most rented movies in the past month
  • 12. Lost / damaged movies and their related transactions
  • 13. Customers and Membership Types
  • 14.
  • 16.
  • 17. Create View for Statements CREATE VIEW [dbo].[AccountStatement] WITH SCHEMABINDING AS SELECT dbo.Account.CurrentBalance, dbo.Account.AccountID, dbo.TransactionType.TransactionTypeName, dbo.AccountStatus.AccountStatus, dbo.AccountType.AccountTypeName, dbo.AccountType.InterestRate, dbo.Customer.CustomerID, dbo.Customer.CustomerFirstName, dbo.Customer.CustomerLastName, dbo.Customer.CustomerMiddleInitial, dbo.Customer.Street, dbo.Customer.City, dbo.Customer.State, dbo.Customer.ZipCode, dbo.Customer.HomePhone, dbo.Transactions.TransactionDate, dbo.Transactions.TransactionAmount,dbo.Transactions.NewBalance FROM dbo.Account INNER JOIN dbo.AccountStatus ON dbo.Account.AccountStatusID = dbo.AccountStatus.AccountStatusID INNER JOIN dbo.AccountType ON dbo.Account.AccountTypeID = dbo.AccountType.AccountTypeID INNER JOIN dbo.CustomerAccount ON dbo.Account.AccountID = dbo.CustomerAccount.AccountID INNER JOIN dbo.Customer ON dbo.CustomerAccount.CustomerID = dbo.Customer.CustomerID INNER JOIN dbo.Transactions ON dbo.Account.AccountID = dbo.Transactions.AccountID AND dbo.Customer.CustomerID = dbo.Transactions.CustomerID INNER JOIN dbo.TransactionType ON dbo.Transactions.TransactionTypeID = dbo.TransactionType.TransactionTypeID
  • 18. Triggers to protect Data CREATE TRIGGER PreventChange ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS PRINT 'You must disable Trigger "PreventChange" to drop or alter tables!' ROLLBACK CREATE TRIGGER DelTrans ON [dbo].[Transactions] INSTEAD OF DELETE AS BEGIN Raiserror('Deletes of Transactions not allowed', 13,1); ROLLBACK TRAN; END Create Trigger DelAccount on [dbo].[Account] INSTEAD OF DELETE AS BEGIN Raiserror('Deletes of Accounts not allowed', 13,1); ROLLBACK TRAN; END CREATE TRIGGER UpdTran ON [dbo].[Transactions] INSTEAD OF UPDATE AS BEGIN Raiserror('Updates of Transactions not allowed', 14,1); ROLLBACK TRAN; END
  • 19. Stored Procedures with T-SQL CREATE PROCEDURE [dbo].[Deposit] -- Add the parameters for the stored procedure here @CustomerID int = NULL, @AccountID int = NULL, @TransactionAmount money = NULL AS BEGIN TRY BEGIN TRAN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Check for null values if @AccountID is null BEGIN raiserror('Account ID must be provided', 12, 1); END if @CustomerID is null BEGIN raiserror('Customer ID must be provided', 12, 2); END If @TransactionAmount Is Null BEGIN raiserror('Transaction Amount must be provided', 12, 3); END
  • 20. --check valid Custid and accountid if @AccountID != (SELECT AccountID FROM Account WHERE AccountID = @AccountID) BEGIN raiserror('Account ID is invalid', 12, 4); END if @CustomerID != (SELECT CustomerID FROM Customer WHERE CustomerID = @CustomerID) BEGIN raiserror('Customer ID is invalid', 12, 5); END --Fetch current balance to calculate new balance DECLARE @CURRBAL money = (SELECT CurrentBalance FROM Account WHERE AccountID = @AccountID), @NewBalance money = NULL, @TransactionTypeID tinyint = 2, @AcctStatID tinyint = 1 SET @NewBalance = @CURRBAL + @TransactionAmount;
  • 21. -- Insert statements for procedure here -- check account active if @AcctStatID != (SELECT AccountStatusID FROM Account WHERE AccountID = @AccountID) BEGIN Raiserror('Can not Deposit for Inactive Account', 12, 6); END BEGIN INSERT INTO [PIGGYBank].[dbo].[Transactions] ([AccountID] ,[TransactionTypeID] ,[CustomerID] ,[TransactionDate] ,[TransactionAmount] ,[NewBalance]) VALUES (@AccountID ,@TransactionTypeID ,@CustomerID ,CURRENT_TIMESTAMP ,@TransactionAmount ,@NewBalance); UPDATE [PIGGYBank].[dbo].[Account] SET [CurrentBalance] = @NewBalance WHERE AccountID = @AccountID; END COMMIT TRAN END TRY
  • 22. BEGIN CATCH if @@TRANCOUNT > 0 ROLLBACK TRAN DECLARE @ErrorMessage NVARCHAR(4000); DECLARE @ErrorSeverity INT; DECLARE @ErrorState INT; --populate vars with error info SELECT @ErrorMessage = ERROR_MESSAGE(), @ErrorSeverity = ERROR_SEVERITY(), @ErrorState = ERROR_STATE(); -- rethrow pass to front end or another proc RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState); END CATCH
  • 23.  
  • 24.