SlideShare uma empresa Scribd logo
1 de 16
EasyData
Developer Friendly Object-Relational
Mapping Tool for Microsoft .NET

Hasitha Guruge
2008/MCS/021
Introduction
What is “EasyData”?



  • “EasyData” is an open source, developer
    friendly Object-relational mapping tool for
    Microsoft .NET which has been developed
    based on C#.NET language. It enables
    developers to use it with databases such
    as MS SQL, MySQL and Oracle.


                                         Your Logo
Objectives
    Primary Objectives
✓    1   Develop an object-relational mapping tool with basic functionalities


✓    2   Support for Microsoft .NET Web/Windows Applications


✓    3   Ability to use inheritance and polymorphism and create hierarchies between entities


✓    4   Handle relationships such as 1-1, 1-n, n-1 and n-n


✓    5   Support for transaction based data operations


     6   Support for Aggregations and SQL Grouping



    Secondary Objectives
✓    1   Support for multiple Databases (MS SQL, MySQL, Oracle)


     2   Has its own Query Language (OQL)


✓    3   Support for Data Binding of components in .NET


✓    4   Easy configuration and relatively low learning curve

                                                                                               Your Logo
DAL & ORM
Core concepts behind the project



  • In Applications Data Access Layer is the
    layer which deals with data.
  • Object-Relational Mapping is one way to
    automate this DAL by reducing redundant
    work and higher risk of errors.
  • ORM Tools create a bidirectional link
    between relational database and objects in
    an application.
Related Projects
                 Major tools based for the project


                 - Open Source
 NHibernate      - Complex Configuration
                 - Huge Learning Curve
                 - Mapped via XMLs
                 - Multiple Database Support



                 - Open Source
   Fluent        - Extension to NHibernate
 NHibernate      - Mapped without XMLs / Separate Mapping Layer
                 - Complex Configuration
                 - Huge Learning Curve



                 - Open Source
                 - Use Active Record Design Pattern
Castle Project
                 - Based on NHibernate
ActiveRecord     - Mapped without XMLs via same Entity Object
                 - Since it is based on NHibernate, same disadvantages exist here as well




                                                                                            Your Logo
Related Projects
Microsoft or Private Projects



 LINQ to SQL
                                             LINQ to SQL and ADO.NET Entity Framework
       Only with .NET Framework 3.5 or       have their own limitations such as lack of
  1    higher. DBML file provides the
       mapping functionality.                support for MySQL and no support for the
                                             lower versions such as Framework 1.1, 2.0
                                             likewise.
 ADO.NET Entity Framework

                                             nHydrate was a private project till Sep, 2009
       Only with .NET Framework 3.5 or
  2    higher. Uses Active Record pattern.
                                             and built on .NET Framework 3.5 to work
                                             exclusively with MS SQL Server.

 nHydrate                                    Studied related work and extracted the
                                             important features to incorporate with
                                             EasyData.
       Uses Active Record Pattern in core
  3    of DAL. Since it was a private
       project it is not so popular.



                                                                                      Your Logo
ER Diagram to perform testing
EasyData Design
Component Diagram – with extended features
Implementation
Implementation Process




                                             With
                                             Extended
                            R & D Existing   Features
                            Tools

               With Basic
               Features

                                                        Your Logo
How It Looks Like
Sample Insert Method with Testing
[Test]
public void SimpleCreateTest()
{
   using (EasySession easySession = new EasySession())
   {
     ///[Test Create] - without relationship
     ProductCategory productCategory = new ProductCategory();

        int resultCount = productCategory.Count(easySession);
        Assert.AreEqual(4, resultCount);

        productCategory.Name = "Test Category";
        productCategory.Rowguid = Guid.NewGuid();
        productCategory.ModifiedDate = DateTime.Now;
        productCategory.Save(easySession);

        resultCount = productCategory.Count(easySession);
        Assert.AreEqual(5, resultCount);
    }
}




    This is a sample code to tests the Save() functionality. The “ProductCategory” is a sample table that has many Sub
    Categories under that. The “easySession” responsible for the database connection and the transaction of the record
    insert. All executions within one session is handled under the same transaction. Simply create an instance of the
    object and assign values to the instance and simply call Save() function.

                                                                                                            Your Logo
