SQL读书笔记(二)--数据查询
来源:互联网 发布:粒子群算法原理 编辑:程序博客网 时间:2024/05/22 07:02
接下来讲的是数据结构这一部分,还是很简单但是要记的东西多。
数据库查询是数据库的核心操作。SQL提供了SELECT语句进行数据库的查询,这个语句有灵活的使用方式和丰富的功能,格式如下
SELECT[ALL|DISTINCT]<目标列表达式>
FROM<表名和视图名>
WHERE<条件表达式>
GROUP BY<列名1>[HAVING<条件表达式>]
ORDER BY<列名2>[ASC|DESC]
/*格式有点复杂,直接看例子解释*/
(一),单查询表
一,查询列
单查询表是只涉及一个表的查询
选择表中的全部列或部分列,这就是关系代数的投影运算
/*投影运算还是蛮简单的吧*/
1.查询指定列列
例1:查询全体学生的学号和姓名
SELECT Sno,Sname
FROM Student;
/*记住SELECT后面没有“,”或“;”*/
/*SELECT ......FROM.....:从哪个表中查找哪个列(属性)*/
/*上面的<目标列表达式>就是Sname,Sno*/
例2:查询全体学生的姓名,学号,所在系;
SELECT Sname,Sno.Sdept
FROM Student;
/*这个例子中的三个目标列表达式会按照顺寻显示出来,用户可以自行修改顺序*/
2.查询全部列
查询全部列有两种方法,一是直接把目标列表达式的关键字全部列出来,二是直接把目标列表达式直接指定为*
SELECT Sname,Sno,,Ssex,Sage,Sdept
FROM Student;
或者
例3:查询全体学生的详细记录
SELECT *
FROM Student;
3.查询经过计算的值
例5:查询全体学生的姓名及其出生年份
SELECT Sname,2004-Sage
FROM Student;
/*这个目标列表达式还可以是一个算数表达式,函数等等*///当然会自动计算的
例6;查询全体学生的姓名,出生年份和所在院系,要求用小写字母表示所有系名
SELECT Sname,2004-Sage,LOWER(Sdept)
FROM Student;
例7:查询选修了该课程的学生学号
SELECT Sno
FROM SC;
如果结果是这样子:
Sno
_______________
01
01
01
02
02
这样查询结果就包含了许多行,要想把重复的去掉就必须指定DISTINCT关键词:
SELECT DISTINCT Sno,
FROM SC;
/*这里就可以解释格式中的SELECT[ALL|DISTINCT],默认情况下是ALL,ALL会保留结果表中取值重复的行;DISTINCT会去掉重复的行*/
二、查询满足条件的元组(行)
WHERE(where)是关键字
WHERE后面跟一个逻辑表达式(查询条件)
常用的查询条件有:
查询条件 谓词
比较 =,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比较符(表示反)
确定范围 BETWEEN,AND,NOT,BETWEEN,AND
确定集合 IN,,NOT IN
字符匹配 LIKE,NOT LIKE
空值 IS NULL,IS NOT NULL
多重条件 AND,OR,NOT NULL
/*这个表灰常重要啊,WHERE语句用的查询条件基本都用在这个表中了*/
例7:查询计算机科学系全体学生的名单
SELECT Sname
FROM Student
WHERE Sdept=’CS’;
/*到最后才写分号,前面两个句子都不用*/
/*还有FROM后面跟的是一个表,目测不能跟列*/
/*要想确定是哪个列可以用WHERE语句来确定*/
(1)比较大小
例8:查询所有年龄在20岁以下的学生姓名及其年龄
SELECT Sname,Sage
FROM Student
WHERE Sage<20;
例9:查询考试成绩有不及格的学生的学号
SELECT DISTINCT Sno
FROM Student
WHERE Grade<60;
/*当学生有多门成绩不及格,用DISTINCT可以让他的学号只列一次*/
(2)确定范围
例10:查询年龄在20~23之间的学生的姓名,系别和年龄
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;
/*BETWEEN ....AND...*/
例11:查询年龄不在20~23之间的学生的姓名,系别和年龄
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;
(3)确定集合
例12:查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别
SELECT Sname.Sage
FROM Student
WHERE Sdept IN(‘CS’,’MA’,’IS’);
还有NOT IN 就不举例子了
(4)字符匹配
谓词LIKE可以用来进行字符串的匹配
例13:查询学号为200215121的学生的详细情况
SELECT *
FROM Student
WHERE Sno LIKE ‘2000215121’;
等价于
SELECT *
FROM Student
WHERE Sno = ‘2000215121’;
例14:查询所有姓刘的学生的姓名、学号和性别
SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname LIKE “刘%”;
/*这里的“%”是指后面跟任意长度的字符串*:a%b是以a为开头,b为结尾的字符串*/
/*还有一个就是”_”下横线,代表任意单个字符*/
这里还特别有一种特殊情况:
例15:查询DB_Design课程的课程号和学分
SELECT Cno,Ccredit
FROM Course;
WHERE Cname LIKE ‘DB\_Design’ESCAPE’\’;
五、GROUP BY子句
- SQL读书笔记(二)--数据查询
- SQL数据查询(二)
- SQL语句总结(二数据查询)
- SQL读书笔记(二)
- SQL查询初学者指南读书笔记(二)创建SQL查询
- 【Sql Server学习】Sql Server数据查询(二)
- SQL 语句(二)--------------数据查询(简单查询)
- SQL(四)查询(二)过滤数据(where子句()
- Oracle SQL数据操作和查询(二)
- 数据查询(二)
- 二、SQL数据操作和查询
- SQL读书笔记(六) 子查询
- T——SQL查询(读书笔记)
- Hibernate读书笔记-----SQL查询
- T-SQL操作语句之数据查询(二):查询中使用函数
- SQL查询(二)提升
- SQL查询语句(二)
- SQL查询(二)--视图
- 构造函数和this指针
- linux centos 配置 svn 服务器
- 让app在ios6上具有ios7的扁平效果
- ubuntu下使用反编译apk,工具dex2jar和 jd-gui
- Oracle 11g安装出现:启动服务 OracleMTSRecoveryService 时出现操作系统错误 解决办法
- SQL读书笔记(二)--数据查询
- android游戏开发须知!
- 再苦的日子,跪着也要爬完
- matlab 用鼠标取ROI区域边界点坐标的一个小程序
- 字符串删除多余空格
- How to Install NixNote on Ubuntu 13.04, Ubuntu 12.10 and Ubuntu 12.04 via PPA
- 内部类
- POJ1151(线段树+扫描线求矩形面积并)
- Requisition auto creat PO