當前位置:ag真人国际官网-ag旗舰厅官方网站 » 編程語言 » sql多個表欄位

sql多個表欄位-ag真人国际官网

發布時間: 2024-07-16 20:22:10

① mysql多表查詢sql語句怎麼寫

一使用select子句進行多表查詢
select 欄位名 from 表1,表2 … where 表1.欄位 = 表2.欄位 and 其它查詢條件
select a.id,a.name,a.address,a.date,b.math,b.english,b.chinese from tb_demo065_tel as b,tb_demo065 as a where a.id=b.id
注:在上面的的代碼中,以兩張表的id欄位信息相同作為條件建立兩表關聯,但在實際開發中不應該這樣使用,最好用主外鍵約束來實現

二使用表的別名進行多表查詢
如:select a.id,a.name,a.address,b.math,b.english,b.chinese from tb_demo065 a,tb_demo065_tel b where a.id=b.id and b.id='$_post[textid]'
sql語言中,可以通過兩種方式為表指定別名
第一種是通過關鍵字as指定,如
select a.id,a.name,a.address,b.math,b.english,b.chinese from tb_demo065 as a,tb_demo065_tel as b where a.id=b.id
第二種是在表名後直接加表的別名實現
select a.id,a.name,a.address,b.math,b.english,b.chinese from tb_demo065 a,tb_demo065_tel b where a.id=b.id
使用表的別名應注意幾下幾點
(1)別名通常是一個縮短了的表名,用於在連接中引用表中的特定列,如果連接中的多個表中有相同的名稱列存在,必須用表名或表的別名限定列名
(2)如果定義了表的別名就不能再使用表名

三合並多個結果集
sql語言中,可以通過union 或 all將多個select語句的查詢結果合並輸出,這兩個關鍵字的使用說明如下:
union:利用該關鍵字可以將多個select 語句的查詢結果合並輸出,並刪除重復行
all:利用該關鍵字可以將多個select 語句的查詢結果合並輸出,但不會刪除重復行
在使用union或all關鍵字將多個表合並輸出時,查詢結果必須具有相同的結構並且數據類型必須兼容,另外使用union時兩張表的欄位數量也必須相同,否則會提示sql語句有錯誤。
e.x:select id,name,pwd from tb_demo067 union select uid,price,date from tb_demo067_tel

四簡單嵌套查詢
子查詢:子查詢是一個select查詢,返回單個值且嵌套在select、insert、update和delete語句或其它查詢語句中,任何可以使用表達式的地方都可以使用子查詢.
select id,name,sex,date from tb_demo068 where id in(select id from tb_demo068 where id='$_post[test]')
內連接:把查詢結果作為where子句的查詢條件即稱為內連接

五復雜的嵌套查詢
多表之間的嵌套查詢可以通過謂詞in實現,語法格式如下:
test_expression[not] in{
subquery
}
參數說明:test_expression指sql表達式,subquery包含某結果集的子查詢
多表嵌套查詢的原理:無論是多少張表進行嵌套,表與表之間一定存在某種關聯,通過where子句建立此種關聯實現查詢

六嵌套查詢在查詢統計中的應用
實現多表查詢時,可以同時使用謂詞any、some、all,這些謂詞被稱為定量比較謂詞,可以和比較運算符聯合使用,判斷是否全部返回值都滿足搜索條件.some和any謂詞是存在量的,只注重是否有返回值滿足搜索條件,這兩個謂詞的含義相同,可以替換使用;all謂詞稱為通用謂詞,它只關心是否有謂詞滿足搜索要求.
select * from tb_demo069_people where uid in(select deptid from tb_demo069_dept where deptname='$_post[select]')
select a.id,a.name from tb_demo067 as a where id<3)
>any 大於子查詢中的某個值

>=any 大於等於子查詢中的某個值
<=any 小於等於子查詢中的某個值
=any 等於子查詢中的某個值
!=any或>any 不等於子查詢中的某個值
>all 大於子查詢中的所有值

>=all 大於等於子查詢中的所有值
<=all 小於等於子查詢中的所有值
=all 等於子查詢中的所有值
!=all或>all 不等於子查詢中的所有值

七.使用子查詢作派生的表
在實際項目開發過程中經常用到從一個信息較為完善的表中派生出一個只含有幾個關鍵欄位的信息表,通過子查詢就可以來實現這一目標,如
select people.name,people.chinese,people.math,people.english from (select name,chinese,math,english from tb_demo071) as people
注:子查詢應遵循以下規則:
(1)由比較運算符引入的內層子查詢只包含一個表達式或列名,在外層語句中的where子句內命名的列必須與內層子查詢命名的列兼容
(2)由不可更改的比較運算符引入的子查詢(比較運算符後面不跟關鍵字any或all)不包括group by 或 having子句,除非預先確定了成組或單個的值
(3)用exists引入的select列表一般都由*組成,不必指定列名
(4)子查詢不能在內部處理其結果

八使用子查詢作表達式
select (select avg(chinese)from tb_demo071),(select avg(english)from tb_demo071),(select avg(math)from tb_demo071) from tb_demo071
註:在使用子查詢時最好為列表項取個別名,這樣可以方便用戶在使用mysql_fetch_array()函數時為表項賦值,如
select (select avg(chinese) from tb_demo071) as yuwen ,(select avg(english) from tb_demo071) as yingyu,(select avg(math) from tb_demo071) as shuxue from tb_demo071

九使用子查詢關聯數據
select * from tb_demo072_student where id=(select id from tb_demo072_class where classname = '$_post[text]')