EasyData Hierarchy
How the components interact with each other?

                   Code Behind Files                  public class ProductCategory
                      Code Behind Files
                  (aspx.cs or aspx.vb)                { public class ProductCategory
                         Code Behind Files
                     (aspx.cs or aspx.vb)             } { public class ProductCategory                                          Configuration File
                        (aspx.cs or aspx.vb)            } {
                                                           }


                           public abstract class EasyDataBase<T>                           public class EasySession : IDisposable
                           {                                                               {
                           ………….                                                           ………….
                           …………….                                                          …………….
                           }                                                               }
 Object Query Classes




                           public class EasySave<T>         public class EasyUpdate<T>     public class EasyDelete<T>       public class EasySelect<T>
                           {                                {                              {                                {
                           ………….                            ………….                          ………….                            ………….
                           …………….                           …………….                         …………….                           …………….
                           }                                }                              }                                }


                                                  DB Specific Library
                                                      - MS SQL
                                                                                    Custom Attributes
                                                      - MySQL                                                           Database
                                                       - Oracle
Scope of the Project
Initial Scope

      Conduct a literature survey on existing and popular ORM tools which are used in .NET Framework and understand
  1   their architectures , basic operations and features


      Implement a mapping tool with basic features such as CRUD operations with the support of relationships among
  2   tables/entity objects


      Enhance the tool with new effective and flexible features as a separate R & D task
  3


      Test the tool using a sample common database or generated data from another mapping tool
  4


      Release the functional tool as a beta version to use with the developments of target users’
  5


      Conduct a survey to collect and identify developer needs and feedbacks
  6




                                                                                                        Your Logo
Scope of the Project
Deviations from the Initial

      Unable to go through the all features and functionalities of all popular tools due to their complexity and time
  1   constraints


      Unable to build in-built functionalities to support all aggregation and grouping functions due to the time constraints
  2


      R & D Phase was dragged more than expected, due to the complexity and huge learning curves of existing tools
  3


      Unable to deliver the beta version on time and let it be tested by the target users, currently it is available for the
  4   target users for testing


      The final survey is not conducted, since the developments were delayed and release of the beta version without
  5
      enough time to perform the testing by target users


      Unable to complete the OQL (Object Query Language) and its functionalities and is currently available as a basic
  6
      version towards that




                                                                                                                  Your Logo
Conclusion
The final result




                   The beta version of the implemented tool is
                   available on
                   http://www.future-needs.net/easydata

                   Since it is an open source tool the windows
                   binaries as well as the source is available online.

                   A survey to collect developers’ expectations and
                   experience with another popular tools is provided
                   before download of the tool.




                                                                Your Logo
Future Enhancements
Steps towards a stable & rich tool
        Implement object query language (OQL) as it is in an integrated query language (LINQ)
 1


        Implement more in-built functionalities to provide more flexibility in data selection
 2


        Build a standalone tool or integrated tools to generate entity class files with mapping related details by reading the
 3
        database tables and relationships


        Optimize the auto generated queries and the process of building queries to improve the performance of the tools
 4


        Implement a parameterized way to call functions which contains strongly typed variables for the different database
 5
        types instead of implementing the same method repetitively by checking the database type


        Implement a good library for different query languages which contains keywords, reserved words and special
 6
        scenarios for those languages to handle scenarios such as following SELECT TOP example.


 SELECT * FROM parts WHERE name = 'gearbox' LIMIT 1; -- MySQL or PostgreSQL

 SELECT * FROM parts WHERE name = 'gearbox' AND rownum < 2; -- Oracle

 SELECT TOP 1 * FROM parts WHERE name = 'gearbox'; -- Microsoft SQL Server



                                                                                                                  Your Logo
THANK YOU!


             Your Logo

Mais conteúdo relacionado

