Search code examples
sqlsql-serverdatabasecreate-table

Creating several databases and inserting multiple values into them. SQL


I want to simultaneously create several tables in a database and insert values into them. I am using SQL Server Management Studio. That's my code:

CREATE DATABASE Movies
CREATE TABLE Directors (
    Id int PRIMARY KEY IDENTITY,
    DirectorName nvarchar(50) NOT NULL, 
    Notes nvarchar(1000)
    );
INSERT INTO Directors (DirectorName, Notes)
VALUES ('John', 'some notes'),
('John', 'some notes'),
('John', 'some notes'),
('John', 'some notes'),
('John', 'some notes');
CREATE TABLE Genres (
    Id int PRIMARY KEY IDENTITY,
    GenreName nvarchar(50) NOT NULL, 
    Notes nvarchar(1000)
    );
INSERT INTO Genres (GenreName, Notes)
VALUES ('drama', 'some notes'),
('drama', 'some notes'),
('drama', 'some notes'),
('drama', 'some notes'),
('drama', 'some notes');
CREATE TABLE Categories (
    Id int PRIMARY KEY IDENTITY,
    CategoryName nvarchar(50) NOT NULL, 
    Notes nvarchar(1000)
    );
INSERT INTO Categories (CategoryName, Notes)
VALUES ('Documentary', 'drama', 'some notes'),
('Documentary', 'drama', 'some notes'),
('Documentary', 'drama', 'some notes'),
('Documentary', 'drama', 'some notes'),
('Documentary', 'drama', 'some notes');
CREATE TABLE Movies (
    Id int PRIMARY KEY IDENTITY,
    Title nvarchar(50) NOT NULL, 
    DirectorId int NOT NULL,
    CopyrightYear date,
    Length int,
    GenreId int,
    CategoryId int,
    Rating int,
    Notes nvarchar(1000)
    );
INSERT INTO Movies (
    Title, 
    DirectorId,
    CopyrightYear,
    Length,
    GenreId,
    CategoryId,
    Rating,
    Notes )
VALUES ('Dumbo', 1, '1923-07-09', 180, 1, 1, 10, 'some notes'),
('Dumbo', 1, '1923-07-09', 180, 1, 1, 10, 'some notes'),
('Dumbo', 1, '1923-07-09', 180, 1, 1, 10, 'some notes'),
('Dumbo', 1, '1923-07-09', 180, 1, 1, 10, 'some notes'),
('Dumbo', 1, '1923-07-09', 180, 1, 1, 10, 'some notes');

And that's the error I get:

CREATE DATABASE permission denied in database 'master'.
An explicit value for the identity column in table 'Categories' can only be specified when a column list is used and IDENTITY_INSERT is ON.

I would be glad if someone explained the specifics of creating multiple tables and inserting values in all of them in the same statement.


Solution

  • You need to select the database after creating it by using the USE command. e.g.

        CREATE DATABASE Movies
    
    USE Movies -- You need this line to use the newly created database
    
        CREATE TABLE Directors (
            Id int PRIMARY KEY IDENTITY,
            DirectorName nvarchar(50) NOT NULL, 
            Notes nvarchar(1000)
            );
        INSERT INTO Directors (DirectorName, Notes)
        VALUES ('John', 'some notes'),
        ('John', 'some notes'),
        ('John', 'some notes'),
        ('John', 'some notes'),
        ('John', 'some notes');
        CREATE TABLE Genres (
            Id int PRIMARY KEY IDENTITY,
            GenreName nvarchar(50) NOT NULL, 
            Notes nvarchar(1000)
            );
        INSERT INTO Genres (GenreName, Notes)
        VALUES ('drama', 'some notes'),
        ('drama', 'some notes'),
        ('drama', 'some notes'),
        ('drama', 'some notes'),
        ('drama', 'some notes');
        CREATE TABLE Categories (
            Id int PRIMARY KEY IDENTITY,
            CategoryName nvarchar(50) NOT NULL, 
            Notes nvarchar(1000)
            );
        INSERT INTO Categories (CategoryName, Notes)
        VALUES ('Documentary', 'drama', 'some notes'),
        ('Documentary', 'drama', 'some notes'),
        ('Documentary', 'drama', 'some notes'),
        ('Documentary', 'drama', 'some notes'),
        ('Documentary', 'drama', 'some notes');
        CREATE TABLE Movies (
            Id int PRIMARY KEY IDENTITY,
            Title nvarchar(50) NOT NULL, 
            DirectorId int NOT NULL,
            CopyrightYear date,
            Length int,
            GenreId int,
            CategoryId int,
            Rating int,
            Notes nvarchar(1000)
            );
        INSERT INTO Movies (
            Title, 
            DirectorId,
            CopyrightYear,
            Length,
            GenreId,
            CategoryId,
            Rating,
            Notes )
        VALUES ('Dumbo', 1, '1923-07-09', 180, 1, 1, 10, 'some notes'),
        ('Dumbo', 1, '1923-07-09', 180, 1, 1, 10, 'some notes'),
        ('Dumbo', 1, '1923-07-09', 180, 1, 1, 10, 'some notes'),
        ('Dumbo', 1, '1923-07-09', 180, 1, 1, 10, 'some notes'),
        ('Dumbo', 1, '1923-07-09', 180, 1, 1, 10, 'some notes');