SQL——SQL查詢的基本結(jié)構(gòu)

1、單關(guān)系查詢

1)查詢通式:

select 屬性1,屬性2,……
from
where P;(P是謂詞)

盡管各子句必須以select、from、where的次序?qū)懗?,但理解查詢所代表的的最容易方式是運算的順序來考察各子句:首先是from,然后是where,最后是select。

2)示例
# 查詢表中所有屬性
SELECT *FROM department;
# 查詢表中的某些屬性
SELECT dept_name FROM department;
SELECT dept_name,building FROM department;
SELECT budget FROM department;
# 想要去除重復(fù)時,可在select后加上distinct。
SELECT DISTINCT budget FROM department;
# where 子句允許我們選出那些在from子句的結(jié)果關(guān)系中滿足特定謂詞的元組
# (注:查詢一個關(guān)系得到的結(jié)果是一個新的關(guān)系)
SELECT budget FROM department WHERE budget>=15;
3)結(jié)果截圖
SELECT *FROM department;
SELECT dept_name FROM department;
SELECT dept_name,building FROM department;
SELECT budget FROM department;
SELECT DISTINCT budget FROM department
SELECT budget FROM department WHERE budget>=15

2、多關(guān)系查詢

1)查詢通式:

select 屬性1,屬性2,……
from 表1,表2,……
where P;(P是謂詞)

2)示例:
SELECT department.dept_name,name,building
FROM department,instructor
WHERE department.dept_name = instructor.dept_name;

該示例的原理:
通過from子句定義了一個該子句中所列出關(guān)系上的笛卡爾積。它可以用集合理論來形式化地定義,但最好是通過迭代過程來理解,此過程可為from子句的結(jié)果產(chǎn)生關(guān)系元組。

         for each 元組1 in 關(guān)系1(表1)
              for each 元組2 in 關(guān)系2
                  ……
                  for each 元組t in 關(guān)系t
                  把元組1,元組2,……元組t連接成單個元組m
                  把元組m加到結(jié)果關(guān)系中

然后從結(jié)果關(guān)系中查詢滿足謂詞P的元組

笛卡爾積:
例如:關(guān)系1和關(guān)系2如下:

name age salary
smith 34 7000
white 25 8000
name com favorite
smith unknow football
white unknow table ball

那么這兩個關(guān)系的笛卡爾積如下(結(jié)果是新的關(guān)系):

name age salary name com favorite
smith 34 7000 smith unknow football
smith 34 7000 white unknow table ball
white 25 8000 smith unknow football
white 25 8000 white unknow table ball
3)結(jié)果:
關(guān)系表instructor
關(guān)系表department
查詢結(jié)果表

3、自然連接運算(natural join)

1)定義:

它作用于兩個關(guān)系,并產(chǎn)生一個關(guān)系作為結(jié)果。自然連接只考慮那些在兩個關(guān)系模式中都出現(xiàn)的屬性上取值相同的元組對。

例如:

name age salary
smith 34 7000
white 25 8000
name com favorite
smith unknow football
black unknow table ball

則結(jié)果為:

name age salary name com favorite
smith 34 7000 smith unknow football
2)通用形式:

select 屬性1,……
from 關(guān)系1 natural join 關(guān)系2 …… natural join 關(guān)系t
where P

示例:

SELECT department.dept_name,name,building
FROM department NATURAL JOIN instructor;

結(jié)果是等價于(當且僅當department是instructor的參照):

SELECT department.dept_name,name,building
FROM department,instructor
WHERE department.dept_name = instructor.dept_name;

那么如何判斷兩個表之間的參照關(guān)系:
假設(shè)關(guān)系B中含有關(guān)系A(chǔ)的主碼(屬性),則B參照了A。這個屬性在B上稱作參照A的外碼。關(guān)系B也稱為外碼依賴的參照關(guān)系,關(guān)系A(chǔ)稱作外碼的被參照關(guān)系。

十大經(jīng)典排序算法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容