In RisingWave, the VALUES clause is used to generate one or more rows of data as a table expression. It is commonly used in SQL queries to create temporary tables or to insert data into a table.

The syntax of the VALUES clause in RisingWave is as follows:

VALUES (expression1, expression2, ...),
       (expression1, expression2, ...),
       ...

Here, each set of expressions enclosed in parentheses represents a row of data. The number of expressions must match the number of columns in the table or view being created.

When creating a view or materialized view, you can use the VALUES clause to construct a temporary table and assign that table to the view or materialized view. For example:

CREATE MATERIALIZED VIEW mv (id, name) AS VALUES (1, 'John'), (2, 'Jane'), (3, 'Bob');

The VALUES clause can also be used in more complex queries, such as subqueries or joins, to generate temporary tables or insert data into existing tables. For example:

CREATE MATERIALIZED VIEW join_mv AS
WITH info(number, job) AS (VALUES (1, 'Writer'), (2, 'Software Engineer'), (3, 'Accountant')) 
SELECT * FROM mv JOIN info ON mv.id = info.number;

To see the values in join_mv:

SELECT * FROM join_mv;
-- Results
 id | name | number |        job        
----+------+--------+-------------------
  2 | Jane |      2 | Software Engineer
  3 | Bob  |      3 | Accountant
  1 | John |      1 | Writer