十多表聯合查詢
利用sql語句中的union,可以將不同表中符合條件的數據信息顯示在同一列中。
e.x:select * from tb_demo074_student union select * from tb_demo074_fasten
注:使用union時應注意以下兩點:
(1)在使用union運算符組合的語句中,所有選擇列表的表達式數目必須相同,如列名、算術表達式及聚合函數等
(2)在每個查詢表中,對應列的數據結構必須一樣。

十一對聯合後的結果進行排序
為了union的運算兼容,要求所有select語句都不能有order by語句,但有一種情況例外,那就是在最後一個select語句中放置order by 子句實現結果的最終排序輸出。
e.x:select * from tb_demo074_student union select * from tb_demo074_fasten order by id
使用union條件上相對比較苛刻,所以使用此語句時一定要注意兩個表項數目和欄位類型是否相同
十二條件聯合語句
select * from tb_demo076_beijing group by name having name='人民郵電出版社' or name='機械工業出版社' union select * from tb_demo076_beijing group by name having name >'人民郵電出版社' and name >'機械工業再版社' order by id
上面語句應用了group by分組語句和having語句實現條件聯合查詢。其實現目的是先保證將'人民郵電出版社'和'機械工業出版社'始終位於名單最前列,然後再輸出其它的出版社

十三簡單內連接查詢
select filedlist from table1 [inner] join table2 on table1.column1 = table2.column1
其中,filedlist是要顯示的欄位,inner表示表之間的連接方式為內連接,table1.column1=table2.column1用於指明兩表間的連接條件,如:
select a.name,a.address,a.date,b.chinese,b.math,b.english from tb_demo065 as a inner join tb_demo065_tel as b on a.id=b.id

十四復雜內連接查詢
復雜的內連接查詢是在基本的內連接查詢的基礎上再附加一些查詢條件,如:
select a.name,a.address,a.date,b.chinese,b.math,b.english from tb_demo065 as a inner join tb_demo065_tel as b on a.id=b.id where b.id=(select id from tb_demo065 where tb_demo065.name='$_post[text]')
總之,實現表與表之間的關聯的本質是兩表之間存在共同的數據項或者相同的數據項,通過where 子句或內連接inner join … on 語句將兩表連接起來,實現查詢

十五使用外連接實現多表聯合查詢
(1)left outer join表示表之間通過左連接方式相互連接,也可簡寫成left join,它是以左側的表為基準故稱左連接,左側表中所有信息將被全部輸出,而右側表信息則只會輸出符合條件的信息,對不符合條件的信息則返回null
e.x:select a.name,a.address,b.math,b.english from tb_demo065 as a left outer join tb_demo065_tel as b on a.id=b.id
(2)right outer join表示表之間通過右連接方式相互連接,也可簡寫成right join,它是以右側的表為基準故稱右連接,右側表中所有信息將被全部輸出,而左側表信息則只會輸出符合條件的信息,對不符合條件的信息則返回null
e.x:select a.name,a.address,b.math,b.english from tb_demo065 as a right outer join tb_demo065_tel as b on a.id=b.id

十六利用in或notin關鍵字限定范圍
e.x:select * from tb_demo083 where code in(select code from tb_demo083 where code between '$_post[text1]' and '$_post[text2]')
利用in可指定在范圍內查詢,若要求在某范圍外查詢可以用not in代替它

十七由in引入的關聯子查詢
e.x:select * from tb_demo083 where code in(select code from tb_demo083 where code = '$_post[text]')

十八利用having語句過濾分組數據
having子句用於指定組或聚合的搜索條件,having通常與group by 語句一起使用,如果sql語句中不含group by子句,則having的行為與where子句一樣.
e.x:select name,math from tb_demo083 group by id having math > '95'

② sql多表查詢多個欄位

sql語句格式:

select 欄位1,欄位2,欄位3

from 表1,表2,表3

where 條件

例子:查詢s表中的sno欄位, c表中的cno欄位,j表中的jno欄位

select sno,pno,jno

from s,p,j

(2)sql多個表欄位擴展閱讀:

刪除語句:delete * from table_name

查詢語句:select * from persons where rownum <= 5

建立視圖:create view view_name as select column_name(s) from table_name where condition

③ 如何用標准sql語句給一張表中添加多個欄位

alter table 語句

alter table 語句用於在已有的表中添加、修改或刪除列。

如需在表中添加列,請使用下列語法:

altertabletable_name
addcolumn_namedatatype

實例:

/*altertable增加多個欄位*/
altertabletable_useradd
department_idintnotnull
,company_idintnotnull
,temp_colnvarchar(10)
;
熱點內容
matlab命令窗口和新建腳本 發布:2024-07-17 15:51:26 瀏覽:374
建ftp文件夾 發布:2024-07-17 15:51:26 瀏覽:954
魔獸撿物腳本 發布:2024-07-17 15:27:56 瀏覽:129
開發ip伺服器 發布:2024-07-17 15:24:42 瀏覽:386
安卓系統視頻製作哪個好用 發布:2024-07-17 15:10:47 瀏覽:210
androidapk結構 發布:2024-07-17 15:10:43 瀏覽:945
c語言指針的例子 發布:2024-07-17 15:08:01 瀏覽:768
linuxzcat 發布:2024-07-17 15:02:09 瀏覽:901
賓士編程嗎 發布:2024-07-17 14:57:08 瀏覽:853
硬碟加密硬體 發布:2024-07-17 14:51:05 瀏覽:836
网站地图