在T-SQL中创建和填充表

时间:2015-10-29 00:54:29

标签: sql sql-server tsql

我是T-SQL的新手,并尝试学习如何在T-SQL中创建脚本来创建和填充表(StaffData)。StaffData定义如下:

staffid – integer primary key, identity starting at 1, increments by 1
managerid – int, allows nulls, pointer to another record in managertable
name – string of 50 characters
salary – money

如何生成表格并用数据集填充它??

2 个答案:

答案 0 :(得分:0)

这是正确的SQL。我已经测试了它(只是发现你想要managerId可以为空 - 我已经添加了这个):

  • 它为您的表格和列名称使用了更好的约定(您不应该使用表名中的数据'我们知道它包含数据)
  • 它命名你的主键约束,这是更好的练习 - 如果你愿意,你可以为FK约束做类似的事情,我已经内联完成了
  • 它使用' USE'和' GO'声明,以确保您在正确的数据库上创建东西(当您在大型生产系统上工作时至关重要。)
  • 它使用nvarchar列 - 您需要这些列来可靠地存储来自国际字符集的数据(例如,经理有俄文名称)
  • 我使用nvarchar(max),因为您无法确定名称只有50个字符。如果必须,请使用nvarchar(50),但数据库空间通常不是很大。

您需要首先创建Manager表,因为您的Staff表依赖于它:

USE [yourDatabaseName] -- you don't need the square brackets, but they don't hurt

-- Create ManagerTable
CREATE TABLE Manager
    (
       id int IDENTITY(1,1),
       name nvarchar(max),
       CONSTRAINT pk_manager PRIMARY KEY (id)
    )

CREATE TABLE Staff
    (
       id int IDENTITY(1,1),
       name nvarchar(max),
       salary money,
       managerId int FOREIGN KEY REFERENCES Manager(id) NULL,
       CONSTRAINT pk_staff PRIMARY KEY (id)
    )


--To populate Manager table:

INSERT INTO [Manager]
    (
        -- id column value is auto-generated
        name
    )
    VALUES
    (
       'John Doe'        
    )    

--To populate Staff table:

INSERT INTO [Staff]
    (
        -- id column value is auto-generated
        name, salary, managerId
    )
    VALUES
    (
       'Jane Doe', 60000, 1       
    )

GO

答案 1 :(得分:-1)

创建两个数据库表:

-- Create StaffData
CREATE TABLE StaffData
    (
       staffid int PRIMARY KEY IDENTITY,
       managerid int
    )

-- Create ManagerTable
CREATE TABLE ManagerTable
    (
       managerid int,
       name varchar(50),
       salary money
    )

填充StaffData表格:

INSERT INTO [StaffData]
    (
        --staffid - this column value is auto-generated
        [managerid]
    )
    VALUES
    (
        -- staffid - int
        12345 -- managerid - int
    )

填充ManagerTable表:

INSERT INTO [ManagerTable]
    (
        [managerid],
        [name],
        [salary]
    )
    VALUES
    (
        12345, -- managerid - int
        'Juan Dela Cruz', -- name - varchar
         15000 -- salary - money
    )

如果我在您的单词Pointer中了解您,则选择数据这里是使用INNER JOIN使用managerid

SELECT *
FROM [StaffData]
     INNER JOIN [ManagerTable] 
     ON [StaffData].managerid = [ManagerTable].managerid