在一个查询中创建所有数据库“物”

时间:2019-02-09 10:36:15

标签: sql sql-server tsql

因此,我设计了一个“ CD shop数据库”,并尝试为其所有元素编写一个查询,但是由于某种原因,我无法在一个查询中创建表并将表添加到该数据库。这是我的查询:

    CREATE DATABASE CDCI
ON PRIMARY(
    Name = cddukkan_data,
    FileName = 'C:\Program Files\Microsoft SQL Server\MSSQL14.VERITABANIM\MSSQL\DATA\cdci.mdf',
    Size = 16 MB,
    FileGrowth = 1 MB,
    MaxSize = 1 GB
)
LOG ON(
    Name = cddukkan_log,
    FileName = 'C:\Program Files\Microsoft SQL Server\MSSQL14.VERITABANIM\MSSQL\DATA\cdci.ldf',
    Size = 8 MB,
    FileGrowth = 5%,
    MaxSize = 512 MB
)
USE CDCI >An error occurs here
GO
CREATE TABLE Turler(
    TurID INT IDENTITY(1, 1) NOT NULL,
    TurAdi NVARCHAR(10) NOT NULL,
    PRIMARY KEY(TurID),
    UNIQUE(TurID)
)
CREATE TABLE Yonetmenler(
    YonetmenID INT IDENTITY(1, 1) NOT NULL,
    YonetmenAdi NVARCHAR(10) NOT NULL,
    YonetmenSoyadi NVARCHAR(10) NULL,
    DogumYili NCHAR(4),
    CONSTRAINT DogumYili CHECK(DogumYili LIKE '19__' OR (DogumYili LIKE '20__' AND DogumYili < (YEAR(GETDATE()) - 18))),
    Cinsiyet NCHAR(5), 
    CONSTRAINT Cinsiyet CHECK(Cinsiyet LIKE '[Ee]%' OR Cinsiyet LIKE '[Kk]%'),
    PRIMARY KEY(YonetmenID),
    UNIQUE(YonetmenID) 
)
CREATE TABLE Raflar(
    RafID INT IDENTITY(1, 1) NOT NULL,
    RafTuru INT FOREIGN KEY REFERENCES Turler(TurID) NOT NULL,
    PRIMARY KEY(RafID),
    UNIQUE(RafID)
)
CREATE TABLE Filmler(
    FilmID INT IDENTITY(1, 1) NOT NULL,
    FilmAdi NVARCHAR(10) NOT NULL,
    TurID INT FOREIGN KEY REFERENCES Turler(TurID) NOT NULL,
    YonetmenID INT FOREIGN KEY REFERENCES Yonetmenler(YonetmenID) NOT NULL,
    RafID INT FOREIGN KEY REFERENCES Raflar(RafID) NOT NULL,
    Fiyat MONEY NOT NULL,
    PRIMARY KEY(FilmID),
    UNIQUE(FilmID)
)
CREATE TABLE Musteriler(
    MusteriID INT IDENTITY(1, 1) NOT NULL,
    MusteriAdi NVARCHAR(10) NOT NULL,
    MusteriSoyadi NVARCHAR(10) NOT NULL,
    Adresi NVARCHAR(20),
    Telefon NVARCHAR(10),
    CONSTRAINT Telefon CHECK(Telefon NOT LIKE '0%'),
    PRIMARY KEY(MusteriID)
)
CREATE TABLE Oyuncular(
    OyuncuID INT IDENTITY(1, 1) NOT NULL,
    OyuncuAdi NVARCHAR(10) NOT NULL,
    OyuncuSoyadi NVARCHAR(10) NULL,
    DogumYili NCHAR(4),
    CONSTRAINT DogumYili CHECK(DogumYili LIKE '19%' OR DogumYili < YEAR(GETDATE())),
    PRIMARY KEY(OyuncuID),
    UNIQUE(OyuncuID)
)
CREATE TABLE Satislar(
    SatisID INT IDENTITY(1, 1) NOT NULL,
    FilmID INT FOREIGN KEY REFERENCES Filmler(FilmID) NOT NULL,
    MusteriID INT FOREIGN KEY REFERENCES Musteriler(MusteriID) NOT NULL,
    SatisAdedi INT NOT NULL
)
CREATE TABLE FilmOyuncu(
    FilmID INT FOREIGN KEY REFERENCES Filmler(FilmID) NOT NULL,
    OyuncuID INT FOREIGN KEY REFERENCES Oyuncular(OyuncuID) NOT NULL
)
USE CDCI >An error occurs here
GO
CREATE TRIGGER [TelefonKontrol]
ON [Musteriler]
FOR INSERT
AS
DECLARE @tel NVARCHAR(10)
SELECT @tel = Telefon FROM INSERTED 
IF @tel LIKE '0%'
    BEGIN
    PRINT 'Lütfen telefon numarasýný baþýna 0 rakamý koymayýnýz.'
    ROLLBACK TRAN
END
GO
CREATE TRIGGER [FilmRafTuruUyumu]
ON [Filmler]
FOR INSERT
AS
    DECLARE @filmTuru NVARCHAR(10)
    DECLARE @rafTuru NVARCHAR(10)
    DECLARE @rafID NVARCHAR(10)
        SELECT @rafID = RafID FROM INSERTED
        SELECT @filmTuru = TurID FROM INSERTED
        SELECT @rafTuru = Raflar.RafTuru FROM INSERTED 
        INNER JOIN Raflar ON Raflar.RafID = @rafID
IF @rafTuru <> @filmTuru
    BEGIN
    PRINT 'Lütfen film uygun rafa yerleþtiriniz!'
    ROLLBACK TRAN
END
GO

