星辰日月00

欲多则心散,心散则志衰,志衰则思不达也!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 本文出自:李 熹
1.利用大/小写
虽然SQL对大小写不敏感,但是可以利用大/小写变化来
帮助我们区分语句不同的部分如:保留字、数据库的表名、
视图和字段名等;这样有利于我们理解和组织SQL语句逻辑。 
(1)保留字(大写全部字母) ,我的风格是小写。
(2)表名、视图名(大写字母开头)
(3)字段名(小写子母开头),后面的单词以大写开头。

--例: 
SELECT sno , sname
FROM Student
WHERE sdept = 'IS'


注:在给数据库的表、视图和字段命名时,也保持这种
统一的大/小写风格同样十分必要。
2.使用空格提高语句清晰度
SQL 语句中的许多地方适当地加入空格可以提高其清晰
度。如:在标识符列表中的每个标识符和分隔符之间留一个
空格。

--例: 
SELECT cno,cname,ccredit
FROM Course
WHERE cpno='5'
可以改写成:
SELECT cno , cname , ccredit
FROM Course
WHERE cpno = '5'


3.换行

在不同的数据库管理系统中,对语句长度的支持不尽相
同;通常都具有换行的方法。我们可利用换行,来帮助表示
和理解 SQL 语句的逻辑;在换行的同时应适当配合缩进的技
巧。
主要的应用:
(1)语句不同部分
表1 各类SQL语句的换行形式

--查询  
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
--添加
INSERT INTO
VALUES
INSERT INTO
SELECT
FROM
WHERE
--更新
UPDATE
  SET
WHERE
--删除
DELETE FROM
WHERE



(2)内容太多
换行时可以配合使用的一些特殊技巧:
 1)将逗号放在行首 

--例: 
SELECT Student.sno , Student.sname , Student.ssex ,
     Student.sage , Student.sdept
FROM Student


   2)按表名进行换行 

--例: 
SELECT Student.sno , Student.sname
, Course.cno , Course.cname
, SC.grade
FROM Student , Course , SC
WHERE Student.sno = SC.sno
AND Course.cno = SC.cno
AND Course.cname = '数据库'



 3)将AND、OR放在行首

--例: 
SELECT sno , sname
FROM Student
WHERE ( sdept =ISOR sdept = ‘CS’ )
AND ( sage < 20 AND sage > 30 )
OR ssex = ''


使用上面的三种换行技巧有助于我们阅读 SQL 语句,还
有方便我们进行语句的调试。

--例: 
SELECT Student.sno , Student.sname
--, Course.cno , Course.cname
, SC.grade
FROM Student , Course , SC
WHERE Student.sno = SC.sno
AND Course.cno = SC.cno
AND Course.cname = '数据库'
--例:
SELECT sno , sname
FROM Student
WHERE ( sdept =ISOR sdept = ‘CS’ )
--AND ( sage < 20 AND sage > 30 )
OR ( sage < 20 AND sage > 30 )
OR ssex = ''



只需简单地利用注释符便可进行SQL语句的调试。
4.缩进
和高级语言一样,缩进也是重要的 SQL 编码技巧。缩进
程度可以自己把握。缩进太少,则不够明显;缩进太多,又
没必要;建议使用3个空格。
主要的应用:
(1)GROUP BY子句带HAVING短语

--例: 
SELECT sno , AVG(grade)
FROM SC
GROUP BY sno
HAVING AVG(grade) >= 60
WHERE sdept = 'IS'


(2)语句嵌套

--例: 
SELECT sname
FROM Student
WHERE sno IN(
   SELECT sno
   FROM SC
   WHERE cno = '2'
    );

 

posted on 2012-02-18 16:01  星辰日月00  阅读(291)  评论(0编辑  收藏  举报