# Insert Commands

Let's assume that we want to insert a new movie into our database. We do this by saying we want to `INSERT INTO Movie`, we use the keyword values and we simply list the values we want to insert.

Like so:

```sql
INSERT INTO Movie VALUES(109, 'Cinderella', 1950);
```

In this query we are inserting values for the attributes of the `Movie` table. We included a `mID`, `Title`, and `Year`. We did not include a `Director`, so thus there will be a `null` value in the database for that attribute of Cinderella.

Now let's do a little more complicated insert command. Now that we have *Cinderella* in our database, lets add a few users into the `Review` table and have them rate the new movie. We're going to start by inserting two new users into the `User` table.

Like so:

```sql
INSERT INTO Review VALUES(209, 'Jonathan Murleau')
INSERT INTO Review VALUES(210, 'Barabara Vance');
```

We now have two new users but they have not yet rated on any movies, so let's have them rate on our new movie *Cinderella*.

We now want to return all users where there `mID` does not appear in the `Review` table. Like so:

```sql
SELECT *
FROM User
WHERE uID NOT IN (SELECT uID FROM Review);
```

Our query would be the result of the two users that we just inserted: Jonathan and Barbara. Well now that we have singled out the users who have not rated yet, lets insert those users into the `Review` table with the correct schema.

Like this:

```sql
INSERT INTO Review
SELECT uID, 109, 3, null
FROM User
WHERE uID NOT IN (SELECT uID FROM Review);
```

This query is saying to select all users who do not already appear in the `Review` table. We're going to take these users and we're going to select their `uID`, then we are going to assign them the correct values for all of the `Review` attributes. As a reminder, the `Review` table has the attributes: `uID`, `mID`, `Rating`, and `ratingDate`. So in our query we are selecting their `uID`, then having the rate the `mID` of 109 (which is the movie *Cinderella*), they both are going to rate the movie with a 3, and we inserted a `null` value for the `ratingDate`. Lastly, we are going to take this end result, and `INSERT INTO` the `Review` table.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hunter-ducharme.gitbook.io/sql-basics/data_modification_statements/insert_commands.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
