sql列號查詢
『壹』 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查詢某一個表的第N列的列名
select name from syscolumns where id=object_id('表名') and colid=N值
『叄』 SQL查詢語句
一、簡單查詢語句
1. 查看錶結構
SQL>DESC emp;
2. 查詢所有列
SQL>SELECT * FROM emp;
3. 查詢指定列
SQL>SELECT empmo, ename, mgr FROM emp;
SQL>SELECT DISTINCT mgr FROM emp; 只顯示結果不同的項
4. 查詢指定行
SQL>SELECT * FROM emp WHERE job='CLERK';
5. 使用算術表達式
SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp;
nvl(comm,1)的意思是,如果comm中有值,則nvl(comm,1)=comm; comm中無值,則nvl(comm,1)=0。
SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal為別名,可按別名排序)
SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82';
6. 使用like操作符(%,_)
%表示一個或多個字元,_表示一個字元,[charlist]表示字元列中的任何單一字元,[^charlist]或者[!charlist]不在字元列中的任何單一字元。
SQL>SELECT * FROM emp WHERE ename like 'S__T%';
7. 在where條件中使用In
SQL>SELECT * FROM emp WHERE job IN ('CLERK','ANALYST');
8. 查詢欄位內容為空/非空的語句
SQL>SELECT * FROM emp WHERE mgr IS/IS NOT NULL;
9. 使用邏輯操作符號
SQL>SELECT * FROM emp WHERE (sal>500 or job='MANAGE') and ename like 'J%';
10. 將查詢結果按欄位的值進行排序
SQL>SELECT * FROM emp ORDER BY deptno, sal DESC; (按部門升序,並按薪酬降序)
二、復雜查詢
1. 數據分組(max,min,avg,sum,count)
SQL>SELECT MAX(sal),MIN(age),AVG(sal),SUM(sal) from emp;
SQL>SELECT * FROM emp where sal=(SELECT MAX(sal) from emp));
SQL>SELEC COUNT(*) FROM emp;
2. group by(用於對查詢結果的分組統計) 和 having子句(用於限制分組顯示結果)
SQL>SELECT deptno,MAX(sal),AVG(sal) FROM emp GROUP BY deptno;
SQL>SELECT deptno, job, AVG(sal),MIN(sal) FROM emp group by deptno,job having AVG(sal)<2000;
對於數據分組的總結:
a. 分組函數只能出現在選擇列表、having、order by子句中(不能出現在where中)
b. 如果select語句中同時包含有group by, having, order by,那麼它們的順序是group by, having, order by。
c. 在選擇列中如果有列、表達式和分組函數,那麼這些列和表達式必須出現在group by子句中,否則就是會出錯。
使用group by不是使用having的前提條件。
3. 多表查詢
SQL>SELECT e.name,e.sal,d.dname FROM emp e, dept d WHERE e.deptno=d.deptno order by d.deptno;
SQL>SELECT e.ename,e.sal,s.grade FROM emp e,salgrade s WHER e.sal BETWEEN s.losal AND s.hisal;
4. 自連接(指同一張表的連接查詢)
SQL>SELECT er.ename, ee.ename mgr_name from emp er, emp ee where er.mgr=ee.empno;
5. 子查詢(嵌入到其他sql語句中的select語句,也叫嵌套查詢)
5.1 單行子查詢
SQL>SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM emp where ename='SMITH');查詢表中與smith同部門的人員名字。因為返回結果只有一行,所以用“=”連接子查詢語句
5.2 多行子查詢
SQL>SELECT ename,job,sal,deptno from emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno=10);查詢表中與部門號為10的工作相同的員工的姓名、工作、薪水、部門號。因為返回結果有多行,所以用“IN”連接子查詢語句。
in與exists的區別: exists() 後面的子查詢被稱做相關子查詢,它是不返回列表的值的。只是返回一個ture或false的結果,其運行方式是先運行主查詢一次,再去子查詢里查詢與其對 應的`結果。如果是ture則輸出,反之則不輸出。再根據主查詢中的每一行去子查詢里去查詢。in()後面的子查詢,是返回結果集的,換句話說執行次序和 exists()不一樣。子查詢先產生結果集,然後主查詢再去結果集里去找符合要求的欄位列表去。符合要求的輸出,反之則不輸出。
5.3 使用ALL
SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ALL (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MAX(sal) FROM emp WHERE deptno=30);查詢工資比部門號為30號的所有員工工資都高的員工的姓名、薪水和部門號。以上兩個語句在功能上是一樣的,但執行效率上,函數會高 得多。
5.4 使用ANY
SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ANY (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MIN(sal) FROM emp WHERE deptno=30);查詢工資比部門號為30號的任意一個員工工資高(只要比某一員工工資高即可)的員工的姓名、薪水和部門號。以上兩個語句在功能上是 一樣的,但執行效率上,函數會高得多。
5.5 多列子查詢
SQL>SELECT * FROM emp WHERE (job, deptno)=(SELECT job, deptno FROM emp WHERE ename='SMITH');
5.6 在from子句中使用子查詢
SQL>SELECT emp.deptno,emp.ename,emp.sal,t_avgsal.avgsal FROM emp,(SELECT emp.deptno,avg(emp.sal) avgsal FROM emp GROUP BY emp.deptno) t_avgsal where emp.deptno=t_avgsal.deptno AND emp.sal>t_avgsal.avgsal ORDER BY emp.deptno;
5.7 分頁查詢
資料庫的每行數據都有一個對應的行號,稱為rownum.
SQL>SELECT a2.* FROM (SELECT a1.*, ROWNUM rn FROM (SELECT * FROM emp ORDER BY sal) a1 WHERE ROWNUM<=10) a2 WHERE rn>=6;
指定查詢列、查詢結果排序等,都只需要修改最里層的子查詢即可。
5.8 用查詢結果創建新表
SQL>CREATE TABLE mytable (id,name,sal,job,deptno) AS SELECT empno,ename,sal,job,deptno FROM emp;
5.9 合並查詢(union 並集, intersect 交集, union all 並集+交集, minus差集)
SQL>SELECT ename, sal, job FROM emp WHERE sal>2500 UNION(INTERSECT/UNION ALL/MINUS) SELECT ename, sal, job FROM emp WHERE job='MANAGER';
合並查詢的執行效率遠高於and,or等邏輯查詢。
5.10 使用子查詢插入數據
SQL>CREATE TABLE myEmp(empID number(4), name varchar2(20), sal number(6), job varchar2(10), dept number(2)); 先建一張空表;
SQL>INSERT INTO myEmp(empID, name, sal, job, dept) SELECT empno, ename, sal, job, deptno FROM emp WHERE deptno=10; 再將emp表中部門號為10的數據插入到新表myEmp中,實現數據的批量查詢。
5.11 使用了查詢更新表中的數據
SQL>UPDATE emp SET(job, sal, comm)=(SELECT job, sal, comm FROM emp where ename='SMITH') WHERE ename='SCOTT';
『肆』 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語句如何查詢一個表中某一列的相同數據
假設表名是num,列名是a,則查詢語句為:
SELECT * FROM num WHERE a IN(
SELECT a FROM num GROUP BY a HAVING COUNT(a)>1
)
其中:
SELECT 語句:SELECT 語句用於從表中選取數據。結果被存儲在一個結果表中(稱為結果集)。
WHERE 子句:如需有條件地從表中選取數據,可將 WHERE 子句添加到 SELECT 語句。
GROUP BY 語句:GROUP BY 語句用於結合合計函數,根據一個或多個列巧胡對結果集進行分組。
HAVING 子句:在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與合計函數一起使用。
COUNT() 函數:返回匹配指定條件的行數。
(5)sql列號查詢擴展閱讀:
sql語言特點:
1、一體化:SQL集數據定義DDL、數據操縱DML和數據控制DCL於一體,可以完成資料庫中的全部工作。
2、使用方式靈活:它具有兩種使用方式,即可以直接以命令方式交互使用;也可以嵌入使用,嵌入到C、C++、FORTRAN、COBOL、JAVA等主語言中使用。
3、非過程化:只提操作要求,不必描述操作步驟,也不需要導航。使用時只需要告訴計算機「做什麼」,而不需要告訴它「怎麼做」。
4、語言簡潔,語法簡單,好學好用:在ANSI標准中,只包含了94個英文單詞,核心功能只用6個動詞,語法接孝凱攔近英語口語。
『陸』 SQL查詢,如何查詢一個表中第三行,第三列的數據
其實很簡單,只是取第三列的數據時候你需要知道第三列的欄位名。
我做了以下方法:
select t.列的欄位名 from (select ROWNUM As No , M.* from 表名 M) t
where t.No = '3'
就可以了。
這里的M表和T表是一個表,也即是說如果你的表明為A的話,
select t.列的欄位名 from (select ROWNUM As No , M.* from A M) t
where t.No = '3'
就可以了。
『柒』 用sql語句怎麼查一個表的信息
1、 查詢所枝首有列。
sql語句:SELECT * FROMuser。
sql語句:select name as 菜品名,price as 價格 from food where name like '%雞%';