🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.database
Article #665

SQL Server ������

#665
From: Schumi
Date: Fri, 26 Dec 2008 08:16
239 lines
14650 bytes
ת�ԣ�http://tech.it168.com/db/s/2006-06-20/200606201452792.shtml

����1�� �ó����У���֤��ʵ�ֹ��ܵĻ��ϣ��������ٶ���ݿ�ķ��ʴ���ͨ����
�����������ٶԱ�ķ�������,��С������Ӷ�������縺�����ܹ��ֿ��IJ���
�����ֿ����?���ÿ�ε���Ӧ�ٶȣ�����ݴ���ʹ��SQLʱ��������ʹ�õ��������ѡ
�������

�����㷨�Ľṹ�����򵥣��ڲ�ѯʱ����Ҫ����ʹ��ͨ�����SELECT * FROM T1���
��Ҫ�õ����о�ѡ�����磺SELECT COL1,COL2 FROM T1���ڿ��ܵ�����¾������ƾ�
����������磺SELECT TOP 300 COL1,COL2,COL3 FROM T1,��ΪijЩ������û��Dz�
��Ҫ��ô�����ݵġ���Ҫ��
Ӧ����ʹ����ݿ��α꣬�α��Ƿdz����õĹ��ߣ�����ʹ�ó���ġ����򼯵�SQL�����
Ҫ���Ŀ������ض�˳����ȡ��ݵIJ��ҡ�

����2�� ����ʹ�ò����ݵ�������͡�����float��int��char��varchar��binary��varb
inary�Dz����ݵġ�������͵IJ����ݿ���ʹ�Ż����޷�ִ��һЩ�������Խ��е��Ż���
��������:

SELECT name FROM employee WHERE salary �� 60000

���������������,��salary�ֶ���money�͵�,���Ż������Ѷ�������Ż�,��Ϊ60000��
������������Ӧ���ڱ��ʱ������ת����ΪǮ����,��Ҫ�ȵ�����ʱת����

����3�� ����������WHERE�Ӿ��ж��ֶν��к������ʽ�������⽫�����������ʹ��
��������ȫ��ɨ�衣�磺

SELECT * FROM T1 WHERE F1/2=100

����Ӧ��Ϊ:

SELECT * FROM T1 WHERE F1=100*2 SELECT * FROM RECORD WHERE 
SUBSTRING(CARD_NO,1,4)=��5378��

����Ӧ��Ϊ:

SELECT * FROM RECORD WHERE CARD_NO LIKE ��5378%�� SELECT member_number, 
first_name, last_name FROM members WHERE DATEDIFF(yy,datofbirth,GETDATE()) 
> 21

����Ӧ��Ϊ:

SELECT member_number, first_name, last_name FROM members WHERE dateofbirth 
< DATEADD(yy,-21,GETDATE())

���������κζ��еIJ����������±�ɨ�裬�������ݿ⺯�������ʽ�ȵȣ���ѯ
ʱҪ�����ܽ����������Ⱥ��ұߡ�

����4�� ����ʹ��!=�򣼣���IS NULL��IS NOT NULL��IN ��NOT IN������IJ�����,��
Ϊ���ʹϵͳ�޷�ʹ������,��ֻ��ֱ���������е���ݡ�����:

SELECT id FROM employee WHERE id != 'B%'

�����Ż������޷�ͨ��������ȷ����Ҫ���е�����,�����Ҫ�����ñ�������С�

����5�� ����ʹ���������ֶΣ�һ���ֿ�����Ա����ݿ������Աϲ���Ѱ���ֵ��Ϣ
���ֶ�

���Ϊ�ַ��ͣ���ή�Ͳ�ѯ�����ӵ����ܣ��������Ӵ洢����������Ϊ�����ڴ���
��ѯ�����ӻ�����Ƚ��ַ���ÿһ���ַ����������Ͷ���ֻ��Ҫ�Ƚ�һ�ξ͹���
��

����6�� ����ʹ��EXISTS,NOT EXISTS�Ӿ䡣������ʾ��

