SQL的查詢語句中有一個“自連接查詢”怎么理解?能舉個例子就更好
假設在【成績表】有【主鍵ID】【學生姓名】【課程名稱】【成績】等字段。
現在要查詢 “語文成績>;=數學成績”的學生姓名,這時就可以使用自連接查詢:
select 【學生姓名】
from 【成績表】 AS a,【成績表】 AS b
where a.【主鍵ID】=b.【主鍵ID】
and a.【成績】>=b.【成績】
and a.【課程名稱】='語文'
and b.【課程名稱】='數學'
自連接是指使用表的別名實現表與其自身連接的查詢方法。
SQL語句連接查詢
你對books這個表的描述太籠統,還沒發完全了解你的意思,什么叫首漂會員,什么叫在漂會員?他們跟圖書的關系是什么?這些都不清楚,SQL沒發寫。我根據自己的理解簡單說說,你可以對比著來做:
你這個查詢實際上不需要鏈接查詢,鏈接查詢是要查詢兩個表的內容,你這個只是查一個表的內容,只要會員姓名對嗎?可以這樣寫:
這就是查首票會員的:
select name from members
where account in
(
select firstcount from boos where id=xxxxxx
)
如果你同時要查圖書和會員的信息,才需要關聯查詢,可以這樣寫:
select 。.. from members a, books b
where *t = *acount
and *=xxxx
SQL 基本語句 表的連接查詢
問題一:*>*
x 表和 y 表中有相同的字段 degree, x 中的 degree 值大于 y 中的
問題二:*='3-105'and *>* and *='109' and *='3-105'
x 表中的 cno 字段值為'3-105'
x 表中的 degree 值大于 y 中的 degree 值
y 表中的 sno 字段值為'109'
y 表中的 cno 字段值為'3-105'
以上4個條件取交集
問題三:類似語句
1.
SELECT *_id, *_nme, *e_type, *g_addr,
*_num,*t_id
FROM pcc_tb_guest_mbl a, pcc_tb_guest_num b, pcc_tb_account c
WHERE *_id = *_id
AND *t_id = *t_id
AND *_nme LIKE '王%%'
AND *e_type = 'voic02'
AND *_num LIKE '8976%'
ORDER BY *_num DESC
2.
SELECT *_num 電話號碼,
DECODE (*_status, 'A', '可使用', 'V', '保留號','已使用') 狀態
FROM (SELECT phone_num, num_status
FROM pcc_tb_nm_number
WHERE MOD (SUBSTR (phone_num, 7), 11) = '0'
AND phone_num LIKE '85%'
AND num_status IN ('A','V') b
WHERE MOD (SUBSTR (*_num, 5, 2), 11) = '0'
第一個你肯定能看懂,第二個寫了幾個函數DECODE,MOD,SUBSTR
DECODE(字段名,值1,翻譯值1,值2,翻譯值2,。值n,翻譯值n,缺省值)
MOD(m,n) 取 m 除以 n 的余數
SUBSTR(字段名,m,n) 字段中從 m 位置開始,取 n 的長度,若 n 省略默認
取到最后
第二句即查詢電話號碼如 85%xxyy (尾號是雙重號),狀態是'可使用'和'保留號'的號碼
希望對你有所幫助
SQL連接查詢語句問題
簡單寫的話,sql語句就是:
SELECT TOP 10 [Title], [Date]
FROM (
SELECT [Title], [Date]
FROM [New]
UNION
SELECT [Title], [Date]
FROM [Res]
UNION
SELECT [Title], [Date]
FROM [Affiche]
) AS tblTitle
ORDER BY [Date]
然后就是固定的RecordSet語句了。
----------------------------------------
修改如下:
SELECT TOP 10 [Title], [Date]
FROM (
SELECT [Title], [Date]
FROM [New]
UNION ALL
SELECT [Title], [Date]
FROM [Res]
UNION ALL
SELECT [Title], [Date]
FROM [Affiche]
) AS tblTitle
ORDER BY [Date]
SQL語句中各個連接的用法和區別
1、顯示數據庫列表。
show databases;
剛開始時才兩個數據庫:mysql和test。mysql庫很重要它里面有MYSQL的系統信息,我們改密碼和新增用戶,實際上就是用這個庫進行操作。
2、顯示庫中的數據表:
use mysql; //打開庫,學過FOXBASE的一定不會陌生吧
show tables;
3、顯示數據表的結構:
describe 表名;
4、建庫:
create database 庫名;
5、建表:
use 庫名;
create table 表名 (字段設定列表);
6、刪庫和刪表:
drop database 庫名;
drop table 表名;
7、將表中記錄清空:
delete from 表名;
8、顯示表中的記錄:
select * from 表名;
三、一個建庫和建表以及插入數據的實例
drop database if exists school; //如果存在SCHOOL則刪除
create database school; //建立庫SCHOOL
use school; //打開庫SCHOOL
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
); //建表結束
//以下為插入字段
insert into teacher values('','glchengang','深圳一中','1976-10-10');
insert into teacher values('','jack','深圳一中','1975-12-23');
注:在建表中(1)將ID設為長度為3的數字字段:int(3)并讓它每個記錄自動加一:auto_increment并不能為空:not null而且讓他成為主字段primary key(2)將NAME設為長度為10的字符字段(3)將ADDRESS設為長度50的字符字段,而且缺省值為深圳。varchar和char有什么區別呢,只有等以后的文章再說了。(4)將YEAR設為日期字段。
如果你在mysql提示符鍵入上面的命令也可以,但不方便調試。你可以將以上命令原樣寫入一個文本文件中假設為*,然后復制到c:\\下,并在DOS狀態進入目錄[url=file://\\mysql\\bin]\\mysql\\bin[/url],然后鍵入以下命令:
mysql -uroot -p密碼 *
注釋:將數據庫school備份到*文件,*是一個文本文件,文件名任取,打開看看你會有新發現。
sql中什么時候用內連接查詢,什么時候用外連接查詢?用起來好像一樣
需要查找兩張表同時存在的數據,使用內連接
需要查找兩張表中一張表存在,另一張表不存在的時候使用左外鏈接 或 右外鏈接
內連接的查詢結果都是滿足連接條件的元組。但有時我們也希望輸出那些不滿足連接條件的元組信息。比如,我們想知道每個學生的選課情況,包括已經選課的學生(這部分學生的學號在學生表中有,在選課表中也有,是滿足連接條件的),也包括沒有選課的學生(這部分學生的學號在學生表中有,但在選課表中沒有,不滿足連接條件),這時就需要使用外連接。外連接是只限制一張表中的數據必須滿足連接條件,而另一張表中的數據可以不滿足連接條件的連接方式。3種外連接:
1)左外連接(LEFTOUTER JOIN)
如果在連接查詢中,連接管子左端的表中所有的元組都列出來,并且能在右端的表中找到匹配的元組,那么連接成功。如果在右端的表中,沒能找到匹配的元組,那么對應的元組是空值(NULL)。這時,查詢語句使用關鍵字LEFT OUTERJOIN,也就是說,左外連接的含義是限制連接關鍵字右端的表中的數據必須滿足連接條件,而不關左端的表中的數據是否滿足連接條件,均輸出左端表中的內容。
例如:要查詢所有學生的選課情況,包括已經選課的和還沒有選課的學生,查詢語句為
SELECT學生表.學號,姓名,班級,課程號,成績
FROM學生表LEFT OUTER JOIN選課表ON學生表.學號=選課表.學號
左外連接查詢中左端表中的所有元組的信息都得到了保留。
2)右外連接(RIGHTOUTERJOIN)
右外連接與左外連接類似,只是右端表中的所有元組都列出,限制左端表的數據必須滿足連接條件,而不管右端表中的數據是否滿足連接條件,均輸出表中的內容。
例如:同上例內容,查詢語句為
SELECT學生表.學號,姓名,班級,課程號,成績
FROM學生表RIGHTOUTERJOIN選課表ON學生表.學號=選課表.學號
右外連接查詢中右端表中的所有元組的信息都得到了保留。
3)全外連接(FULL OUTER JOIN)
全外連接查詢的特點是左、右兩端表中的元組都輸出,如果沒能找到匹配的元組,就使用NULL來代替。
例如:同左外連接例子內容,查詢語句為
SELECT學生表.學號,姓名,班級,課程號,成績
FROM學生表FULL OUTER JOIN選課表ON學生表.學號=選課表.學號
全外連接查詢中所有表中的元組信息都得到了保留。