In this SQL Server tutorial, we will understand the difference between table and view in SQL Server. Moreover, we will also discuss the following topics in this tutorial.
- Is a view a table in SQL Server?
- Which is faster view or table in SQL Server?
- Why do we use views instead of tables?
- Difference between table and view in SQL Server
- Difference between a temp table and view in SQL Server
- Difference between view and table-valued function in SQL Server
- List of tables and views in SQL Server
- SQL Server table and view with same name
- SQL Server table vs view performance
- SQL Server join table and view
- SQL Server foreign key between table and view
Is a view a table in SQL Server?
A view in SQL Server is just like a virtual table created from a result set of a SQL query. A view similar to the table also has columns and rows. Moreover, we can create a view using SQL statements and functions, and it portrays data as if it came from a single table.
But remember, a view is not an actual table as it does not exist in any physical location. A view is just a SQL statement stored in a database with a specific name. On the other hand, a table in SQL Server is a physical database object in which data is physically recorded.
For more details, refer to the respective tutorials on the table and view in SQL Server.
Which is faster view or table in SQL Server?
A view in SQL Server is a virtual entity, and it renders the data from the table every time we query it. Due to this reason, a view produces slow results as compared to a table in SQL Server.
On the other hand, a table in SQL Server is a physical entity of a database, and data is actually stored in it. Due to this reason, a table might render fast results as compared to a view.
However, to make a view run faster, we can create an indexed view in SQL Server. Now, an indexed view in SQL Server is created by adding a unique, clustered index to a view.
Also, check: How to use union in view SQL Server
Why do we use views instead of tables in SQL Server?
A view in SQL Server offers different advantages over a table. Let’s take a look at these advantages to understand why do we use views instead of tables in SQL Server.
- A view in SQL Server helps to represent a subset of the data from a table.
- A view in SQL Server also provides a security mechanism. It can limit the extent to which the underlying table is exposed to the outside world. For example, a user can be allowed to query the view but not the whole of the base table.
- A view in SQL Server also helps to simplify and personalize each user’s perception of the database. Because a view can join results from multiple tables into a single virtual table.
- In SQL Server, views are also useful in aggregating tables and data (sum, average, and so on) and display the generated results alongside the data.
- Views are also helpful in hiding data complexity. For example, a view provides columns from multiple tables, transparently splitting the underlying table.
- A view in a SQL Server is just a SQL statement, and it does not take much space in a database.
Read: View SQL Server Error Logs
Difference between table and view in SQL Server
The terms table and view are quite common in SQL Server or any other relational database. Now, both tables and views in SQL Server have some similarities but, they are not the same.
- The primary distinction is that a table is an object made up of rows and columns. And it is mainly used to store and retrieve data whenever the user requires it.
- The view, on the other hand, is a virtual table based on the result set of a SQL statement that will be lost when the current session ends.
Let’s discuss what are tables and views based on a variety of factors in this section.
Tables in SQL Server
A Table in SQL Server is defined as a database object which is used to store data in a database. Tables stores data in a logically organized row-column format much similar to how we store data in a spreadsheet.
Moreover, we can also control the type of data and also a range of data to be accepted by the table, by assigning properties to the table and the columns within the table.
Views in SQL Server
A VIEW in SQL Server is just like a virtual table that holds data from one or more than one table. A view includes a set of SQL queries for retrieving data from the database. And it does not even exist in the database physically.
However, in the end, it is just the set of SQL statements stored in a database with a specified name. A view in SQL Server does not hold any actual data, it is just a reference to table data.
Comparison Table
Property | Table | View |
---|---|---|
Definition | A Table is defined as a database object which is used to store data in a database. Tables stores data in a logically organized row-column format. | A View is just like a virtual table that holds data from one or more than one table. A view includes a set of SQL queries for retrieving data from the database. |
Existence | Tables in SQL Server physical entities and are actually stored in a database. | Views in SQL Server are logical entities and not actually stored in a database. |
Job | The main task of a table is to store data in a row-column format. | The main task of a view is to retrieve data and hide the complexity. |
Speed | As tables are physical objects, they provide fast results. | As views refer to tables for data, they provide slow results. |
Relation | Tables in SQL Server are independent in nature. Until it’s a relational table. | Views in SQL Server depend upon tables to get results. |
DML operations | In SQL Server, we can perform DML operations on tables. | We also perform some DML operations on view. But, eventually, the changes are made in the underlying table. |
Also, read: Create a table from view in SQL Server
List of tables and views in SQL Server
In this section, we will understand how to get a list of tables and views in SQL Server. Now, in SQL Server, there is a variety of methods to either list tables or list views from a database. Here we will illustrate some of the promising methods
1. List tables in SQL Server
The simplest way to list all the tables in SQL Server is to use the system information catalog view. And in this case, the view name is INFORMATION_SCHEMA.TABLES.
The INFORMATION_SCHEMA.TABLES is a system view in SQL Server that holds information related to all the tables and views in a database. And we can easily query it, to list all the tables. The example for this implementation is given below.
USE [sqlserverguides]
GO
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
GO
In the above example, we are listing all the tables in the sqlserverguides database. And the sample output of this example is shown in the image below.

