简单的数据查询:


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来进行排列,然后依次往后。

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

数据库知识整理<五>的更多相关文章

  1. 数据库知识整理<六>

    聚合函数与分组 6.1使用聚合函数进行数据统计: 聚合函数常见的有以下几种: count:返回该结果集中行的数目. sum:返回结果集中所有值的总和. avg:返回结果集中所有值的平均值. max:返 ...

  2. 数据库知识整理<一>

    关系型数据库知识整理: 一,关系型数据库管理系统简介: 1.1使用数据库的原因: 降低存储数据的冗余度 提高数据的一致性 可以建立数据库所遵循的标准 储存数据可以共享 便于维护数据的完整性 能够实现数 ...

  3. 数据库知识整理<八>

    联接: 8.1理解简单的单联接: 基本上联接的结果是每个集合的笛卡尔积.例如:两个集合{a,b,c}和{a,b}的笛卡尔积是如下的成对集合:{(a,a),(a,b),(b,a),(b,b),(c,a) ...

  4. 数据库知识整理<二>

    又继续写的博客,希望自己能坚持每天写博客.分享自己的点滴,对自己成长有帮助.今天下午高强度打了三个小时篮球,小腿都抽筋了.很爽,失落的心情似乎变得开明了一些.想到了一句话:“像SB式的坚持总会有好的收 ...

  5. 数据库知识整理<三>

    保证数据的完整性: 3.1数据完整性概述: 数据完整性的意义:我们知道数据库能防止储存垃圾数据,RDBMS实现该功能主要是通过维护数据完整性来实现的.根据数据完整性实施方法我们将其分为四类:实体完整性 ...

  6. 数据库知识整理<四>

    使用DML语句更改数据: 所谓DML语句是指数据库操作语句,其中包括的是对数据库数据的修改.删除.插入. 4.1添加新数据: 插入单行的记录:基本的SQL语句为-insert into <表明& ...

  7. 数据库知识整理<七>

    组合查询: 7.1使用子查询: 嵌套在其他查询中的查询,我们称之为子查询.子查询本身也可能包含一个子查询.子查询也称为内部查询,而包含子查询的语句也称为外部查询. 所有的子查询可以被分为两个类别:子查 ...

  8. 【OGG】OGG基础知识整理

    [OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...

  9. MySQL 索引知识整理(创建高性能的索引)

    前言: 索引优化应该是对查询性能优化的最有效的手段了.索引能够轻易将查询性能提高几个数量级. // 固态硬盘驱动器有和机械硬盘启动器,有着完全不同的性能特性: 然而即使是固态硬盘,索引的原则依然成立, ...

随机推荐

  1. Angularjs-Dirty Checking

    Angularjs实现了数据双向绑定,就像下面这样: <!doctype html> <htnl ng-app> <head> <script src=&qu ...

  2. leetcode 160

    160. Intersection of Two Linked Lists Write a program to find the node at which the intersection of ...

  3. writel(readl(&pwm_timer->tcfg0) | 0xff, &pwm_timer->tcfg0);

    解析这句代码什么意思! 神说:选定预分频器0 为什么? 神说:因为实验中选的是timer1,在预分频器0下: 若选择timer4,该如何写这句代码? 首先看tcfg0中选择预分频器1,在看tcfg1里 ...

  4. c#基础-oop(面向对象理解)

    OOP-面向对象 封装,继承多态 一个桌子,用面向对象来描述一下它这个桌子项目 定义桌子类 对象:桌子 桌子的属性:名字,材质,体积 桌子的方法;放东西(方法) 现在桌子要放书,放花瓶,放文件(这里就 ...

  5. c++子类调用基类方法的一个例子

        Base.h #pragma once   class Base { public:     Base(void);     ~Base(void);     bool CreatClone( ...

  6. 自定义控件EditText

    public class defineEditText extends EditText { Context context; Drawable d; public defineEditText(Co ...

  7. MAT内存问题分析定位

    MAT内存问题分析定位 1.下载安装MemoryAnalyzer工具. 2.使用DDMS将对应线程的内存日志导出来后,使用hprof-conv工具进行转换,用MAT打开转换后的hprof文件.

  8. Flume NG简介及配置

    Flume下载地址:http://apache.fayea.com/flume/ 常用的分布式日志收集系统: Apache Flume. Facebook Scribe. Apache Chukwa ...

  9. spring junit

    转载自 http://blog.csdn.net/funi16/article/details/8691575 在写单元测试的时候,一般是对数据库进行增删改查的操作,这个时候,如果之前删除了某条记录, ...

  10. ActiveMQ安装与使用

    一 .安装运行ActiveMQ: 1.下载activemq wget http://archive.apache.org/dist/activemq/apache-activemq/5.9.0/apa ...