1.SELECT SUM(T1.C1)FROM T1 WHERE( (SELECT COUNT(*)FROM T2 WHERE 
T2.C2=T1.C2>0) 2.SELECT SUM(T1.C1) FROM T1WHERE EXISTS( SELECT * FROM T2 
WHERE T2.C2=T1.C2)

�������߲�����ͬ�Ľ���Ǻ��ߵ�Ч����ȻҪ����ǰ�ߡ���Ϊ���߲�����������
���ı�ɨ���������ɨ�衣

�����������У������Ƿ����ij����¼����Ҫ��count(*)����Ч�ʺܵͣ������˷ѷ�
������Դ��������EXISTS���档�磺

IF (SELECT COUNT(*) FROM table_name WHERE column_name = 'xxx')

��������д�ɣ�

IF EXISTS (SELECT * FROM table_name WHERE column_name = 'xxx')

����������Ҫдһ��T_SQL���Ƚ�һ���������ӽ���Ӷ��ҵ��Ƿ�����ڸ���
�����ж����ӽ����û�еļ�¼���磺

1.SELECT a.hdr_key FROM hdr_tbl a---- tbl a ��ʾtbl�ñ���a���� WHERE NOT 
EXISTS (SELECT * FROM dtl_tbl b WHERE a.hdr_key = b.hdr_key) 2.SELECT 
a.hdr_key FROM hdr_tbl a LEFT JOIN dtl_tbl b ON a.hdr_key = b.hdr_key WHERE 
b.hdr_key IS NULL 3.SELECT hdr_key 
FROM hdr_tbl WHERE hdr_key NOT IN (SELECT hdr_key FROM dtl_tbl)

��������д�������Եõ�ͬ����ȷ�Ľ����Ч�����ν��͡�

����7�� �����������������ַ�����У�ʹ�÷Ǵ�ͷ��ĸ��������Ҳʹ�������޷���
��������������ӣ�

SELECT * FROM T1 WHERE NAME LIKE ��%L%�� SELECT * FROM T1 WHERE 
SUBSTING(NAME,2,1)=��L�� SELECT * FROM T1 WHERE NAME LIKE ��L%��

������ʹNAME�ֶν�������ǰ������ѯ��Ȼ�޷�����������ɼӿ���������治�ò�
��ȫ�������������������������񡣶�������ѯ�ܹ�ʹ���������ӿ������

����8�� ������������������ij������£�������֮����ܲ�ֻһ����������������ʱ
�� WHERE �Ӿ��н��������������д�ϣ��п��ܴ����߲�ѯ�ٶȡ���

SELECT SUM(A.AMOUNT) FROM ACCOUNT A,CARD B WHERE A.CARD_NO = B.CARD_NO 
SELECT SUM(A.AMOUNT) FROM ACCOUNT A,CARD B WHERE A.CARD_NO = B.CARD_NO AND 
A.ACCOUNT_NO=B.ACCOUNT_NO

�����ڶ��佫�ȵ�һ��ִ�п�öࡣ

����9�� ���Դ��ͱ�����ݵ�˳���ȡ

�������������еļ�����϶�������ijЩ��ʽ��WHERE�Ӿ�ǿ���Ż���ʹ��˳���ȡ
���磺

SELECT * FROM orders WHERE (customer_num=104 AND order_num>1001) OR 
order_num=1008

��������취����ʹ�ò���������˳���ȡ��

SELECT �� FROM orders WHERE customer_num=104 AND order_num>1001 UNION 
SELECT �� FROM orders WHERE order_num=1008

�������������������·�������ѯ��

����10�� �������ѵ������ʽ

����LIKE�ؼ���֧��ͨ���ƥ�䣬�����Ͻ������ʽ��������ƥ���ر�ķ�ʱ�䡣��
�磺SELECT * FROM customer WHERE zipcode LIKE ��98_ _ _��

������ʹ��zipcode�ֶ��Ͻ��������������������Ҳ���Dz���˳��ɨ��ķ�ʽ�����
������ΪSELECT �� FROM customer WHERE zipcode >��98000������ִ�в�ѯʱ�ͻ�
������������ѯ����Ȼ��������ٶȡ�

����11�� ʹ����ͼ���ٲ�ѯ

�����ѱ��һ���Ӽ��������򲢴�����ͼ����ʱ�ܼ��ٲ�ѯ���������ڱ�����������
���������������滹�ܼ��Ż����Ĺ��������磺

SELECT cust.name��rcvbles.balance������other columns FROM cust��rcvbles 
WHERE cust.customer_id = rcvlbes.customer_id AND rcvblls.balance>0 AND 
cust.postcode>��98000�� ORDER BY cust.name

������������ѯҪ��ִ�ж�ζ�ֹһ�Σ����԰�����δ����Ŀͻ��ҳ�������һ��
��ͼ�У������ͻ������ֽ������� 

CREATE VIEW DBO.V_CUST_RCVLBES AS SELECT cust.name��rcvbles.balance������othe
r columns FROM cust��rcvbles WHERE cust.customer_id = rcvlbes.customer_id 
AND rcvblls.balance>0 ORDER BY cust.name

����Ȼ��������ķ�ʽ����ͼ�в�ѯ��

SELECT �� FROM V_CUST_RCVLBES WHERE postcode>��98000��

������ͼ�е���Ҫ�������е����٣���������˳�������Ҫ���˳�򣬼����˴���I/O��
���Բ�ѯ���������Եõ������١�

����12�� �ܹ���BETWEEN�ľͲ�Ҫ��IN

SELECT * FROM T1 WHERE ID IN (10,11,12,13,14)

�����ijɣ�

SELECT * FROM T1 WHERE ID BETWEEN 10 AND 14

������ΪIN��ʹϵͳ�޷�ʹ������,��ֻ��ֱ���������е���ݡ�

����13�� DISTINCT�ľͲ���GROUP BY

SELECT OrderID FROM Details WHERE UnitPrice > 10 GROUP BY OrderID

�����ɸ�Ϊ��

SELECT DISTINCT OrderID FROM Details WHERE UnitPrice > 10

����14�� ������������

1.SELECT employeeID, firstname, lastname FROM names WHERE dept = 'prod' or 
city = 'Orlando' or division = 'food' 2.SELECT employeeID, firstname, 
lastname FROM names WHERE dept = 'prod' UNION ALL SELECT employeeID, 
firstname, lastname FROM names WHERE cit
y = 'Orlando' UNION ALL SELECT employeeID, firstname, lastname FROM names 
WHERE division = 'food'

�������dept �н����������ѯ2���Բ������������ѯ1���ܡ�

����15�� ����UNION ALL�Ͳ�Ҫ��UNION ��UNION ALL��ִ��SELECT DISTINCT������
��ͻ���ٺܶ಻��Ҫ����Դ

����16�� ��ҪдһЩ�����κ��µIJ�ѯ���磺

SELECT COL1 FROM T1 WHERE 1=0 SELECT COL1 FROM T1 WHERE COL1=1 AND COL1=2

�����������벻�᷵���κν�����ǻ����ϵͳ��Դ��

����17�� ������Ҫ��SELECT INTO��䡣SELECT INOT ���ᵼ�±�����ֹ������
�����ʸñ?

����18�� ��Ҫʱǿ�Ʋ�ѯ�Ż���ʹ��ij������

SELECT * FROM T1 WHERE nextprocess = 1 AND processid IN (8,32,45)

�����ijɣ�

SELECT * FROM T1 (INDEX = IX_ProcessID) WHERE nextprocess = 1 AND processid 
IN (8,32,45)

�������ѯ�Ż�������ǿ����������IX_ProcessID ִ�в�ѯ��

����19�� ��ȻUPDATE��DELETE����д����̶������ǻ��Ƕ�UPDATE����㽨�飺


����a) ������Ҫ�޸������ֶΡ�

