问题
I have been using SQL Server CE for a while. In that database the table names were like
UserPosts
, UserProfile
.
But after my upgrade from SQL Server CE to SQL Server the names are edited to dbo.UserPosts
, dbo.UserProfile
. And also the names of columns are wrapped in square brackets like: [UserProfile]
.
Why is this bracket used?
回答1:
Brackets are used to surround names in SQL Server (they server the same purpose as double quotes).
For names that consist of alphanumeric characters and underscore, do not start with a digit, and are not reserved words, the square brackets are not needed. They are typically used for columns that have "irregular" names, such as [Column Name]
(note the space) or a reserved word like [from]
.
When SQL Server generates code, it is overly conservative (in my opinion) about the use of square brackets. It uses them for all column names, table names, and even type names in create table
statements. Because I never use "irregular" characters in my names, I find all the brackets to be unnecessary clutter.
The dbo
is something called a schema. SQL Server uses a three part naming convention for tables in a database: ... The database name defaults to the current data base, if it is not present. The schema defaults to dbo
(or another default schema if that has been changed, which is almost never). And, there is a four part naming convention, where the first part is the server name.
来源:https://stackoverflow.com/questions/18304142/sql-server-edits-the-table-name-with-dbo-as-prefix