⑴ 在sql中使用子查詢需要注意哪些事項
多練習很重要,很多子查詢能做的工作用聯接也可以做,SELECT語句有時候聯結還會好理解一點。不過如果子查詢需要用到一些函數的時候聯接就不太方便,如MAX(),AVG()這些,如果是INSERT,UPDATE,DELETE的話也不能用
⑵ sql簡單查詢語句
1、首先打開資料庫,建立好表。
⑶ SQL(查詢)一些簡單的問題
1.select first_name,salary from employees where salary>=7500;
2.select first_name,dept_id from employees where em_id=116;
3.select first_name,salary from employees where salary between 5000 and 12000;
4.select first_name,dept_id from employees where dept_id in(30,90);
5.select first_name,job_id from employees where mgr_id is null;
6.select first_name,salary from employees where comm is not null;
7.select first_name from employees where first_name like '_a%';
8.select first_name,salary,comm,(salary+comm)*12 year_money from employees;
⑷ sql server 2000的查詢方式有哪些
這個?
sql查詢方式總結
簡單查詢
1,檢索表中所有列
select * from <表名>
2,檢索表中特定列
select <列名表列> from <表名>
3,重排列順序
select cloumn_3,cloumn_1 from <表名>
4,用單引號加入字元串
select cloumn_3,cloumn_1 '所要加的欄位名' from<表名>
5,改變列標題
select cloumn_3,cloumn_1 as '新列名' from <表名>
6,消除重復行
select distinct cloumn_3 from <表名>
7,返回有限的結果
select top n [percent]* from <表名>
8,使用算數運算符操縱列
example:
select cloumn_1+'('+cloumn_2+')' [as] '新列名',cloumn_3*cloumn_4 '新列名' from <表名>
9,使用函數操縱列
--常用函數有substring()[取子字元串]、getdate()[返回當前日期和時間]、year(data)[返回日期中的年份]、convert()[類型轉換]
example:
select distinct substring(title,1,5) from pubs
又如:返回當前伺服器的用戶名
select 'login'=suser_sname()
再如查詢pubs資料庫的titles表中所有書的價格信息,對於書名長度超過38個字元的,將其餘部分截掉
use pubs
select convert(char(38),title)+'IS $'+ convert(varchar(10),price) from titles
選擇行查詢
1,基於比較選擇行
example:
select 價格,* from goods where 價格>=1000
2,基於范圍選擇行
select * from goods where 價格 between 20 and 2000
--3,基於列表選擇行
select * from goods where 品名 not in('方正A','聯想')
4,基於字元串選擇行
--百分號(%):代表任意多個字元
--下劃線(_):代表單個字元
--中括弧([]):代表指定范圍內的單個字元
--復合符號([^]):代表不在指定范圍內的單個字元
--5,基於未知選擇行
--使用IS NULL IS not NULL
select 姓名,職業 from students where 聯系電話 IS null
--6,基於多個搜索條件選擇行
select 姓名,職業,聯系電話,地址 from students
where (聯系電話 like '%3%'or 聯系電話 like '%5%')
and (地址 like '河南')
--7,結果排序
select * from goods
select 價格 from goods
order by 價格 ASC
生成總結查詢
使用SQL查詢語言,用戶可以方便地為查詢到的結果進行分組、計算或對其進行過濾等,從而得到總結性的數據結果集。
1,使用集合函數進行統計
(1)AVG 該函數用於計算查詢結果的平均值。其語法格式如下:
AVG([all | distinct] 算數表達式) 其中各參數的意義如下:
all:全部數據都參與計算,為默認的選項。
distinct:消除重復的數據,只計算不同的值的平均值。
算數表達式:該表達式即可以只涉及一列,也可涉及多列
example:要計算Sales資料庫中Goods表中的所有貨品的平均價格
use Sales
select avg(價格) from goods
(2)min、max 這兩個函數用於查詢最小值和最大值,語法格式如下:
min([all | distinct] 算數表達式)
(3)sum 該函數用於計算查詢到的數據值得總和
example:計算Pubs資料庫中的titles表中所有商業類書籍的平均預付款和本年度迄今為止的全部銷售額。
use pubs
select avg(advance),sum(ytd_sales) from titles where type='business'
(4)count 該函數可以計算查詢到的結果的數目
example:查詢sales資料庫中customers表中客戶地址的數量。
use sales
select count(distinct 地址) from customers
2,數據分組
(1)group by子句
在SQL Sever中,可以按照一定的條件對查詢到的結果進行分組,然後對每一組數據計算統計信息。
說明:1,使用group by 子句能按列或表達式分組,一般與集合函數一起使用,每組差生一個值。
2,在包含group by子句的查詢語句中,select語句後的所有欄位列表,除集合函數外,都應該包含 在group by子句中,否則會出錯。
3,對數據進行分組時,也可以用條件進行選擇,這就是having子句。
(2)having子句
having子句可以用來向使用Group by子句的查詢中添加過濾准則,即檢查分組之後的各組是否滿足條件。having子句語法與where子句一樣,但兩者之間還是存在一定區別,具體如下:
1,where子句的作用是檢查每條記錄是否滿足條件,而having子句是檢查分組之後的各組是否滿足條件。
2,having子句是針對Group by子句的,沒有Group by子句時不能使用having子句。
3,having子句可以在條件中包含集合函數,但where子句不行
exam:顯示sales資料庫中Goods表中存貨量大於70的貨品及庫存數量,具體代碼如下:
use sales
----select 品名,庫存數量 from Goods where 庫存數量>70
select 品名,庫存數量=sum(庫存量) from Goods group by 品名 having sum(庫存量)>7
①where子句排出不滿足條件的行
②group by子句收集滿足where子句的搜索行,並將這些行分組
③having子句排出不符合其條件的組
此外,使用group by all能夠顯示所有的組,即便是被where子句排除的組也將會顯示出來
3,計算匯總數據
(1)compute子句
可以使用該子句計算匯總數據,該匯總數據將作為附加的匯總列出現在結果集的最後
exam:在pubs資料庫的titles表中查詢類型是以cook結尾的書的價格和總價
use pubs
select type,price from titles where type like '%cook'
order by type,price
compute sum(price)
(2)compute by 子句
在查詢中使用該子句可以按給定的條件將查詢結果分組,並為每種結果計算匯總數據。
exam:在pubs資料庫的titles表中查詢類型是以cook結尾的書的價格和每種類型的總價
use pubs
select type,price from titles where type like '%cook'
order by type,price
compute sum(price) by type
(3)計算匯總數據時的注意事項
在使用compute子句和compute by 子句時,應注意下面的限制條件:
1,關鍵字distinct不允許同集合函數一起使用
2,compute子句中的列必須在select後面的選擇列表
3,select into 不能和compute子句一塊使用
4,若使用compute by子句,則必須使用order by子句。此時,compute by子句後出現的列必須與order by後出現的列相同,最少也應該是其子集,而且必須具有相同的從左到右的順序並且以相同的表達式開頭,不能跳過任何錶達式。
http://hi..com/wmaple/blog/item/6de746d0d3ba708aa1ec9c1b.html
⑸ 怎樣從簡單資料庫用sql語句查詢數據
查詢是SQL語言的核心,SQL語言只提供唯一一個用於資料庫查詢的語句,即SELECT語句。用於表達SQL查詢的SELECT語句是功能最強也是最復雜的SQL語句,它提供了很多選項和使用方法。SELECT語句的命令格式如下:
SELECT查詢語句是由七個子句構成,其中SELECT和FROM子句是一個完整SELECT查詢語句必須要有的,其它的子句可以根據具體需要任選。上述的每個子句功能說明如下:
(1)SELECT子句
列出所有要求SELECT語句進行檢索的數據項,這些項可能取自資料庫中關系表的列,也可以是SQL在執行查詢時進行計算的表達式。這里的ALL和DISTINCT選項,表示查詢出的結果中是否容許有內容重復的行出現,預設時是ALL項,表示容許有重復的行出現,而*則表示查詢出所指定關系表中所有的列。
(2)FROM子句
FROM子句列出包含所要查詢的數據關系表。
(3)WHERE子句
WHERE子句告訴SQL只查詢某些關系表中滿足一定要求的行的數據,查詢要求由WHERE子句中的查詢條件確定。
(4)GROUP BY子句
GROUP BY子句指定當前查詢是匯總查詢,即不是對根據每行產生一個查詢結果,而是對相似的行進行分組,然後再對每組產生一個匯總查詢的結果。
(5)HAVING子句
HAVING子句告訴SQL只對由GROUP BY所得到的某些行組的結果進行過濾,選擇出滿足分組條件的分組。
(6)ORDER BY子句
ORDER BY子句確定是否將查詢出的結果按一列或多列中的數據進行排序,預設時是不排序的。
(7)INTO子句
INTO子句確定是否將查詢出的結果存入一張新的關系表中,預設時只將查詢出現的結果顯示在屏幕上。這是非標准SELECT語句中的子句,但目前絕大多數實際應用的SQL資料庫系統的SQL語言提供了這一選項。
下面是一些使用SELECT查詢語句進行數據查詢的示例。
例1:列出銷售額超過6000元的銷售人員的姓名、銷售目標和超過銷售目標的銷售額。
SELECT NAME,QUOTA,(SALES_QUOTA)
FROM SALESREPS
WHERE SALES>6000
例2:查出1999年最後一個季度的訂單情況。
SELECT ORDER_NUM,ORDER_DATE,PRODUCT,AMOUNT
FROM ORDERS
WHERE ORDER_DATE BETWEEN "01-OCT-99" AND "31-DEC-99"
例3:查出名稱是以ABC開頭的產品訂單情況。
SELECT ORDER_NUM,ORDER_DATE,PRODUCT,AMOUNT
FROM ORDERS
WHERE PRODUCT LIKE "ABC%"
例4:列出所有的銷售處,按區域名字母順序排列。
SELECT CITY,REGION
FROM OFFICE
ORDER BY REGION ASC
在這里ASC表示升序,如果表示降序可用DESC。
例5:列出每個銷售人員以及他們工作的城市和區域的情況。
SELECT NAME,CITY,REGION
FROM SALESREPS,OFFICE
WHERE REP_OFFICE=OFFICE
例6:查出有多少銷售員的銷售額超過了其目標額,以及他們的銷售額總和。
SELECT COUNT(NAME),SUM(SALES)
FROM SALESREPS
WHERE SALES>QUOTA
⑹ 關於SQL查詢問題
1,
select 'S1' + CONVERT(varchar(8), GETDATE(), 112) + convert(varchar(4),convert(int,1000 + rand()*9000)) + '@jbit.com'
2,
在查詢分析器中,輸入上邊的代碼,直接點保存,在彈出的窗口裡輸入文件的名稱「使用函數查詢學生相關信息.sql」,點確定,就行了。
⑺ 一般在寫SQL時需要注意哪些問題,可以提高查詢的效率
1.盡量使用索引,索引很多情況下可以提高查詢效率
2.避免使用or語句
3.避免使用not in語句
4.可以使用exists和not exists代替in和not in語句
……
還有很多種情況 你網上可以很容易查到
⑻ 在編寫SQL查詢語句時關於性能方面有哪些需要注意的
用欄位名代替*;盡量不用distinct,用分組代替;少用子查詢;合理添加索引,定期刪除碎片。
⑼ sql資料庫問題,簡化查詢語句
一、
簡單查詢
簡單的Transact-SQL查詢只包括選擇列表、FROM子句和WHERE子句。它們分別說明所查詢列、查詢的表或視圖、以及搜索條件等。
例如,下面的語句查詢testtable表中姓名為「張三」的nickname欄位和email欄位。
SELECT
nickname,email
FROM
testtable
WHERE
name='張三'
(一)
選擇列表
選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表達式、變數(包括局部變數和全局變數)等構成。
1、選擇所有列
例如,下面語句顯示testtable表中所有列的數據:
SELECT
*
FROM
testtable
2、選擇部分列並指定它們的顯示次序
查詢結果集合中數據的排列順序與選擇列表中所指定的列名排列順序相同。
例如:
SELECT
nickname,email
FROM
testtable
3、更改列標題
在選擇列表中,可重新指定列標題。定義格式為:
列標題=列名
列名
列標題
如果指定的列標題不是標準的標識符格式時,應使用引號定界符,例如,下列語句使用漢字顯示列標題:
SELECT
昵稱=nickname,電子郵件=email
FROM
testtable
4、刪除重復行
SELECT語句中使用ALL或DISTINCT選項來顯示表中符合條件的所有行或刪除其中重復的數據行,默認為ALL。使用DISTINCT選項時,對於所有重復的數據行在SELECT返回的結果集合中只保留一行。
5、限制返回的行數
使用TOP
n
[PERCENT]選項限制返回的數據行數,TOP
n說明返回n行,而TOP
n
PERCENT時,說明n是表示一百分數,指定返回的行數等於總行數的百分之幾。
例如:
SELECT
TOP
2
*FROM
testtable
SELECT
TOP
20
PERCENT
*
FROM
testtable
(二)FROM子句
FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。在FROM子句中最多可指定256個表或視圖,它們之間用逗號分隔。
在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列所屬的表或視圖。例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應使用下面語句格式加以限定:
SELECT
username,citytable.cityid
FROM
usertable,citytable
WHERE
usertable.
本篇文章來源於
黑軟基地-中國最大的黑客教程計算機安全教程下載基地
原文鏈接:
http://www.hackvip.com/article/sort056/sort058/kkkcc.com-2297.html
⑽ sql中多表聯合查詢關鍵部分應該注意什麼
1
select a.name from a where a.name not in (select b.name from b)
或者
1
select a.name from a where not exists(select 1 from b where b.name=a.name)
或者
1
select a.name from a left join b on a.name=b.name where b.name is null