Sql server 在尝试用SQL测试数据库时,正确的过程是什么?

Sql server 在尝试用SQL测试数据库时,正确的过程是什么?,sql-server,Sql Server,我对数据库非常陌生,我完成了一项任务,我必须查看合并的实体关系图,然后创建删除表、表(带有约束和标识)、更改和索引。我很确定我已经正确地编写了所有的代码,但我唯一有点不确定的地方是,如何测试数据库在执行时是否真正起作用。我的指导老师给了我一个TestData.sql文件,我只需要引用数据库,然后执行它,它应该将所有数据插入表中,并正确地删除所有内容。我已经在SQLServerManagementStudio上正确地连接了所有这些,但是我忘记了为了测试表的正确执行应该采取哪些步骤。我会发布我的一些

我对数据库非常陌生,我完成了一项任务,我必须查看合并的实体关系图,然后创建删除表、表(带有约束和标识)、更改和索引。我很确定我已经正确地编写了所有的代码,但我唯一有点不确定的地方是,如何测试数据库在执行时是否真正起作用。我的指导老师给了我一个TestData.sql文件,我只需要引用数据库,然后执行它,它应该将所有数据插入表中,并正确地删除所有内容。我已经在SQLServerManagementStudio上正确地连接了所有这些,但是我忘记了为了测试表的正确执行应该采取哪些步骤。我会发布我的一些代码,你们可以看看。任何关于这个问题的信息都将不胜感激

此外,当它在测试数据SQL代码中说“重要!如果需要多次运行此脚本,则必须先删除并重新创建表以重置标识属性。”--这是否意味着如果我在尝试执行测试数据时遇到任何错误,我必须先执行DROP表,然后将所有表复制并粘贴回数据库文件?我实际上不需要再次手动键入所有表,只需要将它们重新输入为“新”,这样系统就会重置它的标识属性

如果你们需要我发布更多的代码来澄清,请告诉我。感谢您抽出时间阅读本文:)

更新:我在尝试执行TestData脚本时收到两条错误消息:“无效对象名'SaleDetail.”和“无效对象名'Author.”。我还提供了数据库脚本文件中的其余代码供您查看。我几乎可以肯定一切都是正确的

数据库表代码(这是完整的代码脚本)


