《SQL数据库视频》之玩转SELECT语句(一)

         敲机房收费系统的时候,感觉我的SELECT语句总是千篇一律,txtSQL=”select* from talbel _source where search_condition ”这怎么可以,把整个系统敲完也没有把最基本的select语句格式用到自己的代码中,不仅收获会很少,到了复杂的地方只能创建N多个记录集mrc N来救场,还费了事。不行,我得回头去充充电。

                                                                                                                                                                                              -------前言

   

    SELECT语句的功能有:数据查询(精确or模糊)、统计、分组、排序等。我们常用的功能是数据查询,对于其他三方面的运用比较少,下面就对其进行整理。

 

如上图是对数据库操作的简单分类,通过对其中的学习,完全可以把它的四个主要功能涉及到,首先我先对“获取简单数据”进行总结,这样在机房系统中就可以做到玩转SELECT了,好了不啰嗦了,直奔主题。

1SELECT [ALL|DISTINCT]  select_list

2[INTO  new _table]

3FROM  table_source (as 别名)

4[WHERE  search_condition] (比较、逻辑、范围、列表、字符、未知)

5[GROUP BY group_by_expression]

6[HAVING search_conditions]

7[ORDER BY  order_expression][ASC|DESC]

SELECT的经典语句结构中共有5个子句,分别是SELECT\FROM\WHERE\GROUPBY\ORDERBY  其中select和from为必选,其余为可选,语句顺序不能变,其实我认为要玩转SELECT语句,最重要的是玩转以where条件子句为中心的和其他语句的混搭。掌握了它的一些技巧,再次遇到它就不会犯难了。

  首先说一下where子句,search_condition可以为比较、逻辑、范围、列表、字符、未知运算符,在此主要说明逻辑和列表运算符,下面先说列表运算符,WHERE expression [Not] IN value_list,

例如:机房收费中查询学号除012034以外所有人的信息时,

SELECT * FROM student_Infowhere stdNo not in (‘012’,’034’)就可以了。

再举个例子就是今天做自考题时遇到的一个问题,

设学生社团管理数据库有三个关系:

S(SnoSnameAgeSexDept)

A(AnoAnameLocationManager)

SA(SnoAnoDate)

其中表S的属性分别表示学号、姓名、年龄、性别和所在系;表A的属性分别表示会员编号、协会名、协会 的办公地点和负责人(负责人为学号);表SA描述了学生参加社团的情况,其属性分别表示学号、协会编号 、加入协会时间。

试用SQL语言查询参加篮球”协会的学生姓名和所在系。

只要你会用WHERE子句的列表运算符便可轻轻松松搞定:

    SELECTSname,Dept

    FROM S

    WHERE Sno IN (

        SELECT Sno FROM  SA

        WHERE Ano IN(

             SELECT  Ano FROM A WHERE A.Aname='篮球'));

回到话题其中我认为逻辑运算符要比其他四类高一个级别,可以将其他的四种进行组合,比如where Age>10 and sex=’M’, 逻辑运算符AND ORNO 起到了连接多个search condition的作用,但是需要注意:

1、NOT仅用于简单条件,不能用于包含AND和OR的复合条件,例如NOT(sex=’M’ AND age>10)是错的。

2、AND用于合并简单条件和包含NOT的条件,但这些条件不允许包含OR,例如sex=’M’ AND (NOT age>10)是正确的,但是sex=’M’ AND(age>10 OR age<5)是错误的。

3、OR可以使用AND和NOT合并的所有复合条件。

4、优先级NOT>AND>OR,处理时系统先处理优先级高的,再处理优先级低的。    

 

对于SELECT语句的其他4条子句,都是比较常用的,就不做说明了。

对于利用SEL语句进行多表操作,将会在下一篇博客中提到哦~~~

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值