SQL在数据库ssms中创建表

SQL在数据库ssms中创建表,sql,sql-server,database,ssms,Sql,Sql Server,Database,Ssms,我想创建一个包含两个表的数据库。我使用的是SSMS,通过右键单击creating可以很容易地完成上述任务,但我想使用query/command-line,但不知道如何表达 创建数据库和表 CREATE DATABASE test_employees; CREATE TABLE dbo.EmployeesBasicInfo ( MyKeyField VarChar(8) PRIMARY KEY, FirstName VarChar(30)

我想创建一个包含两个表的数据库。我使用的是SSMS,通过右键单击creating可以很容易地完成上述任务,但我想使用query/command-line,但不知道如何表达

创建数据库和表

    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_员工


另外,如果您想回答我的问题,那么下一步就是自动生成所有字段的数据。你能提供的任何链接都会很有帮助。而且,如果我正在做的任何事情都不是最佳实践,请告诉我-我刚刚开始学习SQL。

创建数据库后,您需要

Use test_employees
Go
这将为后续语句设置当前工作数据库

或者,您可以使用数据库名称限定create表

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


对于任何最近版本的SQLServer,如果不需要时间组件,请考虑使用DeDeMEM2而不是DATEIME或DATE。这在各个方面都更好。

这里有一些代码首先创建一个表,然后您可以向其中添加一些测试数据来练习

要创建表,请执行以下操作:

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
要添加实践数据:

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即可

Awesome!我发誓这个答案不容易找到。我搜索了一段时间,但找不到它。在使用之前最好在创建数据库和创建表之间放置go命令。@RussellSchutte我把它放进去了,我知道很多自动生成的脚本都会这样做,但我从来没有弄清楚确切的原因。据我所知,Laurence,go纯粹是一个SSMS命令,告诉SSMS等待最后一个命令返回其状态/完成,然后继续执行下一个命令。不走,,我认为有可能是您请求创建数据库,然后在创建之前继续尝试使用它。@RussellSchutte那么,如果后续命令使用新创建的内容,您是否应该在每个CREATE语句之后放一个go语句?使事情变得更加困难不是我所说的最佳做法。关于自动生成数据,你这是什么意思?另一个不好的做法是存储一个人的年龄。随着时间的推移,情况会发生变化。哈哈,我理解你说的让事情变得更困难的意思。不过,我发现这是最好的学习方法。@DanBracuk我的最终目标是使用一个从SQL数据库读取数据的接口,因此我想创建两个基本表,其中包含大约100个我可以查询的条目。所以,如果可能的话,我想随机生成姓名、年龄和开始日期。