sql兩表關聯
A. 兩表關聯查詢sql語句的,要怎麼寫
1、首先打開資料庫客戶端Navicat Premium 15工具,點擊並打開一個資料庫連接。
B. SQL語句兩表聯查
可以用謂詞或聯結實現:
連接實現:
select * from b join a on b.id=a.id where a.b=21
聯結實現的條件是兩表id來自同一值域,表示意義相同.在連接時其實兩可以作成一個表的:
也就是
id,a.b,a.c,b.b.b.c
但由於空值的問題,導致了部分依賴所以才會拆分成兩個表的.
使用謂詞實現:
select * from b where id in (select id from a where a.b=21)
這個可以實現兩表id來自同一值域,但表示意義不同的情況.也就是說兩表中的id有無關性.
相比較而言,連接的方式更快一些,但這種情況是兩表來自同一值域,且意義相同,如果不是這種情況,可能得不到你正確的值的.而使用謂詞不管意義是否相同,都可以得到正確的值.
玩資料庫必須知道這兩個表是否具有相關性,也就是設計時的意義,否則優化詞句什麼的都沒有辦法去做的!
有幾種方式可以實現你的這個需求.
1. 使用表 關聯
SELECT * FROM 表2 JOIN 表1 ON ( 表2.ID = 表1.列1 );
2. 使用 IN
SELECT * FROM 表2 WHERE ID IN ( SELECT 列1 FROM 表1);
3.使用 EXISTS
SELECT * FROM 表2
WHERE EXISTS ( SELECT 1 FROM 表1 WHERE 表2.ID = 表1.列1 );
select * from t2 left join t1 on t2.ID = t1.列1 where t1需要啥條件 and t2需要啥條件
select * from 表2 where 某列 in (select 列1 from 表1) and id=1
C. 已經建立了兩個表,請問如何用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
D. sql 兩個表的數據進行關聯查詢
查詢2個表然後對比唯一的主鍵,對比表名sheet1,sheet2
SELECT * FROM sheet1 LEFT JOIN sheet2 ON sheet1.`列名` = sheet2.`列名`
E. SQL資料庫中表與表之間的關聯怎麼建立
1、在資料庫窗口中,單擊「創建」中「表格」中的「表設計」,打開表設計窗口。
F. SQL Server中 兩個不同的資料庫中的兩張表如何關聯
1、首先就是創建幾個沒有任何關系的表,但是注意,你在將要作為外鍵表的表上必須使用與將要作為主鍵表的數據類型相同。
G. sql語句:一個表和另外兩個表的關聯語句
1.
select
*
from
a
inner
join
b
on
a.bid=b.id
inner
jion
c
on
a.cid=c.id
2.
select
*
from
a,b,c
where
a.bid=b.id
and
a.cid=c.id
1.
如果你是完成兩個表的關聯,那直接查詢就可以了;
2.
如果你要完成一個表同時查詢,就可以使用給表起別名的辦法。
3.
兩個不同的表的關聯查詢如下:
select
*
from
a,b
where
條件
4.
同一個表的關聯查詢:
select
*
from
a
A,
where
a.*=A.*
H. sql server如何關聯兩個表
你是想得到 table2 的數據對吧?
你可以用視圖來做
create view table1 as select id as ttid ,text1,text2 from table2
教程:
CREATE VIEW
名稱
CREATE VIEW — 構建一個虛擬表(視圖)
語法
CREATE VIEW view AS SELECT query
輸入
view
所要創建的視圖名稱.
query
一個將為視圖提供行和列的 SQL 查詢.
請參閱 SELECT 語句獲取有效參數的更多信息.
輸出
CREATE
如果視圖創建成功,返回此信息.
ERROR: Relation 'view' already exists
如果在資料庫中已經存在所聲明的視圖.
NOTICE create: attribute named "column" has an unknown type
如果不聲明,所創建的視圖將有一個未知類型的欄位.例如,下面命令返回一個警告:
CREATE VIEW vista AS SELECT 'Hello World'
然而下面命令將不出現警告:
CREATE VIEW vista AS SELECT text 'Hello World'
描述
CREATE VIEW 將定義一個表的視圖.這個視圖不是物理上實際存在(於磁碟)的.具體的說,自動生成一個改寫索引規則的查詢用以支持在視圖上的檢索.
注意
目前,視圖是只讀的.
使用 DROP VIEW 語句刪除視圖.
用法
創建一個由所有 Comedy (喜劇)電影組成的視圖:
CREATE VIEW kinds AS
SELECT *
FROM films
WHERE kind = 'Comedy';
SELECT * FROM kinds;
code | title | did | date_prod | kind | len
-------+---------------------------+-----+------------+--------+-------
UA502 | Bananas | 105 | 1971-07-13 | Comedy | 01:22
C_701 | There's a Girl in my Soup | 107 | 1970-06-11 | Comedy | 01:36
(2 rows)
兼容性
SQL92
SQL92 為 CREATE VIEW 聲明了一些附加的功能:
CREATE VIEW view [ column [, ...] ]
AS SELECT expression [ AS colname ] [, ...]
FROM table [ WHERE condition ]
[ WITH [ CASCADE | LOCAL ] CHECK OPTION ]
完整的SQL92命令可選的子句是:
CHECK OPTION
這個選項用於可更新視圖.所有對視圖的 INSERT 和 UPDATE 都要經過視圖定義條件的校驗.如果沒有通過校驗,更新將被拒絕.
LOCAL
對這個視圖進行完整性檢查.
CASCADE
對此視圖和任何相關視圖進行完整性檢查.在既沒有聲明 CASCADE 也沒有聲名 LOCAL 時,假設為 CASCADE.
I. 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');
J. SQL資料庫里怎麼讓兩個表想關聯
有多種方法:
1>左聯: select 列名 from Grade left join Class on Grade.GradeID = Class.GradeID
2>右聯: 也是一樣, 只是left改為right
3>平級查詢: select 列名 from Grade, Class where Grade.GradeID = Class.GradeID
當然, 可能還有別的方法, 有這些基本就行了