The list of tables represents all the tables under the specified database. For example, USA_Table, Customer_1, etc.
2. List views in SQL Server
Again, to list all the views in SQL Server, we will use the same INFORMATION_SCHEMA.TABLES catalog view. But, this time, we need to slightly update our query.
USE [sqlserverguides]
GO
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='VIEW'
GO
So, instead of specifying TABLE_TYPE as ‘BASE TABLE‘, we need to specify it as ‘VIEW‘. And the query will return the list of views created in the sqlserverguides database. Here is the sample output.

The list of views represents all the views under the specified database. For example, USA_CustomerView, US_CityView, etc.
Read: SQL Server view order by
Difference between a temp table and view in SQL Server
Views in a relational database, such as SQL Server, allow users to deal with specific sections from the whole schema. On the other hand, temporary tables are also an alternative to presenting end-users with a subset of data from base tables.
Somehow these entities appear to be similar methods of accomplishing the same goal at first glance. As a result, knowing the difference between a view and a temp table is vital.
- A temporary table in SQL Server is just like a database table, but it always comes under the tempdb database. Moreover, it exists only as long as the database session is active. And we need to use the INSERT statement at the start of each session to add some data.
- On the other hand, a view in SQL Server is stored as a SQL query rather than with data. Moreover, views exist just for a single query, and they are regenerated from current data each time.
- While a temp table exists for the duration of the database session and once populated, it keeps the records until the session expires.
- As views in SQL Server are dynamically generated, the data in a view is always current. While the data in a temp table reflects the status of the database at the moment it was populated.
- Moreover, temp tables are truly base tables and can be changed in the same manner as base tables. But, only particular views can be used for DML operations.
Read: How to see view definition in SQL Server
Difference between view and table-valued function in SQL Server
In SQL Server, table-valued functions and views are completely different entities.
A table-valued function in SQL Server is a user-defined function that accepts zero or more parameters and returns a table variable. Moreover, it also allows users to query the result of the function. On the other hand, a view is just a SQL statement with a name.
Moreover, a table-valued UDF in SQL Server can be further classified into 2 types.
- Inline Table-Valued Function
- Multi-Statement Table Valued Function
Let’s understand the difference between view and different table-valued functions in SQL Server using the following comparison table.
Property | Inline TVF | Multi-statement TVF | View |
---|---|---|---|
Definition | This function is a type of user-defined function that only consists of one statement. (SELECT) | This function is also a type of user-defined function that consists of multiple statements | A View is a virtual table that holds data from one or more than one table. A view includes a set of SQL queries for retrieving data from the database. |
Return Type | It returns a query’s result | It returns a table variable as a result | It also returns a query’s result |
Parameters | This function can accept parameters | This function can also accept parameters | A view does not accept any parameter. |
Updatable | Yes, this type of function is updatable | Yes, this type of function is updatable | Yes, views are also updatable in SQL Server. |
Triggers | No, it does not support the use of triggers | No, it does not support the use of triggers | Yes, views support the use of triggers |
Multiple Statements | No, it can only have one statement | Yes, it can have multiple statements | No, views cannot have multiple statements |
Read: How to delete a view in SQL Server
SQL Server table and view with same name
In SQL Server, we cannot create a table and a view with the same name because the table and view both share the same namespace. And if we try to do so, then SQL Server will return an error indication object already exists.
USE [sqlserverguides]
GO
CREATE TABLE UnitedStates( --Creating table
id INT,
city VARCHAR(50),
);
INSERT INTO UnitedStates (id, city) VALUES (1, 'New York');
INSERT INTO UnitedStates (id, city) VALUES (2, 'Chicago');
INSERT INTO UnitedStates (id, city) VALUES (3, 'Boston');
GO
CREATE VIEW UnitedStates --Creating view
AS
SELECT * FROM UnitedStates
In the above example, first, we are creating a table in SQL Server with the name UnitedStates. After this, we were trying to create a view with the same name. But, SQL Server will return the following error.