Mais procurados

SQLPASS AD501-M XQuery MRys
SQLPASS AD501-M XQuery MRysSQLPASS AD501-M XQuery MRys
SQLPASS AD501-M XQuery MRysMichael Rys
 
Entity Framework Overview
Entity Framework OverviewEntity Framework Overview
Entity Framework OverviewEyal Vardi
 
Introduction to Oracle Database
Introduction to Oracle DatabaseIntroduction to Oracle Database
Introduction to Oracle Databasepuja_dhar
 
Hibernate tutorial for beginners
Hibernate tutorial for beginnersHibernate tutorial for beginners
Hibernate tutorial for beginnersRahul Jain
 
Jdbc Dao it-slideshares.blogspot.com
Jdbc Dao it-slideshares.blogspot.comJdbc Dao it-slideshares.blogspot.com
Jdbc Dao it-slideshares.blogspot.comphanleson
 
Entity Framework - Entity Data Model (edm)
Entity Framework - Entity Data Model (edm)Entity Framework - Entity Data Model (edm)
Entity Framework - Entity Data Model (edm)Eyal Vardi
 
Ado.net session07
Ado.net session07Ado.net session07
Ado.net session07Niit Care
 
Sql server difference faqs- 6
Sql server difference faqs- 6Sql server difference faqs- 6
Sql server difference faqs- 6Umar Ali
 
Ado.net session02
Ado.net session02Ado.net session02
Ado.net session02Niit Care
 
Trivadis TechEvent 2017 Oracle to My SQL Migration - Challenges by Robert Bia...
Trivadis TechEvent 2017 Oracle to My SQL Migration - Challenges by Robert Bia...Trivadis TechEvent 2017 Oracle to My SQL Migration - Challenges by Robert Bia...
Trivadis TechEvent 2017 Oracle to My SQL Migration - Challenges by Robert Bia...Trivadis
 
LDAP Integration
LDAP IntegrationLDAP Integration
LDAP IntegrationDell World
 
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2Marco Gralike
 
Dealing with SQL Security from ADO.NET
Dealing with SQL Security from ADO.NETDealing with SQL Security from ADO.NET
Dealing with SQL Security from ADO.NETFernando G. Guerrero
 

Mais procurados (20)

SQLPASS AD501-M XQuery MRys
SQLPASS AD501-M XQuery MRysSQLPASS AD501-M XQuery MRys
SQLPASS AD501-M XQuery MRys
 
Oracle database introduction
Oracle database introductionOracle database introduction
Oracle database introduction
 
orical
oricalorical
orical
 
Dacj 4 1-b
Dacj 4 1-bDacj 4 1-b
Dacj 4 1-b
 
Ado.net
Ado.netAdo.net
Ado.net
 
Entity Framework Overview
Entity Framework OverviewEntity Framework Overview
Entity Framework Overview
 
Introduction to Oracle Database
Introduction to Oracle DatabaseIntroduction to Oracle Database
Introduction to Oracle Database
 
Hibernate tutorial for beginners
Hibernate tutorial for beginnersHibernate tutorial for beginners
Hibernate tutorial for beginners
 
Jdbc Dao it-slideshares.blogspot.com
Jdbc Dao it-slideshares.blogspot.comJdbc Dao it-slideshares.blogspot.com
Jdbc Dao it-slideshares.blogspot.com
 
Entity Framework - Entity Data Model (edm)
Entity Framework - Entity Data Model (edm)Entity Framework - Entity Data Model (edm)
Entity Framework - Entity Data Model (edm)
 
Ado.net session07
Ado.net session07Ado.net session07
Ado.net session07
 
Sql server difference faqs- 6
Sql server difference faqs- 6Sql server difference faqs- 6
Sql server difference faqs- 6
 
Ado.net session02
Ado.net session02Ado.net session02
Ado.net session02
 
Ado.net
Ado.netAdo.net
Ado.net
 
