2013-10-06 145 views
-1

我想创建一个包含一对表的数据库。我正在使用SSMS,通过右键单击创建完成上述任务非常简单,但我想使用查询/命令行(不知道如何对其进行说明)。SQL在数据库ssms中创建表

创建数据库和表

CREATE DATABASE test_employees; 

    CREATE TABLE dbo.EmployeesBasicInfo 
    (
     MyKeyField VarChar(8) PRIMARY KEY, 
     FirstName VarChar(30) NOT NULL, 
     LastName VarChar(50) NOT NULL, 
     DateStarted DateTime NOT NULL, 
     Age Int NOT NULL, 
     ModifiedDate DateTime NULL 
    ); 

但我不知道那里的表去或如何移动/链接到数据库test_employees。

另外,如果您在回答我的问题时有雄心,那么下一步就是自动生成所有字段的数据。您可以提供的任何链接都会有所帮助。而且,如果我所做的任何事情都不是最佳实践,请让我知道 - 我只是进入SQL。

+0

让事情变得更加困难并不是我所说的最佳做法。关于,自动生成数据,你的意思是什么? –

+0

其他不好的做法是存储一个人的年龄。它随着时间而变化。 –

+0

哈哈,我明白你的意思是让事情变得更加困难。我发现这是学习的最佳方式。 – FalacyNine

回答

3

你创建你需要的数据库后

Use test_employees 
Go 

这为随后的语句当前工作的数据库。

另外,您可以用数据库名

Create Table test_employees.dbo.EmployeesBasicInfo (
    MyKeyField varchar(8) primary key, 
    FirstName varchar(30) not null, 
    LastName varchar(50) not null, 
    DateStarted DateTime not null, 
    Age int not null, 
    ModifiedDate datetime null 
); 

你可能在你的默认数据库中创建这个表,这可能是master限定您创建表。

也适用于任何最新版本的SQL Server,请考虑使用datetime2而不是datetime(或date如果您不需要时间组件)。在各方面都更好。

+0

太棒了!我发誓答案不容易找到。我搜索了一段时间,找不到它。 – FalacyNine

+0

在创建数据库和创建表之间放置“go”命令可能会很好(可能在USE之前最好)。 –

+0

@RussellSchutte我已经把它放进去了,我知道很多自动生成的脚本都这样做,但我从来没有弄清楚为什么。 – Laurence

1

下面是一些代码来创建表1,然后你可以添加一些测试数据为它.......

练习创建一个表:

Create Table dbo.BasicInfo (
    MyKeyField INT primary key IDENTITY(1,1), 
    FirstName varchar(30) not null, 
    LastName varchar(50) not null, 
    DateStarted DateTime not null, 
    Age int not null, 
    ModifiedDate datetime null 
) 
GO 

TO ADD实践DATA:

DECLARE @Value INT = 1 

WHILE @Value <= 100 
    BEGIN 
     INSERT INTO dbo.BasicInfo (FirstName, LastName, DateStarted, Age, ModifiedDate) 
     VALUES   ('First_Name_' + CAST(@Value AS VARCHAR), 'Last_Name_'+ CAST(@Value AS VARCHAR), DATEADD(DAY, -CONVERT(INT, (5000+1)*RAND()), GETDATE()), 
        18 + CONVERT(INT, (30-10+1)*RAND()), DATEADD(DAY, 10 + (30-10)*RAND() ,DATEADD(DAY, -CONVERT(INT, (5000+1)*RAND()), GETDATE()))) 
     SET @Value = @Value + 1 
    END 

,如果你想在你的表中添加更多的则100行只需更换要与100在此代码

添加到您的表中的行数