⑴ sql表命名規則
e,t,d都是表別名,,
為了書寫簡化及清晰
例如t,d都是departments的表別名,但是使用在不同位置,因為很多關聯,有時候也會關聯同1個表,例如:
select *
from test t1 left join test t2 on t1.id=t2.id
這里的t1,t2也是這個意思
⑵ 怎樣重命名sql server中的表
第1招(rename)、很簡單,在ssms(sql server management studio)左側樹上,找到表,右鍵重命名(或者定位(滑鼠或者上下左右鍵)到這張表按F2),輸入表的新名字,回車。
還是截個圖吧。
2
第2招(insert into select from )、通過寫程序,創建一張新表,表名為你的表新名,比如這位小兄弟想把Ari命名為Ari20151030,則建一張表,表名為這個,欄位描述等均與第一張表相同,為了達到這個效果,在表Ari上右鍵-->編寫表腳本為-->Create到-->新查詢編輯器窗口
3
第二招續1,修改腳本中的名字為新表的名字,運行之(滑鼠點紅色嘆號按鈕,或者直接按F5快捷鍵)
4
第二招續2,將原表中的數據插入新表中,然後刪除原表中的數據,就可以了
INSERT INTO Ari20151030 SELECT * FROM dbo.Ari;TRUNCATE TABLE dbo.Ari;
5
第3招(Select into from ),簡化第二招的操作,但是不會有主鍵什麼的帶進去,適合這種臨時的日誌表,沒有主鍵的情況。
SELECT * INTO Aribakat20151029 FROM dbo.Ari;
truncate table Ari;
6
第四招(sp_rename),終極大招,適合在程序中調用(個人覺得程序員要掌握的方法,就是要熟悉各種資料庫的系統函數和方法,並加以權衡運用到程序開發中,才是一個想偷懶,能夠偷懶,老闆還喜歡你偷懶的程序員)。
EXEC sp_rename 'Ari','Ari201510301106';
END
注意事項
rename方法適合於小白
insert into select from方法適合於各種資料庫,不只是mssql server,但是在這個場景下不是最優
Select into from 丟掉了主鍵信息,不是最優,但是適合於備份臨時的數據
sp_rename這個方法建議各位sql server dba和程序員們廣泛使用
⑶ sql語句如何重命名表名和列名
一、更改資料庫名
sp_renamedb 更改資料庫的名稱。
語法: sp_renamedb [ @dbname = ] ' old_name ' , [ @newname = ] ' new_name '
參數: [ @dbname = ] ' old_name ' 是資料庫的當前名稱。old_name 為 sysname 類型,無默認值。
[ @newname = ] ' new_name ' 是資料庫的新名稱。 new_name 必須遵循標識符規則。new_name 為 sysname 類型,無默認值。
返回代碼值: 0 (成功)或非零數字(失敗)
許可權: 只有 sysadmin 和 dbcreator 固定伺服器角色的成員才能執行 sp_renamedb。
示例: 下例將資料庫 accounting 改名為 financial。
EXEC sp_renamedb ' accounting ' , ' financial '
二、更改表名或列名
sp_rename [ @objname = ] ' object_name ' ,
[ @newname = ] ' new_name '
[ , [ @objtype = ] ' object_type ' ]
A. 重命名表:
下例將表 customers 重命名為 custs。
EXEC sp_rename ' customers ' , ' custs '
B. 重命名列:
下例將表 customers 中的列 contact title 重命名為 title。
EXEC sp_rename ' customers.[contact title] ' , ' title ' , ' COLUMN '
⑷ SQL語句 重命名表
Sp_存儲過程的名稱 這一種命名規范而已 表示系統存儲過程 如果是擴展存儲過程的話則是以 xp_存儲過程名稱
存儲過程可以定義為:預編譯在執行計劃中的一系列標准Sql語句的集合
Exec 只是用來調用存儲過程而已(可以省略Exec)
⑸ 第五章 SQL定義表(一)
可以通過定義表(使用 CREATE TABLE )或通過定義投影到表的持久類來創建表:
由於以下原因,這兩個名字之間的對應關系可能不相同:
表、視圖或存儲過程名稱可以是限定的( schema.name ),也可以是限定的( name )。
模式名遵循標識符約定,需要特別注意非字母數字字元的使用。
模式名不應該指定為帶分隔符的標識符。
嘗試指定「USER」或任何其他SQL保留字作為模式名會導致 SQLCODE -312 錯誤。
INFORMATION_SCHEMA 模式名和相應的信息。
模式包名在所有命名空間中保留。
用戶不應該在這個模式/包中創建表/類。
當執行一個創建操作(比如 create TABLE ),指定一個還不存在的模式時,InterSystems IRIS將創建新的模式。
InterSystems IRIS使用模式名生成相應的包名。
由於模式及其對應包的命名約定不同,用戶應該注意非字母數字字元的名稱轉換注意事項。
這些名稱轉換的注意事項與表不同:
INFORMATION_SCHEMA 模式名和相應的信息。
模式包名在所有命名空間中保留。
用戶不應該在這個模式/包中創建表/類
在所有名稱空間中保留 IRIS_Shard 模式名。
用戶不應在此模式中創建表、視圖或過程。
存儲在 IRIS_Shard 模式中的項不會通過編目查詢或 INFORMATION_SCHEMA 查詢顯示。
初始設置是對所有名稱空間(系統范圍)使用相同的默認模式名。
可以為所有命名空間設置相同的默認模式名,也可以為當前命名空間設置默認模式名。
如果創建了一個具有非限定名稱的表或其他項,InterSystems IRIS將為其分配默認模式名和相應的持久類包名。
如果一個命名的或默認的模式不存在,InterSystems IRIS將創建模式(和包),並將創建的項分配給該模式。
如果刪除模式中的最後一項,InterSystems IRIS將刪除該模式(和包)。
下面的模式名解析描述適用於表名、視圖名和存儲過程名。
系統范圍的初始默認模式名是 SQLUser 。
對應的持久類包名是 User 。
因此,非限定表名 Employee 或限定表名 SQLUser 。
Employee 將生成類 User.Employee 。
因為 USER 是一個保留字,嘗試用 USER 的模式名(或任何SQL保留字)指定限定名會導致 SQLCODE -1 錯誤。
要返回當前默認模式名,請調用 $SYSTEM.SQL.DefaultSchema() 方法:
或者使用以下預處理器宏:
可以使用以下任意一種方式更改默認模式名:
注意:當更改默認的SQL模式名稱時,系統將自動清除系統上所有名稱空間中的所有緩存查詢。
通過更改默認模式名稱,可以更改所有包含非限定表、視圖或存儲過程名稱的查詢的含義。
強烈建議在安裝InterSystems IRIS時建立默認的SQL模式名,以後不要修改。
模式名用於生成相應的類包名。
因為這些名稱有不同的命名約定,所以它們可能不相同。
可以通過將其設置為系統范圍的默認模式來創建與SQL保留字同名的模式,但是不建議這樣做。
名為 User 的默認模式根據類命名唯一性約定,生成相應的類包名稱 User0 。
如果指定 _CURRENT_USER/name 作為默認模式名,其中name是選擇的任意字元串,那麼InterSystems IRIS將當前登錄進程的用戶名分配為默認模式名。
如果進程沒有登錄,則name將用作默認的模式名。
例如,如果進程沒有登錄, _CURRENT_USER/HMO 使用HMO作為默認模式名。
在 $SYSTEM.SQL.SetDefaultSchema() 中,指定 "_CURRENT_USER" 作為帶引號的字元串。
當訪問一個現有的表(或視圖,或存儲過程)進行DML操作時,將從模式搜索路徑中提供一個非限定的名稱。
按照指定的順序搜索模式,並返回第一個匹配項。
如果在搜索路徑中沒有找到匹配的模式,或者沒有搜索路徑,則使用默認的模式名。
(注意, #Import 宏指令使用了不同的搜索策略,不會「失敗」到默認的模式名。)
如果非限定名與模式搜索路徑中指定的任何模式或默認模式名不匹配,則會發出 SQLCODE -30 錯誤,例如: SQLCODE: -30 消息: Table 'PEOPLE' not found in schemas: CUSTOMERS,EMPLOYEES,SQLUSER 。
當創建一個基於odbc的查詢以通過Mac上的Microsoft query從Microsoft Excel運行時,如果從可用的表列表中選擇一個表,則生成的查詢不包括該表的模式(相當於類的包)。
例如,如果選擇從示例模式返回 Person 表的所有行,則生成的查詢為:
因為InterSystems IRIS將不限定的表名解釋為 SQLUser 模式中的表名,所以該語句要麼失敗,要麼從錯誤的表返回數據。
要糾正這一點,編輯查詢(在SQL View選項卡上),顯式引用所需的模式。
然後查詢應該是:
INFORMATION.SCHEMA 。
SCHEMATA persistent 類列出當前名稱空間中的所有模式。
下面的示例返回當前命名空間中的所有非系統模式名:
Management Portal SQL界面的左側允許查看模式(或匹配篩選器模式的多個模式)的內容。
每個表在其模式中都有一個唯一的名稱。
一個表有一個SQL表名和一個對應的持久化類名;
這些名稱在允許的字元、區分大小寫和最大長度方面有所不同。
如果使用SQL CREATE TABLE 命令定義,則指定遵循標識符約定的SQL表名;
系統生成一個對應的持久化類名。
如果定義為持久類定義,則必須指定只包含字母和數字字元的名稱;
這個名稱既用作區分大小寫的持久類名,也用作(默認情況下)對應的不區分大小寫的SQL表名。
可選的 SqlTableName class 關鍵字允許用戶指定不同的SQL表名。
當使用 CREATE TABLE 命令創建表時,InterSystems IRIS使用表名生成相應的持久化類名。
由於表及其對應類的命名約定不同,用戶應該注意非字母數字字元的名稱轉換:
同一個模式中的視圖和表不能具有相同的名稱。
嘗試這樣做會導致 SQLCODE -201 錯誤。
可以使用 $SYSTEM.SQL.TableExists() 方法確定一個表名是否已經存在。
可以使用 $SYSTEM.SQL.ViewExists() 方法確定視圖名是否已經存在。
這些方法還返回與表或視圖名稱對應的類名。
管理門戶SQL interface Catalog Details表信息選項顯示與所選SQL表名稱對應的類名。
試圖指定 「USER」 或任何其他SQL保留字作為表名或模式名會導致 SQLCODE -312 錯誤。
要指定SQL保留字作為表名或模式名,可以指定名稱作為帶分隔符的標識符。
如果使用帶分隔符的標識符指定包含非字母數字字元的表或模式名,InterSystems IRIS將在生成相應的類或包名時刪除這些非字母數字字元。
適用以下表名長度限制:
在SQL中,每條記錄都由一個唯一的整數值標識,這個整數值稱為 RowID 。
在InterSystems SQL中,不需要指定 RowID 欄位。
當創建表並指定所需的數據欄位時,會自動創建RowID欄位。
這個 RowID 在內部使用,但沒有映射到類屬性。
默認情況下,只有當持久化類被投影到SQL表時,它的存在才可見。
在這個投影表中,將出現一個額外的 RowID 欄位。
默認情況下,這個欄位被命名為 「ID」 ,並分配給第1列。
默認情況下,當在表中填充數據時,InterSystems IRIS將從1開始向該欄位分配連續的正整數。 RowID 數據類型為 BIGINT(%Library.BigInt) 。為 RowID 生成的值具有以下約束:每個值都是唯一的。不允許使用 NULL 值。排序規則是精確的。 默認情況下,值不可修改。
默認情況下,InterSystems IRIS將此欄位命名為 「 ID」 。但是,此欄位名稱不是保留的。每次編譯表時都會重新建立 RowID 欄位名。如果用戶定義了一個名為 「 ID」 的欄位,則在編譯表時,InterSystems IRIS會將 RowID 命名為 「 ID1」 。例如,如果用戶隨後使用 ALTER TABLE 定義了一個名為 「 ID1」 的欄位,則表編譯會將 RowID 重命名為 「 ID2」 ,依此類推。在持久性類定義中,可以使用 SqlRowIdName 類關鍵字直接為此類投影到的表指定 RowID 欄位名。由於這些原因,應避免按名稱引用 RowID 欄位。
InterSystems SQL提供了 %ID 偽列名稱(別名),無論分配給 RowID 的欄位名稱如何,該偽列名稱始終返回 RowID 值。 (InterSystems TSQL提供了 $IDENTITY 偽列名稱,其作用相同。)
ALTER TABLE 無法修改或刪除 RowID 欄位定義。
將記錄插入表中後,InterSystems IRIS將為每個記錄分配一個整數ID值。 RowID 值始終遞增。它們不被重用。因此,如果已插入和刪除記錄,則 RowID 值將按升序排列,但可能不連續。
可以通過設置 SetDDLUseSequence() 方法,將InterSystems IRIS配置為使用 $INCREMENT 執行 ID 分配。若要確定當前設置,請調用 $ SYSTEM.SQL.CurrentSettings() 方法。
在持久性類定義中, IdLocation 存儲關鍵字global(例如,對於持久性類 Sample.Person:<IdLocation> ^ Sample.PersonD </ IdLocation> )包含RowID計數器的最高分配值。 (這是分配給記錄的最高整數,而不是分配給進程的最高整數。)請注意,此RowID計數器值可能不再與現有記錄相對應。要確定是否存在具有特定RowID值的記錄,請調用表的 %ExistsId() 方法。
通過 TRUNCATE TABLE 命令重置 RowID 計數器。即使使用 DELETE 命令刪除表中的所有行,也不會通過 DELETE 命令將其重置。如果沒有數據插入表中,或者已使用 TRUNCATE TABLE 刪除所有表數據,則 IdLocation 存儲關鍵字全局值未定義。
默認情況下, RowID 值不可用戶修改。嘗試修改 RowID 值會產生 SQLCODE -107 錯誤。覆蓋此默認值以允許修改 RowID 值可能會導致嚴重的後果,只有在非常特殊的情況下並應格外謹慎。 Config.SQL.AllowRowIDUpdate 屬性允許 RowID 值是用戶可修改的。
通過定義一個用於投影表的持久類,可以定義 RowID 以具有欄位或欄位組合中的值。為此,請使用 IdKey index 關鍵字指定一個索引。例如,一個表可以具有一個 RowID ,其 RowId 通過在 PatientName [IdKey] 上指定索引定義 IdxId 來與 PatientName 欄位的值相同;或者可以通過指定索引定義 IdxId 來將 PatientName 和 SSN 欄位的組合值在 (PatientName,SSN)[IdKey]; 上。
當 RowID 基於多個欄位時, RowID 值是由 || 連接的每個組成欄位的值。操作員。例如, Ross,Betsy || 123-45-6789 。 InterSystems IRIS嘗試確定基於多個欄位的 RowID 的最大長度。如果無法確定最大長度,則 RowID 長度默認為512。
用作外鍵引用的 RowID 必須是公共的。
默認情況下,不能將具有公共 RowID 的表用作源表或目標表,以使用 INSERT INTO Sample.DupTable SELECT * FROM Sample.SrcTable 將數據復制到重復表中。
可以使用Management Portal SQL界面「目錄詳細信息欄位」列出「隱藏」列來顯示 RowID 是否被隱藏。
可以使用以下程序返回指定欄位(在此示例中為 ID )是否被隱藏:
⑹ SQL如何重命名表名
exec
sp_rename
'原表名','新表名',exec是執行存儲過程的命令,可以省略,sp_rename是系統自帶的存儲過程可以用了來重命名表名、列名。。。
⑺ 怎樣重命名sql server中的表
第1招(rename)、很簡單,在ssms(sql server management studio)左側樹上,找到表,右鍵重命名(或者定位(滑鼠或者上下左右鍵)到這張表按F2),輸入表的新名字,回車。
還是截個圖吧。
步驟閱讀
2
第2招(insert into select from )、通過寫程序,創建一張新表,表名為你的表新名,比如這位小兄弟想把Ari命名為Ari20151030,則建一張表,表名為這個,欄位描述等均與第一張表相同,為了達到這個效果,在表Ari上右鍵-->編寫表腳本為-->Create到-->新查詢編輯器窗口
步驟閱讀
3
第二招續1,修改腳本中的名字為新表的名字,運行之(滑鼠點紅色嘆號按鈕,或者直接按F5快捷鍵)
步驟閱讀
4
第二招續2,將原表中的數據插入新表中,然後刪除原表中的數據,就可以了
INSERT INTO Ari20151030 SELECT * FROM dbo.Ari;TRUNCATE TABLE dbo.Ari;
步驟閱讀
5
第3招(Select into from ),簡化第二招的操作,但是不會有主鍵什麼的帶進去,適合這種臨時的日誌表,沒有主鍵的情況。
SELECT * INTO Aribakat20151029 FROM dbo.Ari;
truncate table Ari;
步驟閱讀
6
第四招(sp_rename),終極大招,適合在程序中調用(個人覺得程序員要掌握的方法,就是要熟悉各種資料庫的系統函數和方法,並加以權衡運用到程序開發中,才是一個想偷懶,能夠偷懶,老闆還喜歡你偷懶的程序員)。
EXEC sp_rename 'Ari','Ari201510301106';
⑻ 如何給表重命名 SQL
在sql server中:
在企業管理器中找到要改名的表,右鍵,重命名.
在ORACLE中:
alter table 老表名 rename to 新表名
⑼ SQL語句 重命名表
EXEC是調用或者執行的意思, SP_RENAME是SQL Server 2005資料庫中內置的一個存儲過程,他的功能就是重命名。 所謂存儲過程就是預編譯好的一段可執行的,有著特定功能的一段SQL語句的集合。 就像平時生活中,單個的一句話就是一句話,但是多句有聯系的話放在一起就是一個文章了。 select * from 表,就是一個單個的SQL語句,但是多個有聯系的SQL語句通過一定的語法放在一起,就是一個存儲過程了。這樣說,你可以理解了嗎?