PostgreSQL - VIEWS ( Postgres view is a virtual table in Postgres).pptx
PostgreSQL views are virtual tables that represent the results of a query. They do not store data themselves but provide a named, reusable abstraction over one or more underlying tables or even other views.
2 1. PostgreSQL –VIEWS: An Introduction • Views are pseudo-tables. • That is, they are not real tables; nevertheless appear as ordinary tables to SELECT. • A view can represent a subset of a real table, selecting certain columns or certain rows from an ordinary table. • A view can even represent joined tables. • Because views are assigned separate permissions, you can use them to restrict table access so that the users see only specific rows or columns of a table.
3.
3 1. PostgreSQL –VIEWS: An Introduction … • A view can contain all rows of a table or selected rows from one or more tables. • A view can be created from one or many tables, which depends on the written PostgreSQL query to create a view. • Views, which are kind of virtual tables, allow users to do the following − • Structure data in a way that users or classes of users find natural or intuitive. • Restrict access to the data such that a user can only see limited data instead of complete table. • Summarize data from various tables, which can be used to generate reports. • Since views are not ordinary tables, you may not be able to execute a DELETE, INSERT, or UPDATE statement on a view. • However, you can create a RULE to correct this problem of using DELETE, INSERT or UPDATE on a view.
4.
4 1.1 Creating Views •The PostgreSQL views are created using the CREATE VIEW statement. • The PostgreSQL views can be created from a single table, multiple tables, or another view. • The basic CREATE VIEW syntax is as follows − • You can include multiple tables in your SELECT statement in very similar way as you use them in normal PostgreSQL SELECT query. • If the optional TEMP or TEMPORARY keyword is present, the view will be created in the temporary space. • Temporary views are automatically dropped at the end of the current session. CREATE [TEMP | TEMPORARY] VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE [condition];
5.
5 1.1 Creating Views:Example • Consider, the COMPANY table is having the following records −
6.
6 1.1 Creating Views:Example … • Now, following is an example to create a view from COMPANY table. • This view would be used to have only few columns from COMPANY table − • Now, you can query COMPANY_VIEW in a similar way as you query an actual table. Following is the example − • This would produce the following result − CREATE VIEW COMPANY_VIEW AS SELECT ID, NAME, AGE FROM COMPANY; SELECT * FROM COMPANY_VIEW;
8 1.2 Update VIEW •You can modify the definition of a VIEW in PostgreSQL without dropping it by using the CREATE OR REPLACE VIEW Statement. • Syntax :The syntax for the CREATE OR REPLACE VIEW statement in PostgreSQL is: • Where, view_name The name of the view that you wish to update. CREATE OR REPLACE VIEW view_name AS SELECT columns FROM table WHERE conditions;
9.
9 1.2 Update VIEW… • Example :Here is an example of how you would use the CREATE OR REPLACE VIEW statement in PostgreSQL: • This CREATE OR REPLACE VIEW example would update the definition of the VIEW called current_inventory without dropping it. CREATE or REPLACE VIEW current_inventory AS SELECT product_name, quantity, category_name FROM products INNER JOIN categories ON products.category_id = categories.category_id WHERE quantity > 0;
10.
10 1.3 Dropping VIEWS •To drop a view, simply use the DROP VIEW statement with the view_name. • The basic DROP VIEW syntax is as follows − • The following command will delete COMPANY_VIEW view, which we created in the last section − DROP VIEW view_name; DROP VIEW COMPANY_VIEW;
11.
11 1.4 Types ofView • There are two types of view, • Simple View • Complex View Simple View Complex View • Created from one table • Created from one or more table • Does not contain functions • Contain functions • Does not contain groups of data • Contains groups of data
12.
12 2. What isa sequence ? • A sequence is simply a list of numbers, in which their orders are important. • For example, the {1,2,3} is a sequence while the {3,2,1} is an entirely different sequence. • In SQL Server, a sequence is a user-defined schema-bound object that generates a sequence of numbers according to a specified specification. • A sequence of numeric values can be in ascending or descending order at a defined interval and may cycle if requested.
13.
13 2. What isa sequence ? … • Sequence is a feature supported by some database systems to produce unique values on demand. • Some DBMS like MySQL supports AUTO_INCREMENT in place of Sequence. • AUTO_INCREMENT is applied on columns, it automatically increments the column value by 1 each time a new record is inserted into the table. • Sequence is also some what similar to AUTO_INCREMENT but it has some additional features too.
14.
14 2.1 How DoI Use A Sequence In A Table? • Sequences are most commonly used via the serial pseudotype. • A serial is a special data type that encodes the following information: it indicates that the values for the column will be generated by consulting the sequence therefore, it creates a new sequence object, and sets the default value for the column to be the next value produced by the sequence since a sequence always produces non-NULL values, it adds a NOT NULL constraint to the column since the sequence that is produced is created "behind the scenes", PostgreSQL assumes that the sequence is only used to generate values for the table containing the serial column. Therefore, if this column is dropped, the sequence will be automatically removed.
15.
15 2.2 Sequence :Syntax CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ] [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ] [ OWNED BY { table_name.column_name | NONE } ]
16.
16 2.2 Sequence :Syntax … Option Description TEMPORARY or TEMP • If specified, the sequence object is created only for this session and is automatically dropped on session exit. name • The name of the sequence to be created. increment • The optional clause INCREMENT BY increment specifies which value is added to the current sequence value to create a new value. • A positive value will make an ascending sequence, a negative one a descending sequence. • The default value is 1. minvalue NO MINVALUE • The optional clause MINVALUE minvalue determines the minimum value a sequence can generate. • If NO MINVALUE is specified, then defaults will be used. • The defaults are 1 and -263-1 for ascending and descending sequences, respectively. maxvalue NO MAXVALUE • The optional clause MAXVALUE maxvalue determines the maximum value for the sequence. • If NO MAXVALUE is specified, then default values will be used. • The defaults are 263-1 and -1 for ascending and descending sequences, respectively.
17.
17 2.2 Sequence :Syntax … Option Description start • The optional clause START WITH start allows the sequence to begin anywhere. • The default starting value is minvalue for ascending sequences and maxvalue for descending ones. cache • The optional clause CACHE cache specifies how many sequence numbers are to be preallocated and stored in memory for faster access. • The minimum value is 1which is also the default. CYCLE NO CYCLE • The CYCLE option allows the sequence to wrap around when the maxvalue or minvalue has been reached by an ascending or descending sequence respectively. • If the limit is reached, the next number generated will be the minvalue or maxvalue, respectively. • For NO CYCLE, any calls to nextval after the sequence has reached its maximum value will return an error. • NO CYCLE is the default. OWNED BY table_name.colum n_name OWNED BY NONE • The OWNED BY option causes the sequence to be associated with a specific table column, such that if that column (or its whole table) is dropped, the sequence will be automatically dropped as well. • The specified table must have the same owner and be in the same schema as the sequence. • OWNED BY NONE, the default, specifies that there is no such association.
18.
18 2.3 Drop aSequence: • Use DROP SEQUENCE to remove a sequence.
20 2.4 Examples … •Select the next number from this sequence: • Sample Output: • Select the next number from this sequence : • Sample Output: • Note: Here nextval() function is used to get the next value instead of the standard's NEXT VALUE FOR expression.
21.
21 2.4 Examples … •Let use this sequence in an INSERT command: • Now use the above sequence in an INSERT command : • Sample table 'test': • Sample Output:
24 2.5 Alter theSequence: • To alter the sequence so that IDs start a different number, you can't just do an update, you have to use the alter sequence command. • When you're truncating a table, you can truncate and restart IDs from 1 in one command: alter sequence idno restart with 1000; truncate test restart identity;