Read: Arithmetic operators in SQL Server
SQL Server table vs view performance
Now, if a view and a table follow the same structure then a view might perform slower as compared to a table itself. This is because when querying a view, first, it refers to a table and then, it returns the result.
On the other hand, if we query a table directly then, it will produce results more efficiently as compared to a view.
However, we can improve the overall performance of both a view and a table in SQL Server by adding an index. For more details refer to Indexed views in SQL Server.
SQL Server join table and view
In this section, we will understand how to perform a join between a table and view in SQL Server. Yes, you read it write, in SQL Server, we can perform a join even between a table and view.
Let’s understand the whole implementation using an example in SQL Server. And for this, consider the following view and table.


Further, we will use this view and table to perform an inner join between them and get the required result.
USE [sqlserverguides]
GO
SELECT Customers.id, OrderView.order_id, Customers.customer_name, Customers.country
FROM Customers
INNER JOIN OrderView
ON Customers.id=OrderView.customer_id
GO
In the above query, we are performing an inner join between the Customers table and the OrderView view. In the end, we will get the following result.

Read: SQL Server stored procedure case statement
SQL Server foreign key between table and view
In SQL Server, we cannot create a foreign key relationship between a table and a view. The foreign key relationship can only be created between two or more tables in SQL Server. As views in SQL Server are just virtual tables, in the end, they are just a SQL statement. So, we cannot use it for the foreign keys in SQL Server.
You may also like to read the following tutorials on SQL Server.
- How to call a view in SQL Server
- How to check if SQL Server is running
- How to get list of users in SQL Server
- SQL Server check user permissions on table
So, in this tutorial, we have understood the difference between table and view in SQL Server. Moreover, we have also discussed the following topics in this tutorial.
- Is a view a table in SQL Server?
- Which is faster view or table in SQL Server?
- Why do we use views instead of tables?
- Difference between table and view in SQL Server
- Difference between a temp table and view in SQL Server
- Difference between view and table-valued function in SQL Server
- List of tables and views in SQL Server
- SQL Server table and view with same name
- SQL Server table vs view performance
- SQL Server join table and view
- SQL Server foreign key between table and view
I am Bijay having more than 15 years of experience in the Software Industry. During this time, I have worked on MariaDB and used it in a lot of projects. Most of our readers are from the United States, Canada, United Kingdom, Australia, New Zealand, etc.
Want to learn MariaDB? Check out all the articles and tutorials that I wrote on MariaDB. Also, I am a Microsoft MVP.