结构化查询语言SQL(3)

示例:--查询年龄在23-28岁之间(包含)的学生信息。
             SELECT * FROM student WHERE sage>=23 AND sage<=28;
             SELECT * FROM student WHERE sage BETWEEN 23 AND 28;
        --查询年龄在23-28岁之间(包含)的女生信息。
             SELECT * FROM student WHERE sage BETWEEN 23 AND 28 AND ssex='F';
             SELECT * FROM student WHERE sage>=23 AND ssex='F'AND sage<=28;

2)like:实现的是模糊查询,一般来说会结合两个特殊符号使用,%通配符,匹配任意多个字符;_表示匹配一个字符。

示例:--查询所有姓张的同学信息。
            SELECT *  FROM student WHERE sname LIKE '张%';
        --查询所有姓张,姓名总共为2个字的同学信息。
            SELECT *  FROM student WHERE sname LIKE '张_';
        --查询所有姓张,姓名总共为3个字的同学信息。
           SELECT *  FROM student WHERE sname LIKE '张__';
           SELECT *  FROM student WHERE sname LIKE '%张';

3)in:是一种枚举用法,字段in(值1,值2,......,值n)等价于 字段=值1 or 字段=值2 or ... or 字段=值n。

示例:--查询年龄等于27岁或者28岁的学生的信息。
            SELECT * FROM student WHERE sage=27 OR sage=28;
            SELECT * FROM student WHERE sage IN (27,28);

4)distinct:用来修饰字段,表示唯一查询、去除重复值。

示例:--查询所有选课了的学生的学号。
            SELECT  sid FROM score;
            SELECT  DISTINCT sid FROM score;

5)别名:可以应用在查询内容和来源中。

语法格式: 原名 as 别名,一般来说,as是省略的, 原名 别名。

示例:SELECT  sname,sage FROM student;
         SELECT  sname as 姓名,sage 年龄 FROM student;
         SELECT  sname,sage+1 sage FROM student;
         SELECT  sname sage FROM student; --语法没问题,从应用层面是有问题的。查询学生姓名,但结果是列名改为了sage。

6)嵌套

SQL语句中,查询语句是可以被嵌套使用。嵌套是通过括号()实现。每一条查询语句的结果本身就是一个表、是一些值的集合,可以被嵌套使用在值或者来源的部分。

--查询所有选修oracle课程的学生的姓名。
  SELECT sname FROM student WHERE sid IN (SELECT sid FROM score WHERE cid=(SELECTcid FROM course WHERE cname='oracle'));

--查询某一位同学所选修的课程的名称。(已经学生姓名)
  SELECT cname FROM course WHERE cid IN (SELECT cid FROM score WHERE sid in (SELECT sid FROM student WHERE sname='张三'));

7)all: 使用and来对表达式进行分解

--字段 > all(值1,值2,。。。,值N)  等价于: 字段>值1 and 字段>值2 and... and 字段>值N。
--字段 < all(值1,值2,。。。,值N)  等价于: 字段<值1 and 字段<值2 and... and 字段<值N。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a63f680df3ed49ca31e73cb7b79c9598.html