现在的位置: 首页 > 综合 > 正文

SQL重入门(2)–Select语句、表达式、条件语句与运算

2013年09月13日 ⁄ 综合 ⁄ 共 2135字 ⁄ 字号 评论关闭

1.Select语句查漏补缺

    select是SQL中使用最多的一个语句,主要用于查询数据,特别是结合一些条件查询语句实现对特定数据的检索。下面列一些之前学习Select语句没有太注意的地方:

    (1)all 与distinct

      select 的基本用法是: select column1,column2... from table1

      select all 与select是等价的,所以我们平时基本见不到select all column1.... from table1 这样的表达式

      select distinct 是用于去除列中重复数据的,如果有多个列是去除每个列都完全相同的重复数据。distinct虽然不常用也不常见,但是他属于sql内部语句,在剔重方面效率还是要高一些的。另外见有人提到distinct对变长字段无法区分(有待验证)

      (2)别名的问题

      有是需要用到别名,比如 select column1+2 alias1 from table1;

      或者 select (column1+2)alias1 from table1;

      再或者 select column1+2 = alias1 from table1;

      不同的SQL解释器有不同的用法,需要注意区别下。

 

 

2. 表达式

    SQL 表达式与公式类似,但 SQL 表达式是以结构化查询语言 (SQL) 编写的。SQL 表达式可以用于向数据库查询特定数据集合。可以基于 SQL 表达式字段进行排序、分组和选择。表达式可以返回一个值,表达式的类型非常广泛,它以包括各种类型的数据,如数字字符,以及逻辑型。

 

3.运算

     运算可以归为六组:数值型、比较型、字符型、逻辑型和备注型以及混合型;

      (1)数值型运算

      数值型运算有加、减、乘、除和取模,运算顺序是先乘后除再模后加减.

     (2)比较运算:

      比较运算就是将两个表达式进行比较并返回True,False,Unknow三个数值中的一个。其中Unknow的出现主要是针对字段为空的情况。对于空字段,使用“IS NULL ”而非 “= NULL” 进行判断。

      比较有 = , > ,>=.<,<=, 不等于(<>或!=),需要注意的是,在输出结果时,会根据符号右侧要比较的值的长度对相应列进行截取,比如有列name:bobo,lili,vivi;

输入select name from table_name where name<'ww',得到的结果时na:bo,li,vi;

      (3)字符操作:

       LIKE:进行非精确查询(“= ”进行的是精确查询)。LIKE表达式中有通配符 “%”和“_”。"%"不会限制匹配字符的位置及个数,“_”用于指定特定位置的符号。用法如“A%” (以A开头的),"%A”(以A结尾的符号),“_A_A”(字符长度为4,第二、四字符为A的),"88_2_2%"(任意长度,第一二位是8,第四六位是2的数字)。用法:SELECT * FROM FRIENDS WHERE FIRSTNAME LIKE '_L%'。

      ||  :连接符,将字段连接起来输出,用法:SELECT LASTNAME || ',' || FIRSTNAME NAME FROM FRIENDS

       (4) 逻辑运算:

       逻辑运算用于SQL 的WHERE 子句中将两个或更多条件组合在一起.

       AND OR NOT 三种运算,注意判断字段非空使用IS NOT NULL。

      (5)集合运算

      UNION: 将返回两个查询的结果并去除其中的重复部分,用法:

           SELECT NAME FROM SOFTBALL   UNION    SELECT NAME FROM FOOTBALL

      UNION ALL: 将返回两个查询的结果但并不除去其中的重复部分,用法:

           SELECT NAME FROM SOFTBALL   UNION  ALL  SELECT NAME FROM FOOTBALL

      INTERSECT:返回两个表中共有的行,用法:

           SELECT * FROM FOOTBALL   INTERSECT   SELECT * FROM SOFTBALL

       MINUS :返回的记录是存在于第一个表中但不存在于第二个表中的记录,用法:

           SELECT * FROM FOOTBALL MINUS SELECT * FROM SOFTBALL

      (6)从属运算

        IN:SELECT * FROM FRIENDS WHERE STATE IN('CA','CO','LA') 等价于

              SELECT * FROM FRIENDS WHERE STATE= 'CA' OR STATE ='CO' OR STATE ='LA'

        BETWEEN:SELECT * FROM PRICE WHERE WHOLESALE BETWEEN 0.25 AND 0.75 等价于

                          SELECT * FROM PRICE WHERE WHOLESALE> 0.25 AND WHOLESALE<0.75

抱歉!评论已关闭.