sql主鍵欄位
⑴ sql語句如何修改主鍵欄位的欄位類型類型
首先,修改主鍵欄位的欄位類型,肯定是要先刪除主鍵才能操作的
--【1.查找主鍵】
--SQLSERVER
select name as pkName from dbo.sysobjects where xtype='PK' and parent_obj=(select id from dbo.sysobjects where name='表名')
--ORACLE
SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = UPPER('表名') AND CONSTRAINT_TYPE ='P'
--【2.刪除主鍵約束】
ALTER TABLE 表名 DROP CONSTRAINT 約束名
--ORACLE
--刪除主鍵連同索引
ALTER TABLE 表名 DROP CONSTRAINT 約束名 CASCADE DROP INDEX;
或者
ALTER TABLE 表名 DROP PRIMARY KEY CASCADE DROP INDEX;--【3.修改欄位】
--【先把這一列的值備份到臨時列里,再把這一列update成null,再修改類型,再把數據拷貝回來】
--SQLSERVER
--默認值單獨處理,關聯約束
--默認值的變更涉及到約束,如有約束,需要先查詢出越是再進行刪除
ALTER TABLE 表名 DROP CONSTRAINT 約束名
ALTER TABLE 表名 ALTER COLUMN 欄位名 欄位類型(長度精度) 是否為空
ALTER TABLE 表名 ADD CONSTRAINT 約束名 DEFAULT 默認值 FOR 欄位名
--ORACLE
--刪除默認值:default null
ALTER TABLE 表名 MODIFY COLUMN 欄位名 VARCHAR2(20) DEFAULT ' ' NOT NULL--【4.新增主鍵】
--指定主鍵名字
ALTER TABLE 表名 ADD CONSTRAINT 主鍵名 PRIMARY KEY (F1,F2);
--未指定主鍵名字
ALTER TABLE 表名 ADD PRIMARY KEY (F1,F2)
⑵ sql如何查找一張表中所有的主鍵欄位,我已經寫好了查找一個主鍵的,多個主鍵的怎麼寫額
WHERE id = Object_id('表名')改這樣試試 User1和User4是主鍵,這樣去查詢的話得到的主鍵是User1、User2. 回答: 給你一句很給力的SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表說明 = case when a.colorder=1 then isnull(f.value,'') else '' end, 欄位序號 = a.colorder, 欄位名 = a.name, 標識 = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end, 主鍵 = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in ( SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end, 類型 = b.name, 佔用位元組數 = a.length, 長度 = COLUMNPROPERTY(a.id,a.name,'PRECISION'), 小數位數 = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0), 允許空 = case when a.isnullable=1 then '√'else '' end, 默認值 = isnull(e.text,''), 欄位說明 = isnull(g.[value],'') FROM syscolumns a left join systypes b on a.xusertype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' left join syscomments e on a.cdefault=e.id left join sysproperties g on a.id=g.id and a.colid=g.smallid left join sysproperties f on d.id=f.id and f.smallid=0 where d.name='要查詢的表' --如果只查詢指定表,加上此條件 order by a.id,a.colorder 補充: SELECT TABLE_NAME,COLUMN_NAME
⑶ 簡述在SQL Server中, 主鍵具有哪些特性
sql中一般每個表都需要一個唯一標示的欄位,這個就稱之為主鍵,一般主鍵是不固定的,根據需要自己命名或者有個以上的欄位組合為主鍵,成為聯合主鍵。主鍵的特點是:唯一和不為空。
創建主鍵create
table
表名(sid
int
not
null,
name
varchar(),primary
key(sid))這里就聲明了sid為主鍵。
也可以在sqlserver中選擇欄位名,右鍵選中為主鍵,這樣也可以的。
⑷ SQL中主鍵的使用
主鍵是數據完整性的保障之一,具體說是實體完整行,主鍵不允許為空也不能知重復。
假如你做了一個員工表格
有一列是身份證號
如果這個人沒有身份證號,那麼你就是雇黑工,如果有兩個人身份證號相同,那麼一個人是偽造的身份。哈道哈
所以正常情況下這兩種情況都不允許出現。這是你只要給身份號這一列設置了主鍵,那麼你插入或者修改數據時,資料庫管理系統就會自動要求他們不版能為空也不能有兩條記錄的號碼相同。
這就是主鍵的作用
你那個id
是個標識列,dbms會自動為他賦值,而且保證其唯權一性,所以你就不用給他賦值了
⑸ 請問 sql 欄位 可不可以 即是主鍵又是外鍵
可以,這說明這兩張表的主鍵相關聯,只是那張是主表(就是該表的主鍵作為從表的外鍵),那張是從表(該表的主鍵同時也是外鍵),需要自己定義好。
CREATE TABLE `dispatch_cost` (
`id` varchar(50) NOT NULL COMMENT 'id',
`belong` varchar(15) DEFAULT NULL COMMENT '設計交付日期',
primary key (`id`),
constraint `FK_DISPATCH_ID` foreign key (`id`) references `dispatch_order` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='成本表';
(5)sql主鍵欄位擴展閱讀:
主鍵:表中經常有一個列或多列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱為表的主鍵,通過它可強製表的實體完整性。當創建或更改表時可通過定義 PRIMARY KEY 約束來創建主鍵。一個表只能有一個 PRIMARY KEY 約束,而且 PRIMARY KEY 約束中的列不能接受空值。由於 PRIMARY KEY 約束確保唯一數據,所以經常用來定義標識列。
⑹ 如何定義SQL主鍵
在SQL資料庫中,如何定義SQL主鍵是經常要遇到的問題,下面將為您介紹兩種定義SQL主鍵的方法,供您參考,希望對那您有所幫助。
SQL主鍵是資料庫表的一個重要屬性,建立主鍵可以避免表中存在完全相同的記錄,也就是說SQL主鍵在一張表中的記錄值是唯一的。
建立SQL主鍵有兩種方法:一種是在資料庫提供的GUI環境中建立,另一種是通過SQL語句執行建立,下面分別介紹。
1.在資料庫提供的GUI環境中建立(以SQL7為例)。
輸入表信息後按Ctrl鍵同時選中多行,然後點上面的主鍵按鈕就行了。
2.通過SQL語句執行建立。又分兩種,一是在建表語句中直接寫,二是建表之後更改表結構。
在建表語句中直接寫:
Create Table 表名 (欄位名1 Int Not Null,
欄位名2 nvarchar(13) Not Null Primary Key (欄位名1, 欄位名2),
欄位名3…………
欄位名N………… )
建表之後更改表結構:
CREATE TABLE 表名 (欄位名1 Int Not Null,
欄位名2 nvarchar(13) Not Null
欄位名3…………
欄位名N…………)
GO
ALTER TABLE 表名 WITH NOCHECK ADD
CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED
(
[欄位名1],
[欄位名2]
)
GO
【】
2.使用SQL語句創建主鍵約束
使用SQL語句創建主鍵約束可以在創建表(Create Table)或修改表(Alter Table)時進行 創建。
在修改表中創建主鍵約束語法:
ALTER TABLE table_name
ADD
CONSTRAINT constraint_name
PRIMARY KEY [CLUSTERED | NONCLUSTERED]
{(Column[,…n])}
參數說明:
CONSTRAINT:創建約束的關鍵字。
constraint_name:創建約束的名稱。
PRIMARY KEY:表示所創建約束的類型為主鍵約束。
CLUSTERED | NONCLUSTERED:是表示為PRIMARY KEY或UNIQUE約束創建聚集或非聚集索引的關鍵字。PRIMARY KEY約束默認為CLUSTERED,UNIQUE約束默認為 NONCLUSTERED。
下面在指定的資料庫中創建一個名為mytable的數據表,並在該數據表中將「userid」列設置為主鍵。
操作步驟:
(1)在操作系統中選擇「開始」→「所有程序」→「Microsoft SQL Server」→「查詢分析器」命令,打開查詢分析器。
(2)在查詢分析器的工具欄中選擇要連接的資料庫。
(3)在代碼編輯區中編寫如下代碼。
SQL語句如下:
USE 銷售管理系統 --引入資料庫
GO
CREATE TABLE mytable --創建表
(
USERID int CONSTRAINT pk_id PRIMARY KEY, --創建主鍵約束
USERNAME char (20), --數據列
USERPASS char (20), --數據列
USERPHONE char (20), --數據列
USERADDRESS varchar (50), --數據列
USERLEVEL char(2) --
⑺ 怎麼將資料庫中的多個欄位設為主鍵
以將兩個欄位設為主鍵為例:
第一步、首先打開sql server資料庫,進行設計表,按住ctrl鍵,選中兩個要設置為主鍵的欄位,如下圖所示: