数据库知识整理<五>
简单的数据查询:
5.1查询的基本结构:
Sql语句:select [distinct] (* | column [alias],...) from table [where condition] [order bycolumn];
5.2投影操作:
投影操作是指在Sql查询中,使用select子句,选择将对表中的那些列进行操作,这些列将出现在结果中。
- 基本的Sql语句的查询:select 列名列表 from 表名;
- 表名前缀:select 表名.列明 from 表名;如 select student.name from student;
- 列别名:在列名或表名用AS关键字来提供别名。如 select 列A as A,列B as B,..from 表名 as T;当然列别名时也可以加上表名前缀来识别。
- 计算列:在数据库管理系统中,我们可以执行返回计算列的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;
- 排除重复的数据:select distinct 列A,列B from 表;如 select distinct name from student;
- 返回限定行数的查询:使用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 条件;条件是多种多样的。
- 单条件选择操作:select 列A,列B from 表 where 列C = 值;
- 多条件选择操作:select 列A,列B 表 where 条件1 (and/or) 条件2;and表示同时满足条件,or至少满足其中一个。
- 执行范围测试:关键字between,select 列A,列B from table where 列C between 下限 and 下限;如 select id,name from student where score between 80 and 90;当然也可以在between前面加上not代表不在这个范围内。
- 定义集合关系:上面我们可以知道属于某个范围之内或者之外,那么我们要是只想是否只属于某几个值中的一个呢,那么 这时应该用到集合看起来更优美。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一起使用,表示不在某个范围内。
- 模糊查询:关键字like,select 列A,列B from 表 where 列C like 模式;模式由字符常量加上通配符组成,通配符代表一个或多个字符。%—包含零个或更多的字符的任意字符串;_(下划线)—任意单个字符。Sql语句表示:select * from table where name like '%李%';查出姓名中含有李的人信息。单个百分号也能使用,单个在前表示姓名中以'李'结尾的人名,单个在后表示以'李'开头的条件。当然如果是在某个百分数作为条件时,那么就需要转译。转译的方式如:使用转义符Escape Char 关键字或者 使用 '['符号来转义,select * from table where Comment like '%50[%%';
- 处理空值数据:强制为空或者不强制为空在实际操作中是相当有用的,比如 select A,B from table where C is (not) null;
5.4排序操作:
使用关键字order by 来进行排序。子句后面可以是单个或者多个列名,下面就分别介绍:
- 单列排序:select 列A,列B from t order by 列A (ASC or desc);asc升序,desc降序排列。默认是升序的排列方式所以asc可以不写。
- 多列排序:select 列A,列B,列C,列D from t order by 列A,列B,列C,列D;只是他们之间的排列时会讲究它的顺序的,先按照最前面的A来进行排列,然后依次往后。
总结:数据库的查询是数据库知识中最重要的知识,也是最复杂的语句。比如模糊查询、不重复数据的查询、排序这些都是经常用到的。要多注意这几点的语句。
数据库知识整理<五>的更多相关文章
- 数据库知识整理<六>
聚合函数与分组 6.1使用聚合函数进行数据统计: 聚合函数常见的有以下几种: count:返回该结果集中行的数目. sum:返回结果集中所有值的总和. avg:返回结果集中所有值的平均值. max:返 ...
- 数据库知识整理<一>
关系型数据库知识整理: 一,关系型数据库管理系统简介: 1.1使用数据库的原因: 降低存储数据的冗余度 提高数据的一致性 可以建立数据库所遵循的标准 储存数据可以共享 便于维护数据的完整性 能够实现数 ...
- 数据库知识整理<八>
联接: 8.1理解简单的单联接: 基本上联接的结果是每个集合的笛卡尔积.例如:两个集合{a,b,c}和{a,b}的笛卡尔积是如下的成对集合:{(a,a),(a,b),(b,a),(b,b),(c,a) ...
- 数据库知识整理<二>
又继续写的博客,希望自己能坚持每天写博客.分享自己的点滴,对自己成长有帮助.今天下午高强度打了三个小时篮球,小腿都抽筋了.很爽,失落的心情似乎变得开明了一些.想到了一句话:“像SB式的坚持总会有好的收 ...
- 数据库知识整理<三>
保证数据的完整性: 3.1数据完整性概述: 数据完整性的意义:我们知道数据库能防止储存垃圾数据,RDBMS实现该功能主要是通过维护数据完整性来实现的.根据数据完整性实施方法我们将其分为四类:实体完整性 ...
- 数据库知识整理<四>
使用DML语句更改数据: 所谓DML语句是指数据库操作语句,其中包括的是对数据库数据的修改.删除.插入. 4.1添加新数据: 插入单行的记录:基本的SQL语句为-insert into <表明& ...
- 数据库知识整理<七>
组合查询: 7.1使用子查询: 嵌套在其他查询中的查询,我们称之为子查询.子查询本身也可能包含一个子查询.子查询也称为内部查询,而包含子查询的语句也称为外部查询. 所有的子查询可以被分为两个类别:子查 ...
- 【OGG】OGG基础知识整理
[OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...
- MySQL 索引知识整理(创建高性能的索引)
前言: 索引优化应该是对查询性能优化的最有效的手段了.索引能够轻易将查询性能提高几个数量级. // 固态硬盘驱动器有和机械硬盘启动器,有着完全不同的性能特性: 然而即使是固态硬盘,索引的原则依然成立, ...
随机推荐
- 解决hibernate只能插入一条数据的问题
hibernate初学,根据视频教程写好代码后,发现无论执行多少次main函数,数据库中只有一条数据,尝试多次,后来终于发现问题... 使用的工具是:MYSQL 5.7.13 eclipse 4. ...
- 0525 SCRUM项目7.0
主题:在下一个SPRINT中做的更好 一,实验回顾总结 当谈到在一个团队里的收获,首当其冲的便是对于团队工作流程的切身体会.亲力亲为.从申报材料.问卷设计.访谈提纲.团队建设.书签制作到实地访谈.问卷 ...
- objective c,copy, mutableCopy区别
copy总是返回不能被修改的对象,mutableCopy返回可以被修改的对象 例: NSArray *array = @[@"test", @"test2"]; ...
- 三级联动---DropDownList控件
AutoPostBack属性:意思是自动回传,也就是说此控件值更改后是否和服务器进行交互比如Dropdownlist控件,若设置为True,则你更换下拉列表值时会刷新页面(如果是网页的话),设置为fl ...
- Operate blob data in Oracle via C#
oracle table: CREATE TABLE "SCOTT"."TEST_BLOB" ( "NAME" VARCHAR2 ...
- UVa 10071 - Back to High School Physics
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=s ...
- lucene query
在lucene的搜索中,最重要的无疑就是对query的理解和掌握了.这里扒拉一下源码(版本3.5.0)的query和query实现: query是一个抽象类,实现类有以下几个: termQuery m ...
- Spring MVC常见的三种URL请求参数的处理
//方法1:@RequestParam //url:/test1?id=123 @RequestMapping(value = "/test1",method = RequestM ...
- 一个简单的SNTP客户端
借鉴于python网络编程攻略 #/usr/local/bin/python3.5 #coding:utf-8 import socket, struct, time NTP_server = &qu ...
- java内存知识
java对内存的分类. (网上资料)程序中用来存放数据的内存分为四块,另有一块用于存放代码 1.堆:存放所有new出来的对象(我们知道java并没有全局变量这个概念,有人是把它单独放在properti ...