数据库知识整理<五>

简单的数据查询:


 5.1查询的基本结构:

  Sql语句:select [distinct] (* | column [alias],...) from table [where condition] [order bycolumn];

5.2投影操作:

  投影操作是指在Sql查询中,使用select子句,选择将对表中的那些列进行操作,这些列将出现在结果中。

  1. 基本的Sql语句的查询:select 列名列表 from 表名;
  2. 表名前缀:select 表名.列明 from 表名;如 select student.name from student;
  3. 列别名:在列名或表名用AS关键字来提供别名。如 select 列A as A,列B as B,..from 表名 as T;当然列别名时也可以加上表名前缀来识别。
  4. 计算列:在数据库管理系统中,我们可以执行返回计算列的select查询,返回计算列意味着数据不存在于数据库中,但是可以从数据库构造或者计算得来。例如在一个学生成绩表中我们有分数和是否通过的字段,那么我们就可以通过这两者的乘积来判断最终分数是否为零即Sql语句的写法为:select studentId as id,mark*ifPassed as finalResult from studnetScore;但是这个finalResult这个字段实际上在数据库表中是不存在的。在Sql语句中我们可以使用特殊的连接符号将同为字符的数据类型相同的字段链接起来。我们也可以使用“+”号来连接,加好链接的数据类型要一样,不一样的时候就要用str()这个函数进行连接,这个函数可以传递不同数据类型的参数,并且将它们链接起来组成单个字符串,传进来的参数会自动被转换成字符串,所以可以传递任意数据类型的参数。如sql语句为:select classId,time+''+str(id) as classDetails from class;
  5. 排除重复的数据:select distinct 列A,列B from 表;如 select distinct name from student;
  6. 返回限定行数的查询:使用top关键字,限制从数据库返回记录的行数 select top rowcount column A,column B from table;其中rowcount可以是一个绝对的数字,指示返回的总行数,也可以是一个数字后跟percent关键字,指示返回总行数的百分之几。如 select top 5 percent name from student;意思是从student表中查出百分之五的数据。

5.3选择操作:

  选择操作就是通过查询加上where 条件来进行查询。如:select 列名列表 from 表 where 条件;条件是多种多样的。

  1. 单条件选择操作:select 列A,列B from 表 where 列C = 值;
  2. 多条件选择操作:select 列A,列B 表 where 条件1 (and/or) 条件2;and表示同时满足条件,or至少满足其中一个。
  3. 执行范围测试:关键字between,select 列A,列B from table where 列C between 下限 and 下限;如 select id,name from student where score between 80 and 90;当然也可以在between前面加上not代表不在这个范围内。
  4. 定义集合关系:上面我们可以知道属于某个范围之内或者之外,那么我们要是只想是否只属于某几个值中的一个呢,那么 这时应该用到集合看起来更优美。select 列A,列B from 表 where 列C in (集合值);这种集合方式又分为三种方式来实现。第一种:值集合为常量的 select 列A,列B from 表 where 列C in ('value1','value2','value3');第二种:条件部分也可以是独立的select语句 select 列A,列B from 表 where 列C in (select 列D from 表2);第三种:与not一起使用,表示不在某个范围内。
  5. 模糊查询:关键字like,select 列A,列B from 表 where 列C like 模式;模式由字符常量加上通配符组成,通配符代表一个或多个字符。%—包含零个或更多的字符的任意字符串;_(下划线)—任意单个字符。Sql语句表示:select * from table where name like '%李%';查出姓名中含有李的人信息。单个百分号也能使用,单个在前表示姓名中以'李'结尾的人名,单个在后表示以'李'开头的条件。当然如果是在某个百分数作为条件时,那么就需要转译。转译的方式如:使用转义符Escape Char 关键字或者 使用 '['符号来转义,select * from table where Comment like '%50[%%';
  6. 处理空值数据:强制为空或者不强制为空在实际操作中是相当有用的,比如 select A,B from table where C is (not) null;

5.4排序操作:

  使用关键字order by 来进行排序。子句后面可以是单个或者多个列名,下面就分别介绍:

  1. 单列排序:select 列A,列B from t order by 列A (ASC or desc);asc升序,desc降序排列。默认是升序的排列方式所以asc可以不写。
  2. 多列排序:select 列A,列B,列C,列D from t order by 列A,列B,列C,列D;只是他们之间的排列时会讲究它的顺序的,先按照最前面的A来进行排列,然后依次往后。

总结:数据库的查询是数据库知识中最重要的知识,也是最复杂的语句。比如模糊查询、不重复数据的查询、排序这些都是经常用到的。要多注意这几点的语句。

原文地址:https://www.cnblogs.com/tyhJava/p/5585755.html