Category: Basic

  • Comments

    A comment is a piece of text that is used in programming languages to provide additional information. These comments are ignored by the compiler and do not affect the program’s functionality. They are not visible in the output after the execution of code. Their purpose is to make the source code easier for human to understand more clearly.

    SQL Comments

    In SQL, comments can be used to explain a particular section of a query; or to skip the execution of statement. So, whenever a line of code is marked as a comment in a program, it is not executed.

    There are two types of comments used in MySQL database, they are as follows −

    • Single-line comments
    • Multi-line comments

    Single Line Comments

    The SQL single line comments starts with two consecutive hyphens (i.e. –) and extends to the end of the line. The text after the hyphens will not be executed.

    Syntax

    Following is the syntax of SQL single line comment −

    -- This is a single-line comment

    Example

    In the following query, we are using a single line comment to write a text −

    -- Will fetch all the table recordsSELECT*fromtable;

    Example

    Here, we have a SELECT statement that retrieves data from a table named CUSTOMERS. Though we have an ORDER BY clause in this statement, since we have commented that part, this query just retrieves the records in the CUSTOMERS table without sorting the result −

    SELECT*FROM CUSTOMERS -- ORDER BY NAME ASC;

    Example

    Now, we are using the single line comment to ignore the last statement −

    SELECT*FROM CUSTOMERS;SELECT*FROM EMPLOYEES;-- SELECT * FROM ORDERS WHERE ID = 6;

    Multi-Line Comments

    The SQL multi line comments are used to comment out multiple lines or a block of SQL code. It starts with /* and ends with */. Entire text between these delimiters (/*…*/) will be ignored and considered as a comment.

    Syntax

    Following is the syntax of SQL multi line comments −

    /* This is a
       multi-line
       comment */

    Example

    The following example uses multi-line comment as an explanation of the query −

    /*following query 
    will fetchall the 
    table records./*SELECT*from CUSTOMERS;

    Example

    Here, we are using the multi-line comments (/*….*/) to ignore a part of the query, making it as a comment −

    SELECT ID /*AGE, SALARY*/FROM CUSTOMERS WHERE SALARY =1500.00;

    Example

    In the following query, we are ignoring multiple statements using a multi-line comment −

    /*SELECT * FROM CUSTOMERS;
    SELECT * FROM EMPLOYEE;*/SELECT*FROM ORDERS WHERE ID =6;

  • Expressions

    What is SQL Expression?

    An SQL expression is a combination of one or more values, operators and SQL functions that are all evaluated to a value. These SQL EXPRESSION(s) are like formulae and they are written in query language. You can also use them to query the database for a specific set of data.

    Expressions are used in WHERE clause of an SQL query. As you might have already known, a WHERE clause specifies a condition that needs to be satisfied for the purpose of filtering records from a database table. This condition is comprised of either single or multiple expressions. These expressions are further classified into three types −

    • Boolean Expressions
    • Numeric Expressions
    • Date and time Expressions

    Let us discuss each of these expressions in detail further in this chapter.

    Syntax

    Consider the basic syntax of the SELECT statement containing some expressions as follows −

    SELECT column1, column2, columnN
    FROM table_name
    WHERE[CONDITION|EXPRESSION];

    SQL Boolean Expressions

    SQL Boolean Expressions are SQL expressions that return only Boolean Datatype as a result. These expressions can be of two types −

    • Boolean Expressions that check for equality of two values using SQL comparison operators. Here, equality of these values is a condition.
    • Boolean Expressions can also contain one value paired with an SQL logical operator. In this case, the logic specified acts like a condition.

    They return either TRUE, FALSE or UNKNOWN as the result. If the condition is met, these expressions return TRUE; and FALSE otherwise. UNKNOWN is returned when either of the operands in the expression is a NULL value.

    Syntax

    Following is the syntax of Boolean Expression −

    SELECT column1, column2, columnN 
    FROM table_name 
    WHEREBOOLEAN EXPRESSION;

    Example

    Consider the CUSTOMERS table having the following records −

    IDNAMEAGEADDRESSSALARY
    1Ramesh32Ahmedabad2000.00
    2Khilan25Delhi1500.00
    3kaushik23Kota2000.00
    4Chaitali25Mumbai6500.00
    5Hardik27Bhopal8500.00
    6Komal22Hyderabad4500.00
    7Muffy24Indore10000.00

    The following query is a simple example showing the usage of an SQL Boolean Expression −

    SELECT*FROM CUSTOMERS WHERE SALARY =10000;

    Output

    The output will be displayed as −

    IDNAMEAGEADDRESSSALARY
    7Muffy24Indore10000.00

    SQL Numeric Expressions

    SQL Numeric expressions are comprised of two operands and an SQL Arithmetic Operator. These expressions are used to perform any mathematical operation in any query. Hence, the operands must always be numerals and the return value will always be a number as well.

    Syntax

    Following is the syntax −

    SELECT numerical_expression as OPERATION_NAME
    FROM table_name
    WHERE NUMERICAL EXPRESSION ;

    Here, the numerical_expression is used for a mathematical expression or any formula.

    Example

    Following is a simple example showing the usage of SQL Numeric Expressions −

    SELECT15+6;

    Output

    The output table is retrieved as −

    21
    

    Example

    There are several built-in functions like avg(), sum(), count(), etc., to perform what is known as the aggregate data calculations against a table or a specific table column.

    SELECTCOUNT(*)FROM CUSTOMERS;

    Output

    The output is displayed as follows −

    7
    

    SQL Date Expressions

    SQL Date Expressions are used to compare date related values with current system date and time values. For instance, in a manufacturing company, items manufactured per year can be segregated by using date expressions in a WHERE clause. Counting from the first day of an year to the last day, the count of each item will be retrieved; once the required information is gathered, the company can use this information for their own purposes.

    Syntax

    Following is the syntax −

    SELECT column_name(s)FROM table_name
    WHEREDATE EXPRESSION ;

    Example

    In this example we are trying to simply retrieve the current timestamp of the system using CURRENT_TIMESTAMP.

    SELECTCURRENT_TIMESTAMP;

    Output

    The output table is displayed as −

    Current_Timestamp
    2009-11-12 06:40:23

    Example

    Consider the following Customer Order records in an ORDERS table:

    ORDER_IDCUSTOMER_IDDATEORDER_AMOUNTITEM_COUNT
    10232009-10-08 00:00:0030004
    10032009-10-08 00:00:0015002
    10122009-11-20 00:00:0015607
    10342008-05-20 00:00:0020603

    Now let’s retrieve the records before 1st June, 2008:

    SELECT*FROM ORDERS WHEREDATE<'2008/06/01';

    Output

    The output table is displayed as −

    ORDER_IDCUSTOMER_IDDATEORDER_AMOUNTITEM_COUNT
    10342008-05-20 00:00:0020603

  •  Operators

    What is SQL Operator?

    An SQL operator is a reserved word or a character used primarily in an SQL statement’s WHERE clause to perform operation(s), such as comparisons and arithmetic operations. These Operators are used to specify conditions in an SQL statement and to serve as conjunctions for multiple conditions in a statement.

    An SQL operator can be either a unary or binary operator. A unary operator (example unary + or unary – ) uses only one operand to perform the unary operation, whereas the binary operator (example + or – etc) uses two operands to perform the binary operation.

    Types of Operator in SQL

    SQL supports following types of operators:

    • Arithmetic operators
    • Comparison operators
    • Logical operators
    • Operators used to negate conditions

    SQL Arithmetic Operators

    SQL Arithmetic Operators are used to perform mathematical operations on the numerical values. SQL provides following operators to perform mathematical operations.

    Here is a list of all the arithmetic operators available in SQL.

    OperatorDescriptionExample
    +Addition10 + 20 = 30
    Subtraction20 – 30 = -10
    *Multiplication10 * 20 = 200
    /Division20 / 10 = 2
    %Modulus5 % 2 = 1

    SQL Comparison Operators

    SQL Comparison Operators test whether two given expressions are the same or not. These operators are used in SQL conditional statements while comparing one expression with another and they return a Boolean value which can be either TRUE or FALSE. The result of an SQL comparison operation can be UNKNOWN when one or another operand has it’s value as NULL.

    Here is a list of all the comparison operators available in SQL.

    OperatorDescriptionExample
    =Equal to5 = 5 returns TRUE
    !=Not equal5 != 6 returns TRUE
    <>Not equal5 <> 4 returns TRUE
    >Greater than4 > 5 returns FALSE
    <Less than4 < 5 returns TRUE
    >=Greater than or equal to4 >= 5 returns FALSE
    <=Less than or equal to4 <= 5 returns TRUE
    !<Not less than4 !< 5 returns FALSE
    !>Not greater than4 !> 5 returns TRUE

    SQL Logical Operators

    SQL Logical Operators are very similar to comparison operators and they test for the truth of some given condition. These operators return a Boolean value which can be either a TRUE or FALSE. The result of an SQL logical operation can be UNKNOWN when one or another operand has it’s value as NULL.

    Here is a list of all the logical operators available in SQL.

    OperatorDescriptionExample
    ALLTRUE if all of a set of comparisons are TRUE.Example
    ANDTRUE if all the conditions separated by AND are TRUE.Example
    ANYTRUE if any one of a set of comparisons are TRUE.Example
    BETWEENTRUE if the operand lies within the range of comparisons.Example
    EXISTSTRUE if the subquery returns one or more recordsExample
    INTRUE if the operand is equal to one of a list of expressions.Example
    LIKETRUE if the operand matches a pattern specially with wildcard.Example
    NOTReverses the value of any other Boolean operator.Example
    ORTRUE if any of the conditions separated by OR is TRUEExample
    IS NULLTRUE if the expression value is NULL.Example
    SOMETRUE if some of a set of comparisons are TRUE.Example
    UNIQUEThe UNIQUE operator searches every row of a specified table for uniqueness (no duplicates).Example

    SQL Operator Precedence

    The operator precedence in SQL is the sequence in which the SQL evaluates the different operators in a given expression. The operators with higher precedence get evaluated first.

    Following table lists all SQL operators as per their precedence. The operators with the highest precedence are at the top and the operators with the lowest precedence are at the bottom.

    OperatorOperation
    +, –identity, negation
    *, /multiplication, division
    +, –addition, subtraction
    =, !=, <, >, <=, >=, IS NULL, LIKE, BETWEEN, INComparison
    NOTlogical negation
    ANDconjunction
    ORinclusion

    Example

    Consider the following SQL statement:

    SELECT20-3*5;

    This will result in the following. Here multiplication operator gets evaluated first and then subtraction happens.

    5

  • Data Types

    What are SQL Data types?

    An SQL data type refers to the type of data which can be stored in a column of a database table. In a column, the user can store numeric, string, binary, etc by defining data types. For example integer data, character data, monetary data, date and time data, binary strings, and so on.

    While creating a database table in a database, we need to specify following two attributes to define a table column:

    • Name of the column
    • Data type of the column

    A database table’s column defines the data, whereas database table rows populate data into the table.

    For example, if you want to store student name in a column then you should give column name something like student_name and it’s data type will be char(50) which means it can store a string of characters up to 50 characters.

    The data type provide guidelines for SQL to understand what type of data is expected inside each column, and hence, prevents the user from entering any unexpected or invalid data in a column. For example, if we want a column to store only integer values, we can specify its data types as INT. SQL will show an error if any other value apart from an integer is inserted into that particular column.

    Different RDBMS supports different type of data types to define their tables. This SQL Data types tutorial will list down different data types available in MySQL, Oracle, MS SQL Server, and MS Access databases.

    Defining a Data Type

    SQL Data types are defined during the creation of a table in a database. While creating a table, it is required to specify its respective data type and size along with the name of the column.

    Following is the syntax to specify a data type in MySQL −

    CREATETABLE table_name(column1 datatype, column2 datatype....)

    Let us look at an example query below to understand better.

    Open Compiler

    CREATETABLE Customers (Name VARCHAR(25), Age INT);

    In the above SQL query, we are creating a table Customers. And since the Name column only stores string values, we are specifying its data type as “VARCHAR”. The VARCHAR data type represents string values in SQL. Similarly, we define the Age column with the integer data type, “INT”.

    When we assign the appropriate data type to a column, we can make efficient use of memory by allocating only the amount of system memory required for the data in the relevant column.

    Types of SQL Data Types

    There are three main types of SQL data types available in any RDBMS. They are listed below −

    • String
    • Numeric
    • Date and Time

    Data Types in MySQL, SQL Server, Oracle, and MS Access Databases

    Let’s discuss the data types in MySQL, SQL Server, Oracle (PL/SQL) and MS Access Databases in detail. All the three main types (String, Numeric, Date and Time) of SQL data types explained below-

    MySQL Data Types

    There are three main data types available in MySQL Database: string, numeric, and date and time. Following section lists down all the data types available in MySQL Version 8.0

    MySQL – String Data Types

    Data typeDescription
    CHAR(size)A fixed length string which can have letters, numbers, and special characters. The size parameter specifies the column length in characters which can vary from from 0 to 255. Default size is 1
    VARCHAR(size)A variable length string which can contain letters, numbers, and special characters. The size parameter specifies the maximum string length in characters which can vary from 0 to 65535.
    BINARY(size)This is equal to CHAR(), but stores binary byte strings. The size parameter specifies the column length in bytes. Default size is 1
    VARBINARY(size)This is equal to VARCHAR(), but stores binary byte strings. The size parameter specifies the maximum column length in bytes.
    TINYTEXTThis holds a string with a maximum length of 255 characters
    TEXT(size)This holds a string with a maximum length of 65,535 bytes
    LONGTEXTThis holds a string with a maximum length of 4,294,967,295 characters
    TINYBLOBThis represents a small BLOBs (Binary Large Objects). Max length is 255 bytes
    BLOB(size)This represents a BLOBs (Binary Large Objects). Holds up to 65,535 bytes of data
    MEDIUMTEXTThis holds a string with a maximum length of 16,777,215 characters
    MEDIUMBLOBThis represents a medium BLOBs (Binary Large Objects). Holds up to 16,777,215 bytes of data
    LONGBLOBThis represents a large BLOBs (Binary Large Objects). Holds up to 4,294,967,295 bytes of data
    ENUM(val1, val2, val3, …)A string object that can contain only one value, chosen from a list of possible values. You can list up to 65535 values in an ENUM list. If a value is inserted that is not in the list, a blank value will be inserted. The values are sorted in the order you enter them
    SET(val1, val2, val3, …)A string object that can have 0 or more values, chosen from a list of possible values. You can list up to 64 values in a SET list

    MySQL – Numeric Data Types

    Data typeDescription
    INTA normal-sized integer that can be signed or unsigned. If signed, the allowable range is from -2147483648 to 2147483647. If unsigned, the allowable range is from 0 to 4294967295. You can specify a width of up to 11 digits.
    TINYINTA very small integer that can be signed or unsigned. If signed, the allowable range is from -128 to 127. If unsigned, the allowable range is from 0 to 255. You can specify a width of up to 4 digits.
    SMALLINTA small integer that can be signed or unsigned. If signed, the allowable range is from -32768 to 32767. If unsigned, the allowable range is from 0 to 65535. You can specify a width of up to 5 digits.
    MEDIUMINTA medium-sized integer that can be signed or unsigned. If signed, the allowable range is from -8388608 to 8388607. If unsigned, the allowable range is from 0 to 16777215. You can specify a width of up to 9 digits.
    BIGINTA large integer that can be signed or unsigned. If signed, the allowable range is from -9223372036854775808 to 9223372036854775807. If unsigned, the allowable range is from 0 to 18446744073709551615. You can specify a width of up to 20 digits.
    FLOAT(M,D)A floating-point number that cannot be unsigned. You can define the display length (M) and the number of decimals (D). This is not required and will default to 10,2, where 2 is the number of decimals and 10 is the total number of digits (including decimals). Decimal precision can go to 24 places for a FLOAT.
    DOUBLE(M,D)A double precision floating-point number that cannot be unsigned. You can define the display length (M) and the number of decimals (D). This is not required and will default to 16,4, where 4 is the number of decimals. Decimal precision can go to 53 places for a DOUBLE. REAL is a synonym for DOUBLE.
    DECIMAL(M,D)An unpacked floating-point number that cannot be unsigned. In the unpacked decimals, each decimal corresponds to one byte. Defining the display length (M) and the number of decimals (D) is required. NUMERIC is a synonym for DECIMAL.

    MySQL – Date and Time Data Types

    Data typeDescription
    DATEA date in YYYY-MM-DD format, between 1000-01-01 and 9999-12-31. For example, December 30th, 1973 would be stored as 1973-12-30.
    DATETIMEA date and time combination in YYYY-MM-DD HH:MM:SS format, between 1000-01-01 00:00:00 and 9999-12-31 23:59:59. For example, 3:30 in the afternoon on December 30th, 1973 would be stored as 1973-12-30 15:30:00.
    TIMESTAMPA timestamp between midnight, January 1st, 1970 and sometime in 2037. This looks like the previous DATETIME format, only without the hyphens between numbers; 3:30 in the afternoon on December 30th, 1973 would be stored as 19731230153000 ( YYYYMMDDHHMMSS ).
    TIMEStores the time in a HH:MM:SS format.
    YEAR(M)Stores a year in a 2-digit or a 4-digit format. If the length is specified as 2 (for example YEAR(2)), YEAR can be between 1970 to 2069 (70 to 69). If the length is specified as 4, then YEAR can be 1901 to 2155. The default length is 4.

    MS SQL Server Data Types

    As we have previously discussed in this chapter, there are three main data types in MS SQL server. They are: string, numeric, and date and time.

    MS SQL Server – String Data Types

    String data types in SQL allow us to store a group of characters, enclosed in single quotes, in a record of a table column. These characters can be of any type: numeralsletterssymbols etc.

    Users can either store a fixed number of characters or a variable number of characters, depending on their preferences.

    Following is the list of the data types that are included under the string data types in SQL.

    Data typeDescription
    char(n)It holds the character string with the fixed width. Maximum size of this data type is 8000 characters.
    varchar(n)It holds the character string with the variable width. Maximum size of this data type is also 8000 characters.
    varchar(max)It holds the character string with the variable width. Maximum size of this data type is 1073741824 characters.
    textIt holds the character string with the variable width. This data type can store up to maximum of 2GB text data.
    ncharIt holds the Unicode string with the fixed width. Maximum size of this data type is also 4000 characters.
    nvarcharIt holds the Unicode string with the variable width. Maximum size of this data type is also 4000 characters.
    ntextIt holds the Unicode string with the variable width. This data type can store up to maximum of 2GB text data.
    binary(n)It holds the binary string with the fixed width.
    varbinaryIt holds the binary string with variable width. Maximum size of this data type is also 8000 bytes.
    varbinary(max)It holds the binary string of max length of variable width. Maximum size of this data type is 2 GB.
    imageIt holds the variable length of the data type that can store binary data. Maximum size of this data type is 2 GB.
    Nvarchar(max)It holds the Unicode string of max length of variable width. Maximum size of this data type is 536870912 characters.

    Example

    In the following example, we are creating a table “students” with only string data types values: varchar and char.

    CREATETABLE students (
      name varchar(20)NOTNULL,
      gender char(6)NOTNULL,
      city textNOTNULL);

    Output

    On executing the query, the output will be displayed as −

    (0 rows affected)
    

    Verification

    On the execution of the SQL queries “EXEC sp_help ‘dbo.students’;” we get the details of the table and the data types of each column.

    Column_nameTypeComputedLengthPrecScaleNullable
    namevarcharno20no
    gendercharno6no
    citytextno16no

    MS SQL Server – Numeric Data Types

    Numeric data types are one of the most widely used data types in SQL. They are used to store numeric values only.

    Following is the list of data types that are included under the numeric data types in SQL.

    Data typeDescription
    bitIt holds the integer that can be 0, 1 or NULL.
    tinyintIt allow to holds the whole number from 0 to 255.
    smallintIt allow to holds the number between -32,768 and 32,767.
    intIt allow to holds the whole number between -2,147,483,648 and 2,147,483,647.
    bigintIt allow to holds the whole number between -9,223,372,036,854,775,808 and 9,223,372,036,854,775,807
    decimal(p, s)It is fixed precision and scale numbers. That allow numbers from -10^38 + 1 to 10^38-1.The p parameter indicates the maximum total number of digits that can be stored on both sides of the decimal point, left and right. It must have a value from 1 to 38. By default, it is 18.The s parameter indicates the maximum number of the digit to the right of the decimal point. S must be a value from 0 to p. The value is set to 0 by default.
    numeric(p, s)It is fixed precision and scale numbers. That allow numbers from -10^38 + 1 to 10^38-1.The p parameter indicates the maximum total number of digits that can be stored on both sides of the decimal point, left and right. It must have a value from 1 to 38. By default, it is 18.The s parameter indicates the maximum number of the digit to the right of the decimal point. S must be a value from 0 to p. The value is set to 0 by default.
    smallmoneyIt holds the monetary data from -214,748.3648 to 214,748.3647.
    MoneyIt holds the monetary data from -922,337,203,685,477.5808 to 922,337,203,685,477.5807.
    Float(n)It holds or store the floating precession number data from -1.79E + 308 to 1.79E + 308.The n parameter indicates whether the field should hold 4 or 8 bytes. Float(24) contains a 4-byte field, while Float(53) contains an 8-byte field. The default value of n is 53.
    realIt holds the floating precision number data from -3.40E + 38 to 3.40E + 38.

    Example

    In the following example, we are creating a table named employees with only numeric data type values.

    CREATETABLE employees (
      ID intNOTNULL,
      myBoolean bitNOTNULL,
      Fee money,
      celsius floatNOTNULL);

    Output

    On executing the query, the output will be displayed as −

    (0 rows affected)
    

    Verification

    On the execution of the SQL queries “EXEC sp_help ‘dbo.employees;” we get the details of the table and the data types of each column.

    Column_nameTypeComputedLengthPrecScaleNullable
    IDintno4100no
    myBooleanbitno1no
    Feemoneyno18194yes
    Celsiusfloatno853NULLno

    MS SQL Server – Date and Time Data Types

    datetime data types are used in SQL for values that contain both dates and times. datetime and time values are defined in the formats: yyyy-mm-ddhh:mm:ss.nnnnnnn (n is dependent on the column definition) respectively.

    Following is the list of data types that are included under the date and times data types in SQL.

    Data typeDescription
    datetimeIt stores date and time both from January 1, 1753 to December 31, 9999 with an accuracy of 3.33 milliseconds.
    datetime2It stores date and time both from January 1, 0001 to December 31, 9999 with an accuracy of 100 nanoseconds.
    smalldatetimeIt stores date and time both from January 1, 1900 to June 6, 2079 with an accuracy of 1 minute.
    dateIt stores date only from January 1, 0001 to December 31 9999.
    timeIt store time only to an accuracy of 100 nanoseconds.
    datetimeoffsetIt is the same of the datetime2 with the addition of the time zone offset.
    timestampIt stores the unique number that gets updated every time a row gets created or modified. It does not correspond to real time and is based on internal time. Each table may have only one timestamp variable.

    Note − Here, datetime has 3.33 milliseconds accuracy where as smalldatetime has 1 minute accuracy.

    Example

    In the following example, we are creating a table named Cust_details with only date and time data types values.

    CREATETABLE Cust_details (
      HolidayDate DATENOTNULL,
      OrderDateTime DATETIME,
      ScheduleFrom TIMENOTNULL,
      ShippingDateTime DATETIME2
    );

    Output

    On executing the query, the output will be displayed as −

    (0 rows affected)
    

    Verification

    On the execution of the SQL queries “EXEC sp_help ‘dbo.Cust_details;” we get the details of the table and the data types of each column.

    Column_nameTypeComputedLengthPrecScaleNullable
    HolidayDatedateno3100no
    OrderDateTimedatetimeno8yes
    ScheduleFromtimeno5167no
    ShippingDateTimedatetime2no8277yes

    Note:

    • If you are using the MySQL workbench to run the SQL data types and their queries, then there are some SQL data types and formats for date and time that won’t work; like “money”, “datetime2”, “yyyy/mm/dd” and “time AM”. All these data types specified are compatible only with the SQL server.
    • The size of these data types may change in the future updates keep checking the SQL documentation.

    Oracle Data Types

    There are four main types of data types available in Oracle Database: string, numeric, date & time and large object data types. Following section lists down all the data types available in Oracle Database.

    Oracle – String Data Types

    Data typeDescription
    CHAR(size)It is used to store character data within the predefined length. It can be stored up to 2000 bytes.
    NCHAR(size)It is used to store national character data within the predefined length. It can be stored up to 2000 bytes.
    VARCHAR2(size)It is used to store variable string data within the predefined length. It can be stored up to 4000 byte.
    VARCHAR(SIZE)It is the same as VARCHAR2(size). You can also use VARCHAR(size), but it is suggested to use VARCHAR2(size)
    NVARCHAR2(size)It is used to store Unicode string data within the predefined length. We have to must specify the size of NVARCHAR2 data type. It can be stored up to 4000 bytes.

    Oracle – Numeric Data Types

    Data typeDescription
    NUMBER(p, s)It contains precision p and scale s. The precision p can range from 1 to 38, and the scale s can range from -84 to 127.
    FLOAT(p)It is a subtype of the NUMBER data type. The precision p can range from 1 to 126.
    BINARY_FLOATIt is used for binary precision( 32-bit). It requires 5 bytes, including length byte.
    BINARY_DOUBLEIt is used for double binary precision (64-bit). It requires 9 bytes, including length byte.

    Oracle – Date and Time Data Types

    Data typeDescription
    DATEIt is used to store a valid date-time format with a fixed length. Its range varies from January 1, 4712 BC to December 31, 9999 AD.
    TIMESTAMPIt is used to store the valid date in YYYY-MM-DD with time hh:mm:ss format.

    Oracle – Large Object Data Types (LOB Types)

    Data typeDescription
    BLOBIt is used to specify unstructured binary data. Its range goes up to 232-1 bytes or 4 GB.
    BFILEIt is used to store binary data in an external file. Its range goes up to 232-1 bytes or 4 GB.
    CLOBIt is used for single-byte character data. Its range goes up to 232-1 bytes or 4 GB.
    NCLOBIt is used to specify single byte or fixed length multibyte national character set (NCHAR) data. Its range is up to 232-1 bytes or 4 GB.
    RAW(size)It is used to specify variable length raw binary data. Its range is up to 2000 bytes per row. Its maximum size must be specified.
    LONG RAWIt is used to specify variable length raw binary data. Its range up to 231-1 bytes or 2 GB, per row.

    MS Access Data Types

    The MS Access database also offers four categories of data types: String, Numeric, Date and Time, and other specialized data types.

    Following are all data types that are provided by MS Access 2013 version and later.

    MS Access – String Data Types

    Data typeDescription
    Short Text (formerly “Text”)It is a string data type that holds Alphanumeric data, like, names, titles, etc. It can hold up to 255 characters.
    Long Text (formerly “Memo”)It is also a string data type which holds Large Alphanumeric data, like paragraphs, etc. It can hold up to 1GB or 64,000 characters.

    MS Access – Numeric Data Types

    Data typeDescription
    NumberIt only holds Numeric data. The size can range from 1 to 16 bytes.
    Large NumberIt also holds numeric data. The maximum size of this data type is 8 bytes.

    MS Access – Date and Time Data Types

    Data typeDescription
    Date/TimeIt holds date and time data. The maximum size of this data type is 8 bytes.
    Date/Time ExtendedIt also holds date and time data. The maximum size of this data type is Encoded string of 42 bytes.

    MS Access – Specialized Data Types

    Data typeDescription
    CurrencyThis data type stores Monetary data, with up to 4 decimal places of precision. The size of this data type is 8 bytes.
    AutoNumberThis stored a unique value that is generated by MS Access for each new record. The size of this data type is 4 bytes.
    Yes/NoIt holds Boolean data in the form of 0 and 1. ‘0’ for false and ‘-1’ for true. The maximum size is 1 byte.
    OLE ObjectIt stores pictures, graphs or other ActiveX object from another Window-based application. The size can be stored up to 2GB.
    HyperlinkIt stores a link address to a document or file on the Internet, on an intranet, on a local area network (LAN), or on your local computer. The size can go up to 8,192 characters.
    AttachmentThe attachment data type in MS Access allows the user to attach such as pictures, documents, spreadsheets, or charts. It can have unlimited number of attachments per record; but only up to the storage limit of the size of a database file.
    CalculatedWith this data type, you can create an expression that uses data from one or more fields. Then, from this expression, a result data type can also be created. However, this data type isn’t available in MDB file formats. The size of this data type can vary depending on the result type.
    Lookup WizardThe Lookup Wizard is not technically a data type. But when this entry is chosen, a wizard starts to help the user define a lookup field. The size of this data type depends on the size of the lookup field.

  • Syntax

    What is SQL Syntax?

    SQL syntax is a unique set of rules and guidelines to be followed while writing SQL statements. This tutorial gives you a quick start with SQL by listing all the basic SQL Syntax.

    All the SQL statements start with any of the keywords like SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, CREATE, USE, SHOW and all the statements end with a semicolon (;).

    Case Sensitivity

    The most important point to be noted here is that SQL is case insensitive, which means SELECT and Select have same meaning in SQL statements. Whereas, MySQL makes difference in table names. So, if you are working with MySQL, then you need to give table names as they exist in the database.

    SQL Table

    Let us consider a table with the name CUSTOMERS shown below, and use it as a reference to demonstrate all the SQL Statements on the same.

    IDNAMEAGEADDRESSSALARY
    1Ramesh32Ahmedabad2000.00
    2Khilan25Delhi1500.00
    3kaushik23Kota2000.00
    4Chaitali25Mumbai6500.00
    5Hardik27Bhopal8500.00
    6Komal22Hyderabad4500.00
    7Muffy24Indore10000.00

    SQL Statements

    This tutorial lists down various SQL statements. Most of them are compatible with MySQL, Oracle, Postgres and SQL Server databases.

    All the SQL statements require a semicolon (;) at the end of each statement. Semicolon is the standard way to separate different SQL statements which allows to include multiple SQL statements in a single line.

    All the SQL Statements given in this tutorial have been tested with a MySQL server on Linux and Windows.

    SQL CREATE DATABASE Statement

    To store data within a database, you first need to create it. This is necessary to individualize the data belonging to an organization.

    You can create a database using the following syntax −

    CREATEDATABASE database_name;

    Let us try to create a sample database sampleDB in SQL using the CREATE DATABASE statement −

    CREATEDATABASE sampleDB
    

    SQL USE Statement

    Once the database is created, it needs to be used in order to start storing the data accordingly. Following is the syntax to change the current location to required database −

    USE database_name;

    We can set the previously created sampleDB as the default database by using the USE statement in SQL −

    USE sampleDB;

    SQL DROP DATABASE Statement

    If a database is no longer necessary, you can also delete it. To delete/drop a database, use the following syntax −

    DROPDATABASE database_name;

    You can also drop the sampleDB database by using the DROP DATABASE statement in SQL −

    DROPDATABASE sampleDB;

    SQL CREATE TABLE Statement

    In an SQL driven database, the data is stored in a structured manner, i.e. in the form of tables. To create a table, following syntax is used −

    CREATETABLE table_name(
       column1 datatype,
       column2 datatype,
       column3 datatype,.....
       columnN datatype,PRIMARYKEY( one or more columns));

    The following code block is an example, which creates a CUSTOMERS table given above, with an ID as a primary key and NOT NULL are the constraints showing that these fields cannot be NULL while creating records in this table −

    CREATETABLE CUSTOMERS(
       ID   INTNOTNULL,
       NAME VARCHAR(20)NOTNULL,
       AGE  INTNOTNULL,
       ADDRESS  CHAR(25),
       SALARY   DECIMAL(18,2),PRIMARYKEY(ID));

    SQL DESC Statement

    Every table in a database has a structure of its own. To display the structure of database tables, we use the DESC statements. Following is the syntax −

    DESC table_name;

    The DESC Statement, however, only works in few RDBMS systems; hence, let us see an example by using DESC statement in the MySQL server −

    DESC CUSTOMERS;

    SQL INSERT INTO Statement

    The SQL INSERT INTO Statement is used to insert data into database tables. Following is the syntax −

    INSERTINTO table_name( column1, column2....columnN)VALUES( value1, value2....valueN);

    The following example statements would create seven records in the empty CUSTOMERS table.

    INSERTINTO CUSTOMERS VALUES(1,'Ramesh',32,'Ahmedabad',2000.00),(2,'Khilan',25,'Delhi',1500),(3,'kaushik',23,'Kota',2000),(4,'Chaitali',25,'Mumbai',6500),(5,'Hardik',27,'Bhopal',8500),(6,'Komal',22,'Hyderabad',4500),(7,'Muffy',24,'Indore',10000);

    SQL SELECT Statement

    In order to retrieve the result-sets of the stored data from a database table, we use the SELECT statement. Following is the syntax −

    SELECT column1, column2....columnN FROM table_name;

    To retrieve the data from CUSTOMERS table, we use the SELECT statement as shown below.

    SELECT*FROM CUSTOMERS;

    SQL UPDATE Statement

    When the stored data in a database table is outdated and needs to be updated without having to delete the table, we use the UPDATE statement. Following is the syntax −

    UPDATE table_name
    SET column1 = value1, column2 = value2....columnN=valueN
    [WHERE  CONDITION ];

    To see an example, the following query will update the ADDRESS for a customer whose ID number is 6 in the table.

    UPDATE CUSTOMERS SET ADDRESS ='Pune'WHERE ID =6;

    SQL DELETE Statement

    Without deleting the entire table from the database, you can also delete a certain part of the data by applying conditions. This is done using the DELETE FROM statement. Following is the syntax −

    DELETEFROM table_name WHERE  {CONDITION};

    The following code has a query, which will DELETE a customer, whose ID is 6.

    DELETEFROM CUSTOMERS WHERE ID =6;

    SQL DROP TABLE Statement

    To delete a table entirely from a database when it is no longer needed, following syntax is used −

    DROPTABLE table_name;

    This query will drop the CUSTOMERS table from the database.

    Open Compiler

    DROPTABLE CUSTOMERS;

    SQL TRUNCATE TABLE Statement

    The TRUNCATE TABLE statement is implemented in SQL to delete the data of the table but not the table itself. When this SQL statement is used, the table stays in the database like an empty table. Following is the syntax −

    TRUNCATETABLE table_name;

    Following query delete all the records of the CUSTOMERS table −

    TRUNCATETABLE CUSTOMERS;

    SQL ALTER TABLE Statement

    The ALTER TABLE statement is used to alter the structure of a table. For instance, you can add, drop, and modify the data of a column using this statement. Following is the syntax −

    ALTERTABLE table_name 
    {ADD|DROP|MODIFY} column_name {data_type};

    Following is the example to ADD a New Column to the CUSTOMERS table using ALTER TABLE command −

    ALTERTABLE CUSTOMERS ADD SEX char(1);

    SQL ALTER TABLE Statement (Rename)

    The ALTER TABLE statement is also used to change the name of a table as well. Use the syntax below −

    ALTERTABLE table_name RENAMETO new_table_name;

    Following is the example to RENAME the CUSTOMERS table using ALTER TABLE command −

    ALTERTABLE CUSTOMERS RENAMETO NEW_CUSTOMERS;

    SQL DISTINCT Clause

    The DISTINCT clause in a database is used to identify the non-duplicate data from a column. Using the SELECT DISTINCT statement, you can retrieve distinct values from a column. Following is the syntax −

    SELECTDISTINCT column1, column2....columnN FROM   table_name;

    As an example, let us use the DISTINCT keyword with a SELECT query. The repetitive salary 2000.00 will only be retrieved once and the other record is ignored.

    SELECTDISTINCT SALARY FROM CUSTOMERS ORDERBY SALARY;

    SQL WHERE Clause

    The WHERE clause is used to filter rows from a table by applying a condition. Following is the syntax to retrieve filtered rows from a table −

    SELECT column1, column2....columnN
    FROM   table_name
    WHERE  CONDITION;

    The following query is an example to fetch all the records from CUSTOMERS table where the salary is greater than 2000, using the SELECT statement −

    SELECT ID, NAME, SALARY 
    FROM CUSTOMERS 
    WHERE SALARY >2000;

    SQL AND/OR Operators

    The AND/OR Operators are used to apply multiple conditions in the WHERE clause. Following is the syntax −

    SELECT column1, column2....columnN
    FROM   table_name
    WHERE  CONDITION-1 {AND|OR} CONDITION-2;

    The following query is an example to fetch all the records from CUSTOMERS table where the salary is greater than 2000 AND age is less than 25, using the SELECT statement −

    SELECT ID, NAME, SALARY FROM CUSTOMERS WHERE SALARY >2000AND age <25;

    SQL IN Clause

    The IN Operator is used to check whether the data is present in the column or not, using the WHERE clause. Following is the syntax −

    SELECT column1, column2....columnN
    FROM   table_name
    WHERE  column_name IN(val-1, val-2,...val-N);

    For an example, we want to display records with NAME equal to ‘Khilan’, ‘Hardik’ and ‘Muffy’ (string values) using IN operator as follows −

    SELECT*FROM CUSTOMERS 
    WHERE NAME IN('Khilan','Hardik','Muffy');

    SQL BETWEEN Clause

    The BETWEEN Operator is used to retrieve the values from a table that fall in a certain range, using the WHERE clause. Following is the syntax −

    SELECT column1, column2....columnN
    FROM   table_name
    WHERE  column_name BETWEEN val-1 AND val-2;
    

    Let us try to the BETWEEN operator to retrieve CUSTOMERS records whose AGE is between 20 and 25.

    SELECT*FROM CUSTOMERS WHERE AGE BETWEEN20AND25;

    SQL LIKE Clause

    The LIKE Operator is used to retrieve the values from a table that match a certain pattern, using the WHERE clause. Following is the syntax −

    SELECT column1, column2....columnN
    FROM   table_name
    WHERE  column_name LIKE { PATTERN };

    As an example, let us try to display all the records from the CUSTOMERS table, where the SALARY starts with 200.

    SELECT*FROM CUSTOMERS WHERE SALARY LIKE'200%';

    SQL ORDER BY Clause

    The ORDER BY Clause is used to arrange the column values in a given/specified order. Following is the syntax −

    SELECT column1, column2....columnN
    FROM   table_name
    WHERE  CONDITION
    ORDERBY column_name {ASC|DESC};

    In the following example we are trying to sort the result in an ascending order by the alphabetical order of customer names −

    SELECT*FROM CUSTOMERS ORDERBY NAME ASC;

    SQL GROUP BY Clause

    The GROUP BY Clause is used to group the values of a column together. Following is the syntax −

    SELECTSUM(column_name)FROM   table_name
    WHERE  CONDITION
    GROUPBY column_name;

    We are trying to group the customers by their age and calculate the average salary for each age group using the following query −

    SELECT ADDRESS, AGE,SUM(SALARY)AS TOTAL_SALARY FROM CUSTOMERS 
    GROUPBY ADDRESS, AGE;

    SQL COUNT Function

    The COUNT Function gives the number of non-null values present in the specified column. Following is the syntax −

    SELECTCOUNT(column_name)FROM   table_name
    WHERE  CONDITION;

    Let us see an example −

    SELECT AGE,COUNT(Name)FROM CUSTOMERS GROUPBY AGE;

    SQL HAVING Clause

    The HAVING clause is also used to filter a group of rows by applying a condition. Following is the syntax −

    SELECTSUM(column_name)FROM   table_name
    WHERE  CONDITION
    GROUPBY column_name
    HAVING(arithematic function condition);

    In the following example, we are trying to retrieve all records from the CUSTOMERS table where the sum of their salary is greater than 5000 −

    SELECT ADDRESS, AGE,SUM(SALARY)AS 
    TOTAL_SALARY FROM CUSTOMERS GROUPBY 
    ADDRESS, AGE HAVING TOTAL_SALARY >=5000ORDERBY TOTAL_SALARY DESC;

    SQL CREATE INDEX Statement

    To create an index on a database table, SQL provides the CREATE INDEX statement. Following is the syntax −

    CREATEUNIQUEINDEX index_name
    ON table_name ( column1, column2,...columnN);

    Let us create an index for the column named ‘NAME’ in the existing CUSTOMERS table using the following query −

    CREATEINDEX sample_index on CUSTOMERS(NAME);

    SQL DROP INDEX Statement

    The DROP INDEX statement is used to drop an index from a table. Following is the syntax −

    DROPINDEX index_name ON table_name;

    Let us drop the index we created previously for the column named ‘NAME’ in the existing CUSTOMERS table using the following query −

    DROPINDEX sample_index on CUSTOMERS;

  • Databases

    SQL Databases

    SQL or Relational databases are used to store and manage the data objects that are related to one another, i.e. the process of handling data in a relational database is done based on a relational model.

    This relational model is an approach to manage data in a structured way (using tables). A system used to manage these relational databases is known as Relational Database Management System (RDBMS).

    SQL Database Table Structure

    SQL database server stores data in table form. Tables are database objects used to collect data in Row and Column format. Rows represent the entities whereas columns define the attributes of each entity in a table.

    Columns: Columns are vertical elements in a table. Each column in a table holds specific attribute information, and column properties such as column name and data types (Integer, Char, String, etc).

    Rows: Rows are horizontal elements in a table and users can add data or retrieve by executing SQL queries.

    Types of SQL Databases

    There are many popular RDBMS available to work with. Some of the most popular RDBMS are listed below −

    • MySQL
    • MS SQL Server
    • ORACLE
    • MS ACCESS
    • PostgreSQL
    • SQLite

    This SQL databases tutorial gives a brief overview of these RDBMS specified above. This would help you to compare their basic features.

    MySQL

    MySQL is an open source SQL database, which is developed by a Swedish company, MySQL AB. MySQL is pronounced as “my ess-que-ell,” in contrast with SQL, pronounced “sequel.”

    MySQL is supporting many different platforms including Microsoft Windows, the major Linux distributions, UNIX, and Mac OS X.

    MySQL has free and paid versions, depending on its usage (non-commercial/commercial) and features. MySQL comes with a very fast, multi-threaded, multi-user and robust SQL database server.

    History

    • 1994 – Development of MySQL by Michael Widenius & David Axmark beginning in 1994.
    • 1995 – First internal release on 23rd May 1995.
    • 1998 – Windows Version was released on the 8th January 1998 for Windows 95 and NT.
    • 2001 – Version 3.23 released beta from June 2000, and production release January 2001.
    • 2003 – Version 4.0 was released on August 2002 as beta, and as production release on March 2003 (unions).
    • 2004 – Version 4.1 was released on June 2004 as beta, and as production release on October 2004.
    • 2005 – Version 5.0 was released on March 2005 as beta, and as a production release on October 2005.
    • 2008 – Sun Microsystems acquired MySQL AB on the 26th February 2008, and Oracle Version 5.1 had its production release on 27th November 2008.
    • 2010 – Oracle acquired Sun Microsystems on 27th January 2010 and general availability of version 5.5 was on 3rd December 2010.
    • 2013 – General availability of Version 5.6 was enabled on 5th February 2013
    • 2015 – General availability of Version 5.7 was enabled on 21st October 2015
    • 2018 – General availability of Version 8.0 was enabled on 19th April 2018, and is the latest version of MySQL.

    Features

    • High Performance.
    • High Availability.
    • Scalability and Flexibility Run anything.
    • Robust Transactional Support.
    • Web and Data Warehouse Strengths.
    • Strong Data Protection.
    • Comprehensive Application Development.
    • Management Ease.
    • Open Source Freedom and 24 x 7 Support.
    • Lowest Total Cost of Ownership.

    MS SQL Server

    MS SQL Server is a Relational Database Management System developed by Microsoft Inc. Its primary query languages are −

    • T-SQL
    • ANSI SQL

    History

    • 1987 – Sybase releases SQL Server for UNIX.
    • 1988 – Microsoft, Sybase, and Aston-Tate port SQL Server to OS/2.
    • 1989 – Microsoft, Sybase, and Aston-Tate release SQL Server 1.0 for OS/2.
    • 1990 – SQL Server 1.1 is released with support for Windows 3.0 clients.
    • 2000 – Microsoft releases SQL Server 2000.
    • 2001 – Microsoft releases XML for SQL Server Web Release 1 (download).
    • 2002 – Microsoft releases SQLXML 2.0 (renamed from XML for SQL Server).
    • 2002 – Microsoft releases SQLXML 3.0.
    • 2006 – Microsoft releases SQL Server 2005 on January 14, 2006.
    • 2008 – Microsoft releases SQL Server 2008 on November 6, 2008. And R2 version is released on July 20, 2010.
    • 2012 – Microsoft releases SQL Server 2012 on May 20, 2012.
    • 2014 – Microsoft releases SQL Server 2014 on June 5, 2014.
    • 2016 – Microsoft releases SQL Server 2016 on June 1, 2016.
    • 2017 – Microsoft releases SQL Server 2017 on September 29, 2017.
    • 2019 – Microsoft releases SQL Server 2019 on November 4, 2019.
    • 2022 – Microsoft releases SQL Server 2022 on November 16, 2022.

    Features

    • High Performance
    • High Availability
    • Database mirroring
    • Database snapshots
    • CLR integration
    • Service Broker
    • DDL triggers
    • Ranking functions
    • Row version-based isolation levels
    • XML integration
    • TRY…CATCH
    • Database Mail

    ORACLE

    Oracle is a very large multi-user based database management system. Oracle is a relational database management system developed by ‘Oracle Corporation’.

    Oracle works to efficiently manage its resources, a database of information among the multiple clients requesting and sending data in the network.

    It is an excellent database server choice for client/server computing. Oracle supports all major operating systems for both clients and servers, including MSDOS, NetWare, UnixWare, OS/2 and most UNIX flavors.

    History

    Oracle began in 1977 and celebrating its 46 wonderful years in the industry (from 1977 to 2023).

    • 1977 – Larry Ellison, Bob Miner and Ed Oates founded Software Development Laboratories to undertake development work.
    • 1979 – Version 2.0 of Oracle was released and it became first commercial relational database and first SQL database. The company changed its name to Relational Software Inc. (RSI).
    • 1981 – RSI started developing tools for Oracle.
    • 1982 – RSI was renamed to Oracle Corporation.
    • 1983 – Oracle released version 3.0, rewritten in C language and ran on multiple platforms.
    • 1984 – Oracle version 4.0 was released. It contained features like concurrency control – multi-version read consistency, etc.
    • 1985 – Oracle version 4.0 was released. It contained features like concurrency control – multi-version read consistency, etc.
    • 2007 – Oracle released Oracle11g. The new version focused on better partitioning, easy migration, etc.
    • 2013 – Oracle Database 12c R1 version was released in July, 2013; and R2 version was released on cloud in August 2016, and released on-prem in March 2017.
    • 2018 – Oracle Database 18c version was initially released in July 2018.
    • 2019 – Oracle Database 19c version was released in February 2019.
    • 2020 – Oracle Database 21c version was released in December 2020.
    • 2023 – Oracle Database 23c version was released in April 2023.

    Features

    • Concurrency
    • Read Consistency
    • Locking Mechanisms
    • Quiesce Database
    • Portability
    • Self-managing database
    • SQL*Plus
    • ASM
    • Scheduler
    • Resource Manager
    • Data Warehousing
    • Materialized views
    • Bitmap indexes
    • Table compression
    • Parallel Execution
    • Analytic SQL
    • Data mining
    • Partitioning

    MS ACCESS

    Microsoft Access is one of the most popular Microsoft products. It is an entry-level database management software. It is not only inexpensive but also a powerful database for small-scale projects.

    MS Access uses the Jet database engine, which utilizes a specific SQL language dialect (sometimes referred to as Jet SQL). It comes with the professional edition of MS Office package. MS Access has easy to-use intuitive graphical interface.

    • 1992 – Access version 1.0 was released.
    • 1993 – Access 1.1 released to improve compatibility with inclusion the Access Basic programming language.
    • The most significant transition was from Access 97 to Access 2000.
    • 2007 – Access 2007, a new database format was introduced ACCDB which supports complex data types such as multi valued and attachment fields.
    • 2010 – Microsoft Access 2010 introduced a new version of the ACCDB format supported hosting Access Web services on a SharePoint 2010 server.
    • 2013 – Microsoft Access 2013 offers traditional Access desktop applications plus a significantly updated SharePoint 2013 web service
    • 2021 – Microsoft Access is no longer included in one-time purchase version of Microsoft Office 2021, but remains within the Microsoft 365 counterpart.

    Features

    • Users can create tables, queries, forms and reports and connect them together with macros.
    • Option of importing and exporting the data to many formats including Excel, Outlook, ASCII, dBase, Paradox, FoxPro, SQL Server, Oracle, ODBC, etc.
    • There is also the Jet Database format (MDB or ACCDB in Access 2007), which can contain the application and data in one file. This makes it very convenient to distribute the entire application to another user, who can run it in disconnected environments.
    • Microsoft Access offers parameterized queries. These queries and Access tables can be referenced from other programs like VB6 and .NET through DAO or ADO.
    • The desktop editions of Microsoft SQL Server can be used with Access as an alternative to the Jet Database Engine.
    • Microsoft Access is a file server-based database. Unlike the client-server relational database management systems (RDBMS), Microsoft Access does not implement database triggers, stored procedures or transaction logging.

    PostgreSQL

    PostgreSQL is object relational database management system (ORDBMS) that supports both relational (SQL) and non-relational (JSON) query. It is a highly stable database that is developed based on the POSTGRES, version 4.2 released by the Computer Science Department in University of Berkeley, California. This database is a popular database or data warehouse for many applications.

    History

    • 1970s – Ingres was being developed in Computer Science department of University of Berkeley as a research project which ended in 1985.
    • 1985 – A post-Ingres project, namely POSTGRES, has been initiated to address the issues in the older database systems. This project aimed to fully support datatypes and define them to establish relationships between the objects of the database. POSTGRES also was able to retrieve data using rules.
    • 1989 – POSTGRES Version 1 was released to the small number of users.
    • 1990 – POSTGRES Version 2 was released again with rewritten rules.
    • 1994 – With the increase in users, POSTGRES Version 4.2 was released, ending the project with it.
    • 1994 – Andrew Yu and Jolly Chen, students of University of Berkeley, replaced the POSTQUEL query language that run POSTGRES, with the SQL language, creating Postgres95.
    • 1995 – Postgres95’s first version was released with a more liberal license.
    • 1996 – The project was renamed to PostgreSQL to support SQL.
    • 1997 – The first version of PostgreSQL version 6.0 was released.
    • Since then, next versions of the project is released as free and open-source software PostgreSQL License.
    • 2000 – PostgreSQL version 7.0 was released on July 8th, 2000. This version had the most changes in features until then. Major changes made were foreign keys were implemented, optimizer had been improved, psql had been updated, and JOIN syntax is now supported.
    • 2005 – The version 8.0 was released on January 19th, 2005. Changes in this version include, the server can now be run on Microsoft natively, savepoints are introduced, Point-in-time recovery, tablespaces, improved buffer managements, checkpoints, changing column types is introduced, etc.
    • 2010 – PostgreSQL version 9.0 was released on 20th September, 2010.
    • 2017 – Version 10.0 was released on 5th October, 2017. Major improvements include: logical replication, declarative table partitioning, improved query parallelism, significant improvements in general performance, etc.
    • 2018 – PostgreSQL version 11.0 was released on 18th October, 2018.
    • 2019 – PostgreSQL version 12.0 was released on 3rd October, 2019.
    • 2020 – PostgreSQL version 13.0 was released on 24th September, 2020.
    • 2021 – PostgreSQL version 14.0 was released on 30th September, 2021.
    • 2022 – PostgreSQL version 15.0 was released on 13th October, 2022.

    Features

    • PostgreSQL supports advanced data types.
    • It possesses high levels of resilience, integrity and correctness of the data.
    • It contains Multi-Version Concurrency Control (MVCC)
    • Point in time recovery
    • Granular Access Controls
    • Asynchronous Replication
    • Nested transactions
    • Online backups
    • Refined query optimizer
    • Write ahead logging
    • It supports international character sets, multi-byte character encodings, Unicode.
    • It is locale-aware for sorting, case-sensitivity, and formatting.
    • Highly scalable.

    SQLite

    SQLite is an embedded relational database system. It is referred to as a lightweight database as it is not more than 500kB in size, which is way less than other relational databases. This database is an in-memory open source library; which is why it can access the files stored in it directly and the source code for it is available in the public domain.

    History

    • 2000 – SQLite 1.0 was released with GNU Database Manager. Dr. Richard Hipp designed it in the same year to create a database that requires no administration.
    • 2001 – SQLite 2.0 was released which contained a custom B-Tree implementation instead of GNU Database Manager, adding transaction capability to the database.
    • 2003 – SQLite 3.0 was released with major improvements like internalization, manifest typing etc.
    • 2011 – Hipp announced his plans to introduce a non-relational interface to SQLite.
    • 2018 – SQLite adopted the Code of Conduct from the Rule of Saint Benedict which was later renamed as Code of Ethics due to some controversies.
    • Despite such controversies, newer versions of SQLite 3.x are being released continuously with better features and improvements.
    • 2023 – The latest version of SQLite is 3.42.0 which was released on 16th July, 2023..

    Features

    • SQLite is an open source library witten in ANSI C.
    • It works on cross-platforms, making it easier to port to other systems.
    • The source code for SQLite is available in public domain.
    • Transactions in SQLite are atomic, consistent, isolated and durable even when the system crashes for any reason.
    • This database does not need any configuration or administration.
    • SQLite is server less, unlike other relational databases. It is linked with application that accesses it. The application directly interacts with the SQLite to read and write on files stored in the disk.
    • It has a simple and easy to use API.
    • In some cases, SQLite is faster than direct filesystem I/O operations.
    • SQLite is self contained, i.e. it is not dependent on any external libraries or operating systems.
    • Uses a stand-alone command line interface (CLI) client to administer SQLite.

    Benefits of Using SQL Database

    Relational databases are the most popular and preferred databases used for data storage. There are many benefits to using SQL database, including:

    Enhanced Flexibility

    Relational databases utilize Data Definition Language (DDL) to modify data stored in tables in real time. The most important thing users can easily add new tables and columns, rename, and implement various changes without disrupting ongoing database operations.

    Data Consistency

    Data Consistency is another important benefit of using SQL databases because it maintains data consistency across applications and server instances.

    Minimum Data Redundancy

    Relational Database Management Systems (RDBMS) use the normalization process to reduce data redundancy. This approach eliminates anomalies in Data stores in the Database.

    Optimized Performance

    Relational databases offer a range of value-added features that boast minimal memory usage, reduced storage costs, and high processor speed.

    Higher Compatibility

    Relational databases offer higher compatibility for integration with modern technologies.

    Scalability

    Higher scalability is another feature that makes Relational databases most preferred.

  • RDBMS Concepts

    What is RDBMS?

    RDBMS stands for Relational Database Management System. RDBMS is the basis for SQL, and for all modern database systems like MS SQL Server, IBM DB2, Oracle, MySQL, and Microsoft Access.

    A Relational database management system (RDBMS) is a database management system (DBMS) that is based on the relational model as introduced by E. F. Codd in 1970.

    What is a Table?

    The data in an RDBMS is stored in database objects known as tables. This table is basically a collection of related data entries and it consists of numerous columns and rows.

    Remember, a table is the most common and simplest form of data storage in a relational database. Following is an example of a CUSTOMERS table which stores customer’s ID, Name, Age, Salary, City and Country −

    IDNameAgeSalaryCityCountry
    1Ramesh322000.00HyderabadIndia
    2Mukesh405000.00New YorkUSA
    3Sumit454500.00MuscatOman
    4Kaushik252500.00KolkataIndia
    5Hardik293500.00BhopalIndia
    6Komal383500.00SaharanpurIndia
    7Ayush253500.00DelhiIndia
    8Javed293700.00DelhiIndia

    What is a Field?

    Every table is broken up into smaller entities called fields. A field is a column in a table that is designed to maintain specific information about every record in the table.

    For example, our CUSTOMERS table consists of different fields like ID, Name, Age, Salary, City and Country.

    row column field

    What is a Record or a Row?

    A record is also called as a row of data is each individual entry that exists in a table. For example, there are 7 records in the above CUSTOMERS table. Following is a single row of data or record in the CUSTOMERS table −

    IDNameAgeSalaryCityCountry
    1Ramesh322000.00HyderabadIndia

    A record is a horizontal entity in a table.

    What is a Column?

    A column is a vertical entity in a table that contains all information associated with a specific field in a table.

    For example, our CUSTOMERS table have different columns to represent ID, Name, Age, Salary, City and Country.

    What is a NULL Value?

    A NULL value in a table is a value in a field that appears to be blank, which means a field with a NULL value is a field with no value.

    It is very important to understand that a NULL value is different than a zero value or a field that contains spaces. A field with a NULL value is the one that has been left blank during a record creation. Following table has three records where first record has NULL value for the salary and second record has a zero value for the salary.

    IDNameAgeSalaryCityCountry
    1Ramesh32HyderabadIndia
    2Mukesh4000.00New YorkUSA
    3Sumit454500.00MuscatOman

    SQL Constraints

    Constraints are the rules enforced on data columns on a table. These are used to limit the type of data that can go into a table. This ensures the accuracy and reliability of the data in the database.

    Constraints can either be column level or table level. Column level constraints are applied only to one column whereas, table level constraints are applied to the entire table.

    Following are some of the most commonly used constraints available in SQL −

    S.No.Constraints
    1NOT NULL ConstraintEnsures that a column cannot have a NULL value.
    2DEFAULT ConstraintProvides a default value for a column when none is specified.
    3UNIQUE KeyEnsures that all the values in a column are different.
    4PRIMARY KeyUniquely identifies each row/record in a database table.
    5FOREIGN KeyUniquely identifies a row/record in any another database table.
    6CHECK ConstraintEnsures that all values in a column satisfy certain conditions.
    7INDEX ConstraintUsed to create and retrieve data from the database very quickly.

    Data Integrity

    The following categories of data integrity exist with each RDBMS −

    • Entity Integrity − This ensures that there are no duplicate rows in a table.
    • Domain Integrity − Enforces valid entries for a given column by restricting the type, the format, or the range of values.
    • Referential integrity − Rows cannot be deleted, which are used by other records.
    • User-Defined Integrity − Enforces some specific business rules that do not fall into entity, domain or referential integrity.

    Database Normalization

    Database normalization is the process of efficiently organizing data in a database. There are two reasons of this normalization process −

    • Eliminating redundant data, for example, storing the same data in more than one table.
    • Ensuring data dependencies make sense.

    Both these reasons are worthy goals as they reduce the amount of space a database consumes and ensures that data is logically stored. Normalization consists of a series of guidelines that help guide you in creating a good database structure.

    Normalization guidelines are divided into normal forms; think of a form as the format or the way a database structure is laid out. The aim of normal forms is to organize the database structure, so that it complies with the rules of first normal form, then second normal form and finally the third normal form.

    It is your choice to take it further and go to the Fourth Normal Form, Fifth Normal Form and so on, but in general, the Third Normal Form is more than enough for a normal Database Application.

    • First Normal Form (1NF)
    • Second Normal Form (2NF)
    • Third Normal Form (3NF)
  • Overview

    What is SQL?

    SQL (Structured Query Language) is a language to operate databases; it includes Database Creation, Database Deletion, Fetching Data Rows, Modifying & Deleting Data rows, etc.

    SQL stands for Structured Query Language which is a computer language for storing, manipulating and retrieving data stored in a relational database. SQL was developed in the 1970s by IBM Computer Scientists and became a standard of the American National Standards Institute (ANSI) in 1986, and the International Organization for Standardization (ISO) in 1987.

    Though SQL is an ANSI (American National Standards Institute) standard language, but there are many different dialects of the SQL language like MS SQL Server is using T-SQL and Oracle is using PL/SQL.

    SQL is the standard language to communicate with Relational Database Systems. All the Relational Database Management Systems (RDMS) like MySQL, MS Access, Oracle, Sybase, Informix, Postgres and SQL Server use SQL as their Standard Database Language.

    Why SQL?

    SQL is widely popular because it offers the following advantages −

    • Allows users to access data in the relational database management systems.
    • Allows users to describe the data.
    • Allows users to define the data in a database and manipulate that data.
    • Allows to embed within other languages using SQL modules, libraries & pre-compilers.
    • Allows users to create and drop databases and tables.
    • Allows users to create view, stored procedure, functions in a database.
    • Allows users to set permissions on tables, procedures and views.

    A Brief History of SQL

    • 1970 − Dr. Edgar F. “Ted” Codd of IBM is known as the father of relational databases. He described a relational model for databases.
    • 1974 − Structured Query Language (SQL) appeared.
    • 1978 − IBM worked to develop Codd’s ideas and released a product named System/R.
    • 1986 − IBM developed the first prototype of relational database and standardized by ANSI. The first relational database was released by Relational Software which later came to be known as Oracle.
    • 1987 − SQL became the part of the International Organization for Standardization (ISO).

    How SQL Works?

    When you are executing an SQL command for any RDBMS, the system determines the best way to carry out your request and SQL engine figures out how to interpret the task.

    There are various components included in this process. These components are −

    • Query Dispatcher
    • Optimization Engines
    • Classic Query Engine
    • SQL Query Engine, etc.

    A classic query engine handles all the non-SQL queries, but a SQL query engine won’t handle logical files. Following is a simple diagram showing the SQL Architecture −

    SQL Architecture
  • Roadmap

    This Roadmap will guide you to master SQL. You will learn core concepts, techniques, and best practices by following mentioned topics. This step-by-step path will help you as a beginner.

    What is a Tutorial Roadmap?

    Tutorial Roadmap typically covers the journey from beginner to advanced user, including key concepts, practical applications, and best practices.

    SQL Roadmap

    This SQL roadmap is created to upgrade you from a SQL novice to a SQL expert. Whether you’re aspiring to become a data analyst, database administrator, or software developer, this comprehensive guide will provide a structured path to master SQL.

    SQL Roadmap

    SQL Basics

    RDBMS Concepts

    CREATE

    RDBMS Benefits

    SQL Database

    DROP

    SELECT

    RENAME

    SHOW

    BACKUP

    SQL Basic Syntax

    SQL Comment

    SQL Data Types

    SQL Operators

    SQL Expressions

    SQL Statements

    SELECT 

    INSERT

    DELETE

    UPDATE

    DATA Definition Language

    SQL Table

    CREATE

    RENAME

    SHOW

    TRUNCATE

    CLONE

    ALTER

    TEMPORARY

    DROP

    DELETE

    CONTRAINTS

    DATA Manipulation Language

    Aggregate Functions

    List of Aggregate Functions

    SUM

    COUNT

    AVG

    MIN

    MAX

    Indexes

    Advanced SQL

    JOIN Queries

    Create Index

    Drop Index

    Show Index

    Unique Index

    Clustered Index

    Non-Clustered Index

    Inner

    Left

    Full

    Right

    Cross

    Delete

    SQL Introduction

    SELECT

     FROM

    WHERE

      JOINS

    Wildcards

    Injection

    Hoisting

    Sub Queries

    Stored Procedures

    Transactions

    Auto Increment

    Handling Duplicates

    Data Constraints

    Primary

    Unique

    Check

    Foreign

    Not Null

    How SQL Roadmap Can help you?

    This roadmap provides a structured approach to mastering SQL. Remember, expertise comes from consistent practice, curiosity, and real-world problem-solving. Your journey from a beginner to an SQL expert is a marathon, not a sprint. So keep practicing and improve yourself.

  • SQL Tutorial

    Our SQL tutorial helps you learn SQL (Structured Query Language) in simple and easy steps so that you can start your database programming quickly. It covers most of the important concepts related to SQL for a basic to advanced understanding of SQL and to get a feel of how SQL works.

    SQL (Structured Query Language) is a programming language which is used to manage data stored in relational databases like MySQL, MS Access, SQL Server, Oracle, Sybase, Informix, Postgres etc.

    SQL is a database computer language designed for the retrieval and management of data in a relational databases like MySQL, MS Access, SQL Server, Oracle, Sybase, Informix, Postgres etc. SQL stands for Structured Query Language. SQL was developed in the 1970s by IBM Computer Scientists.

    SQL is not a database management system, but it is a query language which is used to store and retrieve the data from a database or in simple words SQL is a language that communicates with databases.

    SQL Examples

    Consider we have following CUSTOMERS table which stores customer’s ID, Name, Age, Salary, City and Country −

    IDNameAgeSalaryCityCountry
    1Ramesh322000.00MarylandUSA
    2Mukesh405000.00New YorkUSA
    3Sumit454500.00MuscatOman
    4Kaushik252500.00KolkataIndia
    5Hardik293500.00BhopalIndia
    6Komal383500.00SaharanpurIndia
    7Ayush253500.00DelhiIndia

    SQL makes it easy to manipulate this data using simple DML (Data Manipulation Language) Statements. For example, if we want to list down all the customers from USA then following will be the SQL query.

    SELECT*FROM CUSTOMERS WHERE country ='USA';

    This will produce the following result:

    IDNameAgeSalaryCityCountry
    1Ramesh322000.00MarylandUSA
    2Mukesh405000.00New YorkUSA

    SQL Online Editor

    We have provided SQL Online Editor which helps you to Edit and Execute the SQL code directly from your browser. Try to click the icon run button to run the following SQL code to be executed on CUSTOMERS table and print the records matching with the given condition.

    SELECT*FROM CUSTOMERS WHERE country ='USA';

    So now, you do not need to do a sophisticated setup to execute all the examples given in this tutorial because we are providing you Online SQL Editor, which allows you to edit your code and compile it online. You can try our Online SQL Editor.

    SQL Basic Commands

    We have a list of standard SQL commands to interact with relational databases, These commands are CREATE, SELECT, INSERT, UPDATE, DELETE, DROP and TRUNCATE and can be classified into the following groups based on their nature −

    Data Definition Language (DDL)

    A Data Definition Language (DDL) is a computer language which is used to create and modify the structure of database objects which include tables, views, schemas, and indexes etc.

    CommandDescriptionDemo
    CREATECreates a new table, a view of a table, or other object in the database.Demo
    ALTERModifies an existing database object, such as a table.Demo
    DROPDeletes an entire table, a view of a table or other objects in the database.Demo
    TRUNCATETruncates the entire table in a go.Demo

    Data Manipulation Language (DML)

    A Data Manipulation Language (DML) is a computer programming language which is used for adding, deleting, and modifying data in a database.

    CommandDescriptionDemo
    SELECTRetrieves certain records from one or more tables.Demo
    INSERTCreates a record.Demo
    UPDATEModifies records.Demo
    DELETEDeletes records.Demo

    Data Control Language (DCL)

    Data Control Language (DCL) is a computer programming language which is used to control access to data stored in a database.

    CommandDescriptionDemo
    GRANTGives a privilege to userDemo
    REVOKETakes back privileges granted from user.Demo

    Why to Learn SQL?

    SQL (Structured Query Language) is a MUST for the students and working professionals to become a great Software Engineer specially when they are working in Software Development Domain. SQL is the most common language used almost in every application software including banking, finance, education, security etc. to store and manipulate data.

    SQL is fairly easy to learn, so if you are starting to learn any programming language then it is very much advised that you should also learn SQL and other Database related concepts to become a complete Software Programmer. There are many good reasons which makes SQL as the first choice of any programmer −

    SQL is the standard language for any Relational Database System. All the Relational Data Base Management Systems (RDBMS) like MySQL, MS Access, Oracle, Sybase, Informix, Postgres and SQL Server use SQL as their standard database language.

    Also, software industry is using different dialects of SQL, such as −

    • MS SQL Server using T-SQL,
    • Oracle using PL/SQL,
    • MS Access version of SQL is called JET SQL (native format) etc.

    SQL Applications

    SQL is one of the most widely used Query Language over the databases. SQL provides following functionality to the database programmers −

    • Execute different database queries against a database.
    • Define the data in a database and manipulate that data.
    • Create data in a relational database management system.
    • Access data from the relational database management system.
    • Create and drop databases and tables.
    • Create and maintain database users.
    • Create view, stored procedure, functions in a database.
    • Set permissions on tables, procedures and views.

    Who Should Learn SQL

    This SQL tutorial will help both students as well as working professionals who want to develop applications based on some databases like banking systems, support systems, information systems, web websites, mobile apps or personal blogs etc. We recommend reading this tutorial, in the sequence listed in the left side menu.

    Today, SQL is an essential language to learn for anyone involved in the software applicatipon development process including Software Developers, Software Designers, and Project Managers etc.

    Prerequisites to Learn SQL

    Though we have tried our best to present the SQL concepts in a simple and easy way, still before you start learning SQL concepts given in this tutorial, it is assumed that you are already aware about some basic concepts of computer science, what is a database, especially the basics of RDBMS and associated concepts.

    This tutorial will give you enough understanding on the various concepts of SQL along with suitable examples so that you can start your Software Development journey immediately after finishing this tutorial.

    SQL Online Quizzes

    This SQL tutorial helps you prepare for technical interviews and certification exams. We have provided various quizzes and assignments to check your learning level. Given quizzes have multiple choice type of questions and their answers with short explanation.

    Following is a sample quiz, try to attempt any of the given answers:Show Answer

    Q 1 – The SQL programming language was developed by which of the following:

    A – Google in 1990s

    B – Microsoft in 1980s

    C – IBM in 1970s

    D – None of the Above

    Start your online quiz Start SQL Quiz.

    SQL Jobs and Opportunities

    SQL professionals are very much in high demand as the data turn out is increasing exponentially. Almost every major company is recruiting IT professionals having good experience with SQL.

    Average annual salary for a SQL professional is around $150,000. Though it can vary depending on the location. Following are the great companies who keep recruiting SQL professionals like Database Administrator (DBA), Database Developer, Database Testers, Data Scientist, ETL Developer, Database Migration Expert, Cloud Database Expert etc:

    • Google
    • Amazon
    • Netflix
    • Infosys
    • TCS
    • Tech Mahindra
    • Wipro
    • Pinterest
    • Uber
    • Trello
    • Many more…

    So, you could be the next potential employee for any of these major companies. We have developed a great learning material for SQL which will help you prepare for the technical interviews and certification exams based on SQL. So, start learning SQL using our simple and effective tutorial anywhere and anytime absolutely at your pace.

    Frequently Asked Questions about SQL

    There are some very Frequently Asked Questions(FAQ) about SQL, this section tries to answer them briefly.What are SQL skills?

    chevron

    What are the 5 different types of SQL?

    chevron

    How long should it take to learn SQL?

    chevron

    What are the benefits of using SQL over Excel?

    chevron

    How do I start learning SQL?

    chevron

    What are the 4 basic commands in SQL?

    chevron

    What are data types in SQL?

    chevron

    Which is the best place to learn SQL?