����b) ���޸�VARCHAR���ֶ�ʱ������ʹ����ͬ�������ݵ�ֵ���档

����c) ������С�����ں���UPDATE�������ı��UPDATE������

����d) ����UPDATE��Ҫ���Ƶ�������ݿ���С�

����e) ����UPDATE���кܶ�������С�

����f) ����UPDATE��WHERE�Ӿ������е��С�

�������������ᵽ����һЩ�����߲�ѯ�ٶȵ�ע������,�����ڸ��������,����
��Ҫ��������Ƚϲ�ͬ������Եõ���ѷ�������õķ�����Ȼ�Dz��ԣ���ʵ����ͬ��
�ܵ�SQL����ĸ�ִ��ʱ�����٣�������ݿ��������������٣��DZȽϲ������ģ���ʱ
�����ò鿴ִ�мƻ���������
ʵ����ͬ���ܵĶ��� SQL��俼����ѯ����������CTRL+L���������õ������ɨ���
��������������Ӱ����󣩣������Ͽ�ѯ�ɱ��ٷֱȼ��ɡ�

�����򵥵Ĵ洢��̿��������Զ���ɣ�����ҵ���������������������ͼ�꣬��
������ݿ⡱���������洢����򵼡������Ӵ洢��̵ĵ��ԣ��ڲ�ѯ��������ߵĶ�
���������û�У���F8��ѡ��Ҫ���ԵĴ洢���,���Ҽ����ԣ��������ִ�У�����
һ�������������������е���
ִ�У��ϵ����õȡ� 

 
--

�� ��Դ:����ˮ˼Դ bbs.sjtu.edu.cn��[FROM: 58.196.149.9]
Technical Details
Message-ID: <4daNJM$ayl@bbs.sjtu.edu.cn>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news2.google.com!npeer01.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!news-in-01.newsfeed.easynews.com!easynews.com!easynews!newsfeed.news2me.com!nntp1.phx1.gblx.net!nntp.gblx.net!nntp.gblx.net!nntp4.phx1!newsfeed.asianetcom.net!newsgate.cuhk.edu.hk!news.neu.edu.cn!news.shec6.edu.cn!SJTU

Show Full Headers
Complete Article Headers
X-Google-Thread: 101948,14df382b4e40f4fc,start
X-Google-Attributes: gid101948,domainid0,public,usenet
X-Google-Language: Chinese,GB
Path: arc1-ca.pugleaf.net!g2news2.google.com!news2.google.com!npeer01.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!news-in-01.newsfeed.easynews.com!easynews.com!easynews!newsfeed.news2me.com!nntp1.phx1.gblx.net!nntp.gblx.net!nntp.gblx.net!nntp4.phx1!newsfeed.asianetcom.net!newsgate.cuhk.edu.hk!news.neu.edu.cn!news.shec6.edu.cn!SJTU
From: Goliath.bbs@bbs.sjtu.edu.cn (Schumi)
Newsgroups: cn.bbs.comp.database
Subject: SQL Server ������
Date: 26 Dec 2008 08:16:38 GMT
Organization: ��ˮ˼Դ
Message-ID: <4daNJM$ayl@bbs.sjtu.edu.cn>
Mime-Version: 1.0
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: 8bit
X-Filename: database/M.1230279334.A