我不知道你在问什么?你需要帮助的是什么?抱歉说得含糊不清,我不知道该怎么问这个问题。在创建数据库之后,您需要确保数据将实际填充到表中,对吗?我有两个独立的文件-一个是数据库,另一个是测试数据。我只是问你如何确保你的数据库正常工作。我相信我已经正确地将数据库引用到了测试数据中,但是我想知道为了测试数据库,我必须首先突出显示并执行哪些区域。我只需要确保数据库实际上正在填充表并删除它们,我只需要将所有这些移到一起。并删除delete语句。然后它将总是构建新表。这些表很小,所以十几次插入都需要几毫秒的时间。好吧,这只是因为我的讲师希望我们按照现在的方式使用这个测试数据脚本。它将删除所有旧数据并插入新数据。我已经执行了几次,它给了我一些我不太理解的错误信息。我将用剩下的代码更新我的帖子,并包含错误消息。任何指导都会很好!看着这个问题,我意识到它太模糊了,太愚蠢了。我道歉。我将尝试打破这一点,并将重新张贴,如果需要的话。无论如何谢谢你!
USE Lab2A_BooksGalore
 GO

 /*------ Drop Table Statements ------*/

 IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'SaleDetail')
    DROP TABLE SaleDetail
 IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'AuthorTitle')
    DROP TABLE AuthorTitle
 IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Title')
    DROP TABLE Title
 IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Publisher')
    DROP TABLE Publisher
 IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Category')
    DROP TABLE Category
 IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Author')
    DROP TABLE Author
 IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Sale')
    DROP TABLE Sale
 IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Employee')
    DROP TABLE Employee
 IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Customer')
    DROP TABLE Customer

 /*------- Create Table Statements -------*/

 CREATE TABLE Customer
 (
    CustomerNumber      int
        CONSTRAINT PK_Customer_CustomerNumber
            PRIMARY KEY
        IDENTITY (1, 1)                     NOT NULL,
    LastName            varchar(30)         NOT NULL,
    FirstName           varchar(30)         NOT NULL,
    [Address]           varchar(40)         NULL,
    City                varchar(30)         NULL,
    Province            char(2)
        CONSTRAINT DF_Customer_Province
            DEFAULT ('AB')                  NULL,
    PostalCode          char(6)
        CONSTRAINT CK_Customer_PostalCode
            CHECK (PostalCode LIKE '[A-Z][0-9][A-Z][0-9][A-Z][0-9]')
                                            NULL,
    HomePhone           char(10)
 )

 CREATE TABLE Employee
 (
    EmployeeNumber      int
        CONSTRAINT PK_Employee_EmployeeNumber
            PRIMARY KEY
        IDENTITY (300, 1)                   NOT NULL,
    [SIN]               char(9)             NOT NULL,
    LastName            varchar(30)         NOT NULL,
    FirstName           varchar(30)         NOT NULL,
    [Address]           varchar(40)         NULL,
    City                varchar(20)         NULL,
    Province            char(2)
        CONSTRAINT DF_Employee_Province
            DEFAULT ('AB')                  NULL,
    PostalCode          char(6)
        CONSTRAINT CK_Employee_PostalCode
            CHECK (PostalCode LIKE '[A-Z][0-9][A-Z][0-9][A-Z][0-9]')
                                            NULL,
    HomePhone           char(10)            NULL,
    WorkPhone           char(10)            NULL,
    Email               varchar(40)         NULL,
 )

 CREATE TABLE Sale
 (
    SaleNumber          int
        CONSTRAINT PK_Sale_SaleNumber
            PRIMARY KEY
        IDENTITY (3000, 1)                  NOT NULL,
    SaleDate            datetime            NOT NULL,
    CustomerNumber      int
        CONSTRAINT FK_Sale_CustomerNumber_Customer_CustomerNumber
            FOREIGN KEY REFERENCES Customer(CustomerNumber)
                                            NOT NULL,
    EmployeeNumber      int
        CONSTRAINT FK_Sale_EmployeeNumber_Employee_EmployeeNumber
            FOREIGN KEY REFERENCES Employee(EmployeeNumber)
                                            NOT NULL,
    Subtotal            money
        CONSTRAINT CK_Sale_Subtotal
            CHECK (Subtotal <= Total)       NOT NULL,
    GST                 money               NOT NULL,
    Total               money
        CONSTRAINT CK_Sale_Total
            CHECK (Total >= Subtotal)       NOT NULL,
 )

 CREATE TABLE Author
 (
    AuthorCode          int
        CONSTRAINT PK_Author_AuthorCode
            PRIMARY KEY
        IDENTITY (100, 1)                   NOT NULL,
    LastName            varchar(30)         NOT NULL,
    FirstName           varchar(30)         NOT NULL,
 )

 CREATE TABLE Category
 (
    CategoryCode        int
        CONSTRAINT PK_Category_CategoryCode
            PRIMARY KEY
        IDENTITY (1, 1)                     NOT NULL,
    [Description]       varchar(40)         NOT NULL,
 )

 CREATE TABLE Publisher
 (
    PublisherCode       int
        CONSTRAINT PK_Publisher_PublisherCode
            PRIMARY KEY
        IDENTITY (200, 1)                   NOT NULL,
    [Name]              varchar(40)         NOT NULL,
 )

 CREATE TABLE Title
 (
    ISBN                char(10)
        CONSTRAINT PK_Title_ISBN
            PRIMARY KEY                     NOT NULL,
    Title               varchar(40)         NOT NULL,
    SuggestedPrice      smallmoney
        CONSTRAINT DF_Title_SuggestedPrice
            DEFAULT (0)                     NOT NULL,
    NumberInStock       smallint
        CONSTRAINT CK_Title_NumberInStock
            CHECK (NumberInStock >= 0)      
        CONSTRAINT DF_Title_NumberInStock
            DEFAULT (0)                     NOT NULL,
    PublisherCode       int
        CONSTRAINT FK_Title_PublisherCode_Publisher_PublisherCode
            FOREIGN KEY REFERENCES Publisher(PublisherCode)
                                            NOT NULL,
    CategoryCode        int
        CONSTRAINT FK_Title_CategoryCode_Category_CategoryCode
            FOREIGN KEY REFERENCES Category(CategoryCode)
                                            NOT NULL,
 )

 CREATE TABLE AuthorTitle
 (
    ISBN                char(10)
        CONSTRAINT FK_AuthorTitle_ISBN_Title_ISBN
            FOREIGN KEY REFERENCES Title(ISBN)
                                            NOT NULL,
    AuthorCode          int
        CONSTRAINT FK_AuthorTitle_AuthorCode_Author_AuthorCode
            FOREIGN KEY REFERENCES Author(AuthorCode)
                                            NOT NULL,
 )

 CREATE TABLE SaleDetail
 (
    SaleNumber          int
        CONSTRAINT FK_SaleDetail_SaleNumber_Sale_SaleNumber
            FOREIGN KEY REFERENCES Sale(SaleNumber)
                                            NOT NULL,
    ISBN                char(10)
        CONSTRAINT FK_SaleDetail_ISBN_Title_ISBN
            FOREIGN KEY REFERENCES Title(ISBN)
                                            NOT NULL,
    SellingPrice        money               NOT NULL,
    Quantity            int                 NOT NULL,
    Amount              money               NOT NULL,
 )

 /*----------------- Alter Table Statements --------------------*/
 ---1) Add a char(10) attribute named WorkPhone to the Customer Table
 ALTER TABLE Customer
    ADD WorkPhone char(10) NULL
 GO
 ---2) Add a varchar(30) attribute named Email to the Customer Table
 ALTER TABLE Customer
    ADD Email varchar(30) NULL
 GO
 ---3) Add a constraint to make sure the correct format is followed for the Email attribute
 ALTER TABLE Customer
    ADD CONSTRAINT CK_Customer_Email
    CHECK (Email LIKE '[a-z, 0-9][a-z, 0-9][a-z, 0-9]%@[a-z, 0-9][a-z, 0-9][a-z, 0-9]%.[a-z, 0-9][a-z, 0-9]%')
    --- Match For:         b         8         l      @    g         v         t      .    c         a
 GO
 ---4) Add a char(1) attribute named Active that's required for the Employee Table
 ALTER TABLE Employee
    ADD Active char(1) NOT NULL
 GO
 ---5) Add a constraint to make sure the default character is used for the Active attribute
 ALTER TABLE Employee
    ADD CONSTRAINT DF_Employee_Active
    DEFAULT ('y')
 GO

 /*------------------ Foreign Key Index Statements -----------------*/
 CREATE NONCLUSTERED INDEX IX_Sale_CustomerNumber
    ON Sale (CustomerNumber)

 CREATE NONCLUSTERED INDEX IX_Sale_EmployeeNumber
    ON Sale (EmployeeNumber)

 CREATE NONCLUSTERED INDEX IX_Title_PublisherCode
    ON Title (PublisherCode)

 CREATE NONCLUSTERED INDEX IX_Title_CategoryCody
    ON Title (CategoryCode)

 CREATE NONCLUSTERED INDEX IX_AuthorTitle_ISBN
    ON AuthorTitle (ISBN)

 CREATE NONCLUSTERED INDEX IX_AuthorTitle_AuthorCode
    ON AuthorTitle (AuthorCode)

 CREATE NONCLUSTERED INDEX IX_SaleDetail_SaleNumber
    ON SaleDetail (SaleNumber)

 CREATE NONCLUSTERED INDEX IX_SaleDetail_ISBN
    ON SaleDetail (ISBN)

 GO

