【问题标题】:Azure SQL - Create table without schema?Azure SQL - 创建没有架构的表?
【发布时间】:2019-12-19 02:07:13
【问题描述】:

我是 MS SQL Server 的新手,来自 MySQL。我有点了解 MS SQL 模式及其用途,但我认为只有一个 DBA 的小型应用程序不需要它们。

是否可以完全忽略模式,例如创建和查询表?如果是这样,在不指定架构的情况下创建表的格式是什么?这是在 Azure 中,带有一个 Azure SQL DB。

更新

感谢下面的答案,您显然不需要在创建表时指定架构。创建后,该表将自动默认应用架构“dbo”。

CREATE TABLE cm_user
(   
cm_user_pk int PRIMARY KEY CLUSTERED, 
user_code VARCHAR(10)  NOT NULL, 
first_name VARCHAR(60)  NOT NULL,
last_name    VARCHAR(60)  NOT NULL,
email    VARCHAR(100)  NOT NULL,
user_type    VARCHAR(20)  NOT NULL     
) 

表格中的结果dbo.cm_user_pk

【问题讨论】:

  • 如果你的模式是指“我不想定义我的列”,那么是的,你可以定义一个只有VARCHAR(MAX) 列的表,然后将任何你喜欢的东西填入其中。然而,这 100% 是个坏主意。如果您在谈论dbo.tabledbo 部分中的架构,那么是的,如果您不想要,您无需担心架构。它们只会给你带来优势,但如果你看不到任何那也没关系
  • 谢谢,是的,OP 与 dbo.table 部分有关。您能否发布一个示例作为查询的答案以在 dbo 中创建没有架构部分的表?

标签: sql-server azure-sql-database


【解决方案1】:

是否可以完全忽略模式,例如创建和查询表?

我认为,这是不可能的。当我们在 Azure SQL 数据库中创建表而不指定默认架构时,该表将与 Azure SQL 数据库用户具有相同的架构。

在Azure SQL数据库中,当用户创建时,我们必须指定schema,server admin和user的默认schema是DBO。这意味着用户创建的所有表都将具有相同的默认架构。 请参考:

  1. Logins and Users
  2. CREATE USER (Transact-SQL)
  3. CREATE TABLE (Transact-SQL)

希望这会有所帮助。

【讨论】:

  • 可以忽略吗?是的。如果每个人的默认架构是dbo,那么就没有必要引用它了。
猜你喜欢
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多