⑴ 已經建立了兩個表,請問如何用sql語句建立關聯
以下對ORACLE,SQL
SERVER等都適用:
自然連接(列名相同,只選相同列名下兩邊值相等的行):
SELECT
*
FROM
STUDENT
A
NATURAL
JOIN
SCORE
B
內連接(列名不一定相同,只選滿足ON條件的行):
SELECT
*
FROM
STUDENT
A
INNER
JOIN
SCORE
B
ON
A.SNO
=
B.SNO
左外連接(列名不一定相同,只選滿足ON條件的行和左表的全部,右表填充空值):
SELECT
*
FROM
STUDENT
A
LEFT
OUTER
JOIN
SCORE
B
ON
A.SNO
=
B.SNO
右外連接(列名不一定相同,只選滿足ON條件的行和右表的全部,左表填充空值):
SELECT
*
FROM
STUDENT
A
RIGHT
OUTER
JOIN
SCORE
B
ON
A.SNO
=
B.SNO
全外連接(列名不一定相同,只選滿足ON條件的行和兩邊表的全部,無匹配的全部填充空值)
SELECT
*
FROM
STUDENT
A
FULL
OUTER
JOIN
SCORE
B
ON
A.SNO
=
B.SNO
全連接(笛卡爾積,所有行和所有行交叉組合形成新表)
SELECT
*
FROM
STUDENT
A
CROSS
JOIN
SCORE
B
⑵ 如何設置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語句創建表
創建一個基本的表需要做的工作包括:命名大襪表、定義列和各列的數據類型。
SQL 語言使用CREATE TABLE語句來創建新表。
語法:
CREATE TABLE 的基本語法如下所示:
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);
CREATE TABLE 向資料庫系統指明了你的意圖。在此例中,你想要創建一個新表,新表的唯一名稱(或者說標識符)緊跟在 CREATE TABLE 後面。
隨後的圓括弧以列表的形式定義了表中的列以及各列所屬的數據類型。下面的示例對該創建新表的語法做出了更清晰的闡釋。
將 CREATE TABLE 語句滾枯激和 SELECT 語句結合起來可以創建現有表的副本。詳細信息請見利用現有表創建新表.
⑷ 如何用SQL語句建立數據表
sql語句改下就可以了:
select a.[1],
a.[2],
a.[3],
b.[4]
from
a
left
join
b
on
1=1
如果a和b有關聯關系,那麼就把1=1改為a.欄位=b.欄位即可。
欄位名最好不要叫1,2,3,4,也不要用關鍵字,如果你要查詢某個欄位的值是1的,那麼你欄位名也叫1,就會混亂了。
⑸ SQL資料庫裡面怎樣設置表與表之間的關聯
設置關聯的兩表或者多表、通過外鍵關聯、外鍵欄位是從表中的欄位、外鍵(foreign
key)欄位需要在主表做主鍵(primary
key)、
比如
學生表(學號
主鍵,姓名)
主表
課程表(課號
主鍵,課名)
主表
選了表(學號
外鍵,
課號
外鍵,成績)
從表
這樣三個表就關聯了、記住建表順序、先主表、再從表
然後可以使用代碼或者圖形界面管理器創建外鍵、創建完就關聯了
外鍵的取值必須是主鍵的值
⑹ sql server怎麼使用命令創建兩個表的關系
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語句建立關聯
很簡單,幾乎對所有的資料庫,都是 WHERE a.sno = b.sno,其中,a 和 b 是兩張表的別名。
即,SELECT * FROM student a, score b WHERE a.sno = b.sno
a 和 b 我不是說了嗎,是兩張表的別名,純粹是方便而用的,你可以寫成其他的,比如 t1,t2,隨便你,不過在 Select 欄位時,要把 a.欄位名 改成 t1.欄位名,b.欄位名改成 t2.欄位名就是了。
⑻ SQL語言中把資料庫中兩張表數據關聯起來的語句
1、創建兩張測試表,
create table test_cj(name VARCHAR(20), remark varchar2(20));
create table test_kc(name VARCHAR(20), remark varchar2(20));
2、插入測試數據
insert into test_cj values('xh','cj_1');
insert into test_cj values('kcdh','cj_2');
insert into test_cj values('cj','cj_3');
insert into test_kc values('kcdh','kc_1');
insert into test_kc values('kcm','kc_2');
⑼ sql server如何建立表間關系
1.在資料庫庫關系圖里新建資料庫關系圖,如果彈出要創建的提示框點擊是可以了
2.完成創建之後就在關系圖域里右鍵,點擊添加表,把需要建立關系的表添加進去
3.添加完表之後連接關系,把教師表裡的教師ID拖動到學生表裡的教師ID,
4.檢查主外鍵表正確了沒有,如果你想根據學生表查詢教師信息那學生表就是主鍵表,反過來教師就是...
5.完成以上步驟之後就完成連接了,保存為關系圖命名就完成了
⑽ 用SQL語句怎樣建立表和表連接謝謝!
在一個sql語句中通過表與表之間的鍵來做關聯,通過關聯之後的表來檢索需要的數據。
比如:
1.相等連接 select * from tablea a,tableb b where a.user_id=b.ueser_id;
2.外連接 select * from table1 a,table2 b where a.province_code = b.uniform_code(+)
3.不等連接 select * from table1 t1,table2 t2 where t1.name<>t2.name;
4.自連接 select * from table1 a,table1 b where a.name=b.cust_name;