USE Lab2A_BooksGalore
GO

--Lab 2 insert script
--IMPORTANT! If you need to run this script more than once you must drop and recreate your tables first to reset the identity properties.

--Delete existing data in the tables, if there is any
Delete From SaleDetail
Delete From Sale
Delete From AuthorTitle
Delete From Title
Delete From Employee
Delete From Customer
Delete From Category
Delete From Publisher
Delete From Author
Go

Insert into Author
    (LastName, FirstName)
Values
    ('Smith', 'Sammy'),
    ('Greens', 'George'),
    ('Jones', 'Johnny'),
    ('Davidson', 'David'),
    ('Robertson', 'Rob'),
    ('Abbots', 'Abe'),
    ('Bakers', 'Bob'),
    ('Caters', 'Clem'),
    ('Semenko', 'Dave'),
    ('Franky', 'Fran'),
    ('Horton', 'Harry'),
    ('Kelly', 'Kevin'),
    ('Lambert', 'Larry'),
    ('Johnson', 'Jon'),
    ('Anderson', 'Ander'),
    ('Peterson', 'Peter'),
    ('Jensen', 'Jens'),
    ('Issacsen', 'Issac')

Insert into Publisher
    (Name)
Values
    ('Addison Westley'),
    ('SAMS'),
    ('Harlequin'),
    ('Self Publish Inc'),
    ('Microsoft Press'),
    ('Jones and Bartlett'),
    ('WROX'),
    ('West'),
    ('Premier')


Insert into Category
    (Description)
Values
    ('Computers'),
    ('Business'),
    ('Human Relation'),
    ('Electronics'),
    ('Designs'),
    ('Miscellaneous'),
    ('Media Design'),
    ('Information Technologies')