當前位置:首頁 » 編程語言 » sql設置參考表
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql設置參考表

發布時間: 2022-09-03 17:21:50

① 在sql Server中,怎樣參照已有的表建一個結構完全相同的新表

最簡單的方法就是直接把創建表結構的語句導出來 2005裡面有這個功能,步驟如下:
1、選中資料庫A,右鍵->任務->生成腳本,彈出生成腳本向導窗體,點擊下一步。
2、選擇要生成腳本的資料庫,點擊下一步,彈出選擇腳本選項窗體,點擊下一步。
3、彈出選擇對象類型窗體,全選,點擊下一步。
4、彈出選擇存儲過程窗體,全選,點擊下一步。
5、彈出選擇表窗體,全選,點擊下一步。
6、彈出輸出選項窗體,根據需要選擇一種方式。
然後會生成一個創建資料庫的腳本,包括表、存儲過程等等,我們只需要把表A的改成表B,運行一下就可以創建一個無數據的空資料庫B,並且和A表結構完全一樣。不明白可以留言給我,有問必答!

② 如何設置SQL資料庫表與表的關聯關系

如果是 父子關系, 或者 一對多 關系。

可以通過 創建外鍵的方式, 在 父表 與 子表之間, 創建一個關聯關系。

例如:

-- 創建測試主表. ID 是主鍵.
CREATE TABLE test_main (
id INT NOT NULL,
value VARCHAR(10),
PRIMARY KEY(id)
);

-- 創建測試子表.
CREATE TABLE test_sub (
id INT NOT NULL,
main_id INT ,
value VARCHAR(10),
PRIMARY KEY(id)
);

-- 插入測試主表數據.
INSERT INTO test_main(id, value) VALUES (1, 'ONE');
INSERT INTO test_main(id, value) VALUES (2, 'TWO');

-- 插入測試子表數據.
INSERT INTO test_sub(id, main_id, value) VALUES (1, 1, 'ONEONE');
INSERT INTO test_sub(id, main_id, value) VALUES (2, 2, 'TWOTWO');

SQL> -- 創建外鍵(默認選項)
SQL> ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main;

Table altered.

SQL>
SQL> -- 測試刪除主表數據. 將出錯 ORA-02292: 違反完整約束條件
SQL> DELETE
2 test_main
3 WHERE
4 ID = 1;
DELETE
*
ERROR at line 1:
ORA-02292: integrity constraint (HR.MAIN_ID_CONS) violated - child record found

③ sql 資料庫查詢怎樣設置參數

直接在程序里寫成變數就可以了,變數要有賦值,否則會出錯
例如VB里這樣寫
SQL = "select * from proct where ID='" & Trim(Text1.Text) & "'"
rst4.Open SQL, con1, 1, 1

條件表示ID=Text1的Text的值

④ SQL資料庫裡面怎樣設置表與表之間的關聯

設置關聯的兩表或者多表、通過外鍵關聯、外鍵欄位是從表中的欄位、外鍵(foreign
key)欄位需要在主表做主鍵(primary
key)、
比如
學生表(學號
主鍵,姓名)
主表
課程表(課號
主鍵,課名)
主表
選了表(學號
外鍵,
課號
外鍵,成績)
從表
這樣三個表就關聯了、記住建表順序、先主表、再從表
然後可以使用代碼或者圖形界面管理器創建外鍵、創建完就關聯了
外鍵的取值必須是主鍵的值

⑤ 1、 舉例說明創建外鍵的SQL語句中的參照表和被參照表各指什麼ON DELETE CASCADE 關鍵字對刪除記錄有何影

學生表(學號,姓名) 成績表(學號,成績)
這兩個表在學號上建立外鍵關系的話, 學生表是被參照表, 成績表是參照表
通常被參照表的被參照列一般都是主鍵

ON DELETE CASCADE 是級聯刪除
意思是說如果刪除學生表裡的A學號的記錄,那成績表裡所有學號為A的記錄也會同時被刪除。

⑥ 在SQL sever 2005上能實現相互參照兩個表的建立嗎比如表1參照表2,同時表2參照表1,應該怎麼建表呢

select * from 表2
into 表1

⑦ sql sever 2000中如何在兩個表之間建立參照關系

