A. sql怎樣用命令設置主鍵
我現在發現使用較少的語句也可以啦,比如:alter
tabler
badd
primary
key(id)將表b中的欄位id設為主鍵這個方法和你的視覺上的效果是一樣的,就是不曉得內部是否一樣的。
B. 在sql中怎樣設置主鍵語法
創建表
--------------------------------------------------------------------------------
CREATE TABLE TABLE_NAME(
column1 DATATYPE [NOT NULL] [PRIMARY KEY],
column2 DATATYPE [NOT NULL],
...
[constraint <約束名> 約束類型 (要約束的欄位名)... ]
);
說明:
TABLE_NAME --表名.
column1,column2 --列的名稱 不能取關鍵字
DATATYPE --是Oracle的數據類型,可以查看附錄.
NOT NULL /NULL --不可以/可以允許資料有空的.NULL一般省略.
PRIMARY KEY --是本表的主鍵。
CONSTRAINT --是對表裡的欄位添加約束.(約束類型有 Check,Unique,Primary key,not null,Foreign key)。
示例:
CREATE TABLE student(
s_id number(8) PRIMARY KEY,
s_name varchar2(20) NOT NULL,
s_sex varchar2(8) ,
clsid number(8) ,
CONSTRAINT u_1 UNIQUE(s_name),
CONSTRAINT c_1 CHECK (s_sex in ('MALE','FEMALE'))
);
表級約束
如 設置 兩列不能同時為空
ALTER TABLE tablename ADD CONSTRAINT check_name CHECK (col1 is not null or col2 is not null) ;
復製表
--------------------------------------------------------------------------------
CREATE TABLE TABLE as <SELECT 語句>
(需注意的是復製表不能復製表的約束);
示例:
CREATE TABLE test AS SELECT * FROM emp;
會將表emp的數據一並復制到test中,但約束沒有復制.
如果只復製表的結構不復製表的數據則:
CREATE TABLE test as (SELECT * FROM emp WHERE 1=2);
或者
CREATE TABLE test as (SELECT * FROM emp WHERE FALSE);
C. sql,怎麼修改主鍵(原主鍵未知)
不用刪除,直接就是修改。alter table....
D. SQL表主鍵可不可以修改update
ifobject_id('primarytbl')isnotnull
droptableprimarytbl
go
--建主表
createtableprimarytbl
(
IDintprimarykey,--主鍵
aaint,
bbint,
ccint
)
go
ifobject_id('foreigntbl')isnotnull
droptableforeigntbl
go
--建外表
createtableforeigntbl
(
IDintprimarykey,--主鍵
aaint
(ID)--建立外鍵
onupdatecascade,--更新級聯
ddint,
eeint
)
go
--插入主表數據
insertintoprimarytbl
select1,1,2,3unionall
select2,2,3,4unionall
select3,3,4,5unionall
select4,4,5,6unionall
select5,5,6,7unionall
select6,6,7,8
go
--插入外表數據
insertintoforeigntbl
select1,1,2,2unionall
select2,1,3,3unionall
select3,2,4,4unionall
select4,2,4,4unionall
select5,2,5,5unionall
select6,3,6,6unionall
select7,4,7,7
go
--顯示主外表信息
select*
fromprimarytbl
select*
fromforeigntbl
go
--primarytbl
/*
IDaabbcc
--------------------------------------------
1123
2234
3345
4456
5567
6678
--foreigntbl
IDaaddee
--------------------------------------------
1122
2133
3244
4244
5255
6366
7477
*/
--更新主表主鍵
updateprimarytbl
setID=8
whereID=1
go
--結果
select*
fromprimarytbl
select*
fromforeigntbl
go
/*
--primarytbl
IDaabbcc
--------------------------------------------
2234
3345
4456
5567
6678
8123
--foreigntbl
IDaaddee
--------------------------------------------
1822
2833
3244
4244
5255
6366
7477
*/
droptableforeigntbl
droptableprimarytbl
E. 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)
F. SQL中主鍵列能修改嗎
如果表之前有主鍵則先刪除:
alter table 表名 drop constraint 主鍵名
修改主鍵:
alter table 表名 add constraint 主鍵名 primary key (column1,column2,....,column)
注意:這里的主鍵名是自己定義的一個字元串,可以不是表中欄位名(習慣寫成:PK_表名 的格式),不過要牢記啊,刪除的時候用到的也是這個名!括弧中的才是表中存在的欄位。
G. 請問如何修改SQL主鍵列的值
: "可以改,用update 就行,但是要避免主鍵值和表中現有數據沖突。 另,如果有其它表用該表主鍵做外鍵的話,也不能隨便修改主鍵值"
H. 如何更改SQL資料庫中的主鍵數據
主鍵就是用來標識每條記錄的,它必須具有唯1性,同時它也具有唯1聚集索引的功能,方便查找記錄,用主鍵查找記錄是最高效的,但是主鍵不1定是單唯一列,可以由多列共同組成主鍵
I. sql --表建好後,想改主鍵.用sql語句怎樣寫
分2步,先刪除原來的,再建新的
1、ALTER TABLE table_name DROP PRIMARY KEY (id)
說明:把主鍵的定義刪除。
ALTER TABLE table_name ADD PRIMARY KEY (no)
說明:更改表得的定義把no設為主鍵。
J. sql語句如何修改主鍵,請舉個小例子.
補充2:我找到了約束名,已經刪除,但在添加的時候又出問題了,意思說不能在可以為空的欄位上創建primary key約束,那麼應該怎樣改?????????
你修改的為主鍵的列 以前在建表的時候默認是可以NULL的,你把DEFAULT NULL
或者把表結構上的對應列的NULL的勾去掉就可以加主鍵了
不能在可以為空的欄位上創建primary key約束的。。