Trivadis TechEvent 2017 Oracle to My SQL Migration - Challenges by Robert Bia...
Trivadis TechEvent 2017 Oracle to My SQL Migration - Challenges by Robert Bia...Trivadis TechEvent 2017 Oracle to My SQL Migration - Challenges by Robert Bia...
Trivadis TechEvent 2017 Oracle to My SQL Migration - Challenges by Robert Bia...
 
LDAP Integration
LDAP IntegrationLDAP Integration
LDAP Integration
 
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
 
Dealing with SQL Security from ADO.NET
Dealing with SQL Security from ADO.NETDealing with SQL Security from ADO.NET
Dealing with SQL Security from ADO.NET
 
SQL Intro
SQL IntroSQL Intro
SQL Intro
 
NoSql databases
NoSql databasesNoSql databases
NoSql databases
 

Semelhante a Easy Data Object Relational Mapping Tool

Squeak DBX
Squeak DBXSqueak DBX
Squeak DBXESUG
 
Microsoft Entity Framework
Microsoft Entity FrameworkMicrosoft Entity Framework
Microsoft Entity FrameworkMahmoud Tolba
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repositorynobby
 
J2EE PPT --CINTHIYA.M Krishnammal college for women
J2EE PPT --CINTHIYA.M Krishnammal college for womenJ2EE PPT --CINTHIYA.M Krishnammal college for women
J2EE PPT --CINTHIYA.M Krishnammal college for womenlissa cidhi
 
My cool new Slideshow!
My cool new Slideshow!My cool new Slideshow!
My cool new Slideshow!rommel_gagasa
 
Azure Synapse Analytics Overview (r2)
Azure Synapse Analytics Overview (r2)Azure Synapse Analytics Overview (r2)
Azure Synapse Analytics Overview (r2)James Serra
 
Entity Framework V1 and V2
Entity Framework V1 and V2Entity Framework V1 and V2
Entity Framework V1 and V2ukdpe
 
Entity Framework v1 and v2
Entity Framework v1 and v2Entity Framework v1 and v2
Entity Framework v1 and v2Eric Nelson
 
Polyglot Database - Linuxcon North America 2016
Polyglot Database - Linuxcon North America 2016Polyglot Database - Linuxcon North America 2016
Polyglot Database - Linuxcon North America 2016Dave Stokes
 
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)lennartkats
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arpGary Pedretti
 
Introduction to Apache Spark
Introduction to Apache SparkIntroduction to Apache Spark
Introduction to Apache SparkVincent Poncet
 
Obevo Javasig.pptx
Obevo Javasig.pptxObevo Javasig.pptx
Obevo Javasig.pptxLadduAnanu
 
Linq to xml
Linq to xmlLinq to xml
Linq to xmlMickey
 
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL SystemsStrudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systemstatemura
 
The Power of Relationships in Your Big Data
The Power of Relationships in Your Big DataThe Power of Relationships in Your Big Data
The Power of Relationships in Your Big DataPaulo Fagundes
 

Semelhante a Easy Data Object Relational Mapping Tool (20)

Squeak DBX
Squeak DBXSqueak DBX
Squeak DBX
 
Microsoft Entity Framework
Microsoft Entity FrameworkMicrosoft Entity Framework
Microsoft Entity Framework
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repository
 
Ow
OwOw
Ow
 
J2EE PPT --CINTHIYA.M Krishnammal college for women
J2EE PPT --CINTHIYA.M Krishnammal college for womenJ2EE PPT --CINTHIYA.M Krishnammal college for women
J2EE PPT --CINTHIYA.M Krishnammal college for women
 
My cool new Slideshow!
My cool new Slideshow!My cool new Slideshow!
My cool new Slideshow!
 
Azure Synapse Analytics Overview (r2)
Azure Synapse Analytics Overview (r2)Azure Synapse Analytics Overview (r2)
Azure Synapse Analytics Overview (r2)
 
Entity Framework V1 and V2
Entity Framework V1 and V2Entity Framework V1 and V2
Entity Framework V1 and V2
 
Entity Framework v1 and v2
Entity Framework v1 and v2Entity Framework v1 and v2
Entity Framework v1 and v2
 
Ra framework 0.1
Ra framework 0.1Ra framework 0.1
Ra framework 0.1
 
Polyglot Database - Linuxcon North America 2016
Polyglot Database - Linuxcon North America 2016Polyglot Database - Linuxcon North America 2016
Polyglot Database - Linuxcon North America 2016
 
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
 
Introduction to Apache Spark
Introduction to Apache SparkIntroduction to Apache Spark
Introduction to Apache Spark
 
Obevo Javasig.pptx
Obevo Javasig.pptxObevo Javasig.pptx
Obevo Javasig.pptx
 
Linq to xml
Linq to xmlLinq to xml
Linq to xml
 
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL SystemsStrudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
 
Day2
Day2Day2
Day2
 
Project seminar
Project seminarProject seminar
Project seminar
 
The Power of Relationships in Your Big Data
The Power of Relationships in Your Big DataThe Power of Relationships in Your Big Data
The Power of Relationships in Your Big Data
 

Easy Data Object Relational Mapping Tool

  • 1. EasyData Developer Friendly Object-Relational Mapping Tool for Microsoft .NET Hasitha Guruge 2008/MCS/021
  • 2. Introduction What is “EasyData”? • “EasyData” is an open source, developer friendly Object-relational mapping tool for Microsoft .NET which has been developed based on C#.NET language. It enables developers to use it with databases such as MS SQL, MySQL and Oracle. Your Logo
  • 3. Objectives Primary Objectives ✓ 1 Develop an object-relational mapping tool with basic functionalities ✓ 2 Support for Microsoft .NET Web/Windows Applications ✓ 3 Ability to use inheritance and polymorphism and create hierarchies between entities ✓ 4 Handle relationships such as 1-1, 1-n, n-1 and n-n ✓ 5 Support for transaction based data operations 6 Support for Aggregations and SQL Grouping Secondary Objectives ✓ 1 Support for multiple Databases (MS SQL, MySQL, Oracle) 2 Has its own Query Language (OQL) ✓ 3 Support for Data Binding of components in .NET ✓ 4 Easy configuration and relatively low learning curve Your Logo
  • 4. DAL & ORM Core concepts behind the project • In Applications Data Access Layer is the layer which deals with data. • Object-Relational Mapping is one way to automate this DAL by reducing redundant work and higher risk of errors. • ORM Tools create a bidirectional link between relational database and objects in an application.
  • 5. Related Projects Major tools based for the project - Open Source NHibernate - Complex Configuration - Huge Learning Curve - Mapped via XMLs - Multiple Database Support - Open Source Fluent - Extension to NHibernate NHibernate - Mapped without XMLs / Separate Mapping Layer - Complex Configuration - Huge Learning Curve - Open Source - Use Active Record Design Pattern Castle Project - Based on NHibernate ActiveRecord - Mapped without XMLs via same Entity Object - Since it is based on NHibernate, same disadvantages exist here as well Your Logo
  • 6. Related Projects Microsoft or Private Projects LINQ to SQL LINQ to SQL and ADO.NET Entity Framework Only with .NET Framework 3.5 or have their own limitations such as lack of 1 higher. DBML file provides the mapping functionality. support for MySQL and no support for the lower versions such as Framework 1.1, 2.0 likewise. ADO.NET Entity Framework nHydrate was a private project till Sep, 2009 Only with .NET Framework 3.5 or 2 higher. Uses Active Record pattern. and built on .NET Framework 3.5 to work exclusively with MS SQL Server. nHydrate Studied related work and extracted the important features to incorporate with EasyData. Uses Active Record Pattern in core 3 of DAL. Since it was a private project it is not so popular. Your Logo
  • 7. ER Diagram to perform testing
  • 8. EasyData Design Component Diagram – with extended features
  • 9. Implementation Implementation Process With Extended R & D Existing Features Tools With Basic Features Your Logo
  • 10. How It Looks Like Sample Insert Method with Testing [Test] public void SimpleCreateTest() { using (EasySession easySession = new EasySession()) { ///[Test Create] - without relationship ProductCategory productCategory = new ProductCategory(); int resultCount = productCategory.Count(easySession); Assert.AreEqual(4, resultCount); productCategory.Name = "Test Category"; productCategory.Rowguid = Guid.NewGuid(); productCategory.ModifiedDate = DateTime.Now; productCategory.Save(easySession); resultCount = productCategory.Count(easySession); Assert.AreEqual(5, resultCount); } } This is a sample code to tests the Save() functionality. The “ProductCategory” is a sample table that has many Sub Categories under that. The “easySession” responsible for the database connection and the transaction of the record insert. All executions within one session is handled under the same transaction. Simply create an instance of the object and assign values to the instance and simply call Save() function. Your Logo
  • 11. EasyData Hierarchy How the components interact with each other? Code Behind Files public class ProductCategory Code Behind Files (aspx.cs or aspx.vb) { public class ProductCategory Code Behind Files (aspx.cs or aspx.vb) } { public class ProductCategory Configuration File (aspx.cs or aspx.vb) } { } public abstract class EasyDataBase<T> public class EasySession : IDisposable { { …………. …………. ……………. ……………. } } Object Query Classes public class EasySave<T> public class EasyUpdate<T> public class EasyDelete<T> public class EasySelect<T> { { { { …………. …………. …………. …………. ……………. ……………. ……………. ……………. } } } } DB Specific Library - MS SQL Custom Attributes - MySQL Database - Oracle
  • 12. Scope of the Project Initial Scope Conduct a literature survey on existing and popular ORM tools which are used in .NET Framework and understand 1 their architectures , basic operations and features Implement a mapping tool with basic features such as CRUD operations with the support of relationships among 2 tables/entity objects Enhance the tool with new effective and flexible features as a separate R & D task 3 Test the tool using a sample common database or generated data from another mapping tool 4 Release the functional tool as a beta version to use with the developments of target users’ 5 Conduct a survey to collect and identify developer needs and feedbacks 6 Your Logo
  • 13. Scope of the Project Deviations from the Initial Unable to go through the all features and functionalities of all popular tools due to their complexity and time 1 constraints Unable to build in-built functionalities to support all aggregation and grouping functions due to the time constraints 2 R & D Phase was dragged more than expected, due to the complexity and huge learning curves of existing tools 3 Unable to deliver the beta version on time and let it be tested by the target users, currently it is available for the 4 target users for testing The final survey is not conducted, since the developments were delayed and release of the beta version without 5 enough time to perform the testing by target users Unable to complete the OQL (Object Query Language) and its functionalities and is currently available as a basic 6 version towards that Your Logo
  • 14. Conclusion The final result The beta version of the implemented tool is available on http://www.future-needs.net/easydata Since it is an open source tool the windows binaries as well as the source is available online. A survey to collect developers’ expectations and experience with another popular tools is provided before download of the tool. Your Logo
  • 15. Future Enhancements Steps towards a stable & rich tool Implement object query language (OQL) as it is in an integrated query language (LINQ) 1 Implement more in-built functionalities to provide more flexibility in data selection 2 Build a standalone tool or integrated tools to generate entity class files with mapping related details by reading the 3 database tables and relationships Optimize the auto generated queries and the process of building queries to improve the performance of the tools 4 Implement a parameterized way to call functions which contains strongly typed variables for the different database 5 types instead of implementing the same method repetitively by checking the database type Implement a good library for different query languages which contains keywords, reserved words and special 6 scenarios for those languages to handle scenarios such as following SELECT TOP example. SELECT * FROM parts WHERE name = 'gearbox' LIMIT 1; -- MySQL or PostgreSQL SELECT * FROM parts WHERE name = 'gearbox' AND rownum < 2; -- Oracle SELECT TOP 1 * FROM parts WHERE name = 'gearbox'; -- Microsoft SQL Server Your Logo
  • 16. THANK YOU! Your Logo