sql server中表之間的關聯關系是通過建立外鍵來實現的。
創建SQL的主鍵和外鍵約束的方法:
create table Student --建表格式:create table 自定義的表名
( --欄位名一般為有一定意義的英文
StudentName nvarchar(15), -- 格式:欄位名類型()括弧裡面的是允許輸入的長度
StudentAge int, --int型的後面不需要接長度
StudentSex nvarchar(2) --最後一個欄位後面不要逗號
)

--在創建表時就可以對欄位加上約束:
create table Student
(
StudentNo int PRIMARY KEY IDENTITY(1,1), --加主鍵約束,還有標識列屬性(兩者構成實體完整性)
StudentName nvarchar(15) not null, --加非空約束,不加"not null" 默認為:可以為空
StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外鍵約束,格式:FOREIGN KEY REFERENCES 關聯的表名(欄位名)
StudentAge int DEFAULT ((0)), --加默認值約束
StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加檢查約束,格式:check (條件表達式)
)

--外鍵約束:
alter table 表名
add constraint FK_欄位名--"FK"為外鍵的縮寫
foreign key (欄位名) references 關聯的表名(關聯的欄位名) --注意'關聯的表名'和'關聯的欄位名'

⑧ 資料庫中如何建立表的參照關系

參照關系就是主外鍵,其最重要的作用是保護你的數據的完整性。
SQL的主鍵和外鍵的作用:
外鍵取值規則:空值或參照的主鍵值。
(1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。
(2)更新時,不能改為主鍵表中沒有的值。
(3)刪除主鍵表記錄時,你可以在建外鍵時選定外鍵記錄一起級聯刪除還是拒絕刪除。
(4)更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。
簡而言之,SQL的主鍵和外鍵就是起約束作用。

關系型資料庫中的一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成為一個主鍵。
比如:
學生表(學號,姓名,性別,班級)
其中每個學生的學號是唯一的,學號就是一個主鍵;
課程表(課程編號,課程名,學分)
其中課程編號是唯一的,課程編號就是一個主鍵;
成績表(學號,課程號,成績)
成績表中單一一個屬性無法唯一標識一條記錄,學號和課程號的組合才可以唯一標識一條記錄,所以,學號和課程號的屬性組是一個主鍵。

成績表中的學號不是成績表的主鍵,但它和學生表中的學號相對應,並且學生表中的學號是學生表的主鍵,則稱成績表中的學號是學生表的外鍵;同理,成績表中的課程號是課程表的外鍵。

定義主鍵和外鍵主要是為了維護關系資料庫的完整性,總結一下:
一、主鍵是能確定一條記錄的唯一標識,比如,一條記錄包括身份正號,姓名,年齡。身份證號是唯一能確定你這個人的,其他都可能有重復,所以,身份證號是主鍵。
外鍵用於與另一張表的關聯。是能確定另一張表記錄的欄位,用於保持數據的一致性。比如,A表中的一個欄位,是B表的主鍵,那他就可以是A表的外鍵。

二、主鍵、外鍵和索引的區別

定義:
主鍵--唯一標識一條記錄,不能有重復的,不允許為空
外鍵--表的外鍵是另一表的主鍵, 外鍵可以有重復的, 可以是空值
索引--該欄位沒有重復值,但可以有一個空值

作用:
主鍵--用來保證數據完整性
外鍵--用來和其他表建立聯系用的
索引--是提高查詢排序的速度

個數:
主鍵--主鍵只能有一個
外鍵--一個表可以有多個外鍵
索引--一個表可以有多個唯一索引

創建SQL的主鍵和外鍵約束的方法:

create table Student --建表格式:create table 自定義的表名
( --欄位名一般為有一定意義的英文
StudentName nvarchar(15), -- 格式:欄位名類型()括弧裡面的是允許輸入的長度
StudentAge int, --int型的後面不需要接長度
StudentSex nvarchar(2) --最後一個欄位後面不要逗號
)

--在創建表時就可以對欄位加上約束:
create table Student
(
StudentNo int PRIMARY KEY IDENTITY(1,1), --加主鍵約束,還有標識列屬性(兩者構成實體完整性)
StudentName nvarchar(15) not null, --加非空約束,不加"not null" 默認為:可以為空
StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外鍵約束,格式:FOREIGN KEY REFERENCES 關聯的表名(欄位名)
StudentAge int DEFAULT ((0)), --加默認值約束
StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加檢查約束,格式:check (條件表達式)
)

--如果在表創建好了以後再加約束,則格式分別為:

-- 主鍵:
alter table 表名
add constraint PK_欄位名--"PK"為主鍵的縮寫,欄位名為要在其上創建主鍵的欄位名,'PK_欄位名'就為約束名
primary key (欄位名) --欄位名同上

--唯一約束:
alter table 表名
add constraint UQ_欄位名
unique (欄位名)

--外鍵約束:
alter table 表名
add constraint FK_欄位名--"FK"為外鍵的縮寫
foreign key (欄位名) references 關聯的表名(關聯的欄位名) --注意'關聯的表名'和'關聯的欄位名'

alter table 表A add constraint FK_B foreign key (ticket_no) references 表B(ticket_no)
alter table 表A add constraint FK_C foreign key (person_no) references 表C(person_no)

alter table 成績表 add constraint FK_StudentNo foreign key (StudentNo) references Student (StudentNo)
ON UPDATE CASCADE ON DELETE CASCADE
級聯更新,級聯刪除,這樣在刪除主表Student時,成績表中該學生的所有成績都會刪除。

--檢查約束:
alter table 表名
add constraint CK_欄位名
check (條件表達式) --條件表達式中的條件用關系運算符連接

--默認值約束:
alter table 表名
add constraint DF_欄位名
default '默認值' for 欄位名--其中的'默認值'為你想要默認的值,注意'for'

--刪除創建的約束:
alter table 表名
drop constraint 約束名--約束名為你前面創建的如:PK_欄位這樣的約束名
--注意:如果約束是在創建表的時候創建的,則不能用命令刪除
--只能在'企業管理器'裡面刪除

-- 獲取SqlServer中表結構
SELECT syscolumns.name,systypes.name,syscolumns.isnullable,
syscolumns.length
FROM syscolumns,systypes
WHERE syscolumns.xusertype = systypes.xusertype
AND syscolumns.id = OBJECT_ID('Student')

-- 單獨查詢表遞增欄位
SELECT [name] FROM syscolumns WHERE
id = OBJECT_ID(N'Student') AND COLUMNPROPERTY(id,name,'IsIdentity')=1

-- 獲取表主外鍵約束
EXEC sp_helpconstraint 'StuResults'

-- 查詢表主鍵外鍵信息
SELECT sysobjects.id objectId,OBJECT_NAME(sysobjects.parent_obj) tableName,
sysobjects.name constraintName, sysobjects.xtype AS constraintType,
syscolumns.name AS columnName
FROM sysobjects INNER JOIN sysconstraints
ON sysobjects.xtype in('C', 'F', 'PK', 'UQ', 'D')
AND sysobjects.id = sysconstraints.constid
LEFT OUTER JOIN syscolumns ON sysconstraints.id = syscolumns.id
WHERE OBJECT_NAME(sysobjects.parent_obj)='StuResults'

⑨ SQL 完整性 約束 問題。 表間參考約束

declare
co_total number(10);
begin
select sum(ORD_QTY_SUM) into co_total from ec_CLONE_cgt_co where org_code ='11340101'
and order_date =(select distinct replace (varchar(current date) ,'-','') from ec_CLONE_cgt_co);
IF co_total>100 THEN
for cust_id in (select cust_code from ec_CLONE_cgt_co_detail where cgt_code='6901028225137')
loop

⑩ SQL中作為參照關系的表如果想對裡面的類型進行修改應該怎麼做 不要刪除

方法一:滑鼠操作。管理工具打開表設計狀態進行表結構修改。修改的類型盡力比之前的要大。避免數據丟失。
方法二:用DDL語句對表欄位類型進行變更。
方法三:將該表數據用Select * Into WK_Test(臨時起個不存在的表名) From 元表
然後設計狀態任意修改該表結構。再將WK_Test(臨時起個不存在的表名)
用Insert Into 元表 Select * from WK_Test(臨時起個不存在的表名) 數據還原。