【问题标题】:SQL Create table in database ssmsSQL 在数据库 ssms 中创建表
【发布时间】:2013-10-06 19:38:09
【问题描述】:

我想创建一个包含几个表的数据库。我正在使用 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。

【问题讨论】:

  • 让事情变得比必要的更困难并不是我所说的最佳实践。关于,自动生成数据,你是什么意思?
  • 存储一个人的年龄是一种不好的做法。它会随着时间而变化。
  • 哈哈,我明白你的意思是让事情变得更加困难。我发现这是最好的学习方式。
  • @DanBracuk 好吧,我的最终目标是使用从 SQL 数据库读取数据的接口,所以我想创建几个基本表,它们的大小约为。我可以查询的 100 个条目。所以,我想随机生成姓名(如果可能的话)、年龄和开始日期。

标签: sql sql-server database ssms


【解决方案1】:

创建数据库后,您需要

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,如果您不需要时间组件)。各方面都更好。

【讨论】:

  • 太棒了!我发誓这个答案不容易找到。找了半天也没找到。
  • 在创建数据库和创建表之间放置一个“go”命令可能会更好(最好在使用之前)。
  • @RussellSchutte 我已经把它放进去,而且我知道很多自动生成的脚本都会这样做,但我从来没有弄清楚究竟是为什么。
  • 据我了解,Laurence,“go”纯粹是一个 SSMS 命令,告诉 SSMS 等到最后一个命令返回其状态/完成,然后再继续执行下一个命令。如果没有 GO,我认为您可能会请求创建数据库,然后在创建完成之前尝试使用它。
  • @RussellSchutte 那么如果后续命令使用新创建的“某物”,是否应该在每个 CREATE 语句之后放置一个 GO 语句?
【解决方案2】:

这里有一些代码来创建一个表 1st 然后你可以在其中添加一些测试数据来练习......

创建一个表:

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

【讨论】:

    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    相关资源
    最近更新 更多