注意我对Database知识并不陌生,因为我得到了其中的一些课程,但这些课程都是非常基础的课程和基于理论的课程。因此,您可以将我视为“入门者”。任何帮助提示建议都可以使用!

1 个答案:

答案 0 :(得分:1)

您需要检查mdf和ldf文件的位置路径。

     CREATE DATABASE CDCI
    ON PRIMARY(
        Name = cddukkan_data,
        FileName = 'C:\Program Files\Microsoft SQL Server\MSSQL14.VERITABANIM\MSSQL\DATA\cdci.mdf',
        Size = 16 MB,
        FileGrowth = 1 MB,
        MaxSize = 1 GB
    )
    LOG ON(
        Name = cddukkan_log,
        FileName = 'C:\Program Files\Microsoft SQL Server\MSSQL14.VERITABANIM\MSSQL\DATA\cdci.ldf',
        Size = 8 MB,
        FileGrowth = 5%,
        MaxSize = 512 MB
    )
    go
    USE CDCI    -->An error occurs here
    GO
    CREATE TABLE Turler(
        TurID INT IDENTITY(1, 1) NOT NULL,
        TurAdi NVARCHAR(10) NOT NULL,
        PRIMARY KEY(TurID),
        UNIQUE(TurID)
    )
    CREATE TABLE Yonetmenler(
        YonetmenID INT IDENTITY(1, 1) NOT NULL,
        YonetmenAdi NVARCHAR(10) NOT NULL,
        YonetmenSoyadi NVARCHAR(10) NULL,
        DogumYili NCHAR(4),
        CONSTRAINT DogumYili CHECK(DogumYili LIKE '19__' OR (DogumYili LIKE '20__' AND DogumYili < (YEAR(GETDATE()) - 18))),
        Cinsiyet NCHAR(5), 
        CONSTRAINT Cinsiyet CHECK(Cinsiyet LIKE '[Ee]%' OR Cinsiyet LIKE '[Kk]%'),
        PRIMARY KEY(YonetmenID),
        UNIQUE(YonetmenID) 
    )
    CREATE TABLE Raflar(
        RafID INT IDENTITY(1, 1) NOT NULL,
        RafTuru INT FOREIGN KEY REFERENCES Turler(TurID) NOT NULL,
        PRIMARY KEY(RafID),
        UNIQUE(RafID)
    )
    CREATE TABLE Filmler(
        FilmID INT IDENTITY(1, 1) NOT NULL,
        FilmAdi NVARCHAR(10) NOT NULL,
        TurID INT FOREIGN KEY REFERENCES Turler(TurID) NOT NULL,
        YonetmenID INT FOREIGN KEY REFERENCES Yonetmenler(YonetmenID) NOT NULL,
        RafID INT FOREIGN KEY REFERENCES Raflar(RafID) NOT NULL,
        Fiyat MONEY NOT NULL,
        PRIMARY KEY(FilmID),
        UNIQUE(FilmID)
    )
    CREATE TABLE Musteriler(
        MusteriID INT IDENTITY(1, 1) NOT NULL,
        MusteriAdi NVARCHAR(10) NOT NULL,
        MusteriSoyadi NVARCHAR(10) NOT NULL,
        Adresi NVARCHAR(20),
        Telefon NVARCHAR(10),
        CONSTRAINT Telefon CHECK(Telefon NOT LIKE '0%'),
        PRIMARY KEY(MusteriID)
    )
    CREATE TABLE Oyuncular(
        OyuncuID INT IDENTITY(1, 1) NOT NULL,
        OyuncuAdi NVARCHAR(10) NOT NULL,
        OyuncuSoyadi NVARCHAR(10) NULL,
        DogumYili NCHAR(4),
        CONSTRAINT DogumYili CHECK(DogumYili LIKE '19%' OR DogumYili < YEAR(GETDATE())),
        PRIMARY KEY(OyuncuID),
        UNIQUE(OyuncuID)
    )
    CREATE TABLE Satislar(
        SatisID INT IDENTITY(1, 1) NOT NULL,
        FilmID INT FOREIGN KEY REFERENCES Filmler(FilmID) NOT NULL,
        MusteriID INT FOREIGN KEY REFERENCES Musteriler(MusteriID) NOT NULL,
        SatisAdedi INT NOT NULL
    )
    CREATE TABLE FilmOyuncu(
        FilmID INT FOREIGN KEY REFERENCES Filmler(FilmID) NOT NULL,
        OyuncuID INT FOREIGN KEY REFERENCES Oyuncular(OyuncuID) NOT NULL
    )
    USE CDCI -->An error occurs here
    GO
    CREATE TRIGGER [TelefonKontrol]
    ON [Musteriler]
    FOR INSERT
    AS
    DECLARE @tel NVARCHAR(10)
    SELECT @tel = Telefon FROM INSERTED 
    IF @tel LIKE '0%'
        BEGIN
        PRINT 'Lütfen telefon numarasýný baþýna 0 rakamý koymayýnýz.'
        ROLLBACK TRAN
    END
    GO
    CREATE TRIGGER [FilmRafTuruUyumu]
    ON [Filmler]
    FOR INSERT
    AS
        DECLARE @filmTuru NVARCHAR(10)
        DECLARE @rafTuru NVARCHAR(10)
        DECLARE @rafID NVARCHAR(10)
            SELECT @rafID = RafID FROM INSERTED
            SELECT @filmTuru = TurID FROM INSERTED
            SELECT @rafTuru = Raflar.RafTuru FROM INSERTED 
            INNER JOIN Raflar ON Raflar.RafID = @rafID
    IF @rafTuru <> @filmTuru
        BEGIN
        PRINT 'Lütfen film uygun rafa yerleþtiriniz!'
        ROLLBACK TRAN
    END
    GO