一、SQL数据查询的一般格式

数据查询是数据库的核心操作。SQL提供了SELECT语句进行数据查询,其一般格式为:

SELECT [ALL | DISTINCT][,]···

FROM[,···] | (SELECT语句>)[AS]

[WHERE]

[GROUP BY[HAVING]]

[ORDER BY[ASC | DESC]];

整个SELECT语句的含义是,根据WHERE子句的条件表达式从FROM子句指定的基本表、视图或派生表中找出满足条件的元组,再按SELECT子句中的目标列表达式选出元组中的属性值形成结果表。

如果有GROUP BY子句,则将结果按的值进行分组,该属性列值相等的元组为一个组。通常会在每组中作用聚集函数。如果GROUP BY子句带HAVING短语,则只有满足指定条件的组才予以输出。

如果有ORDER BY子句,则结果还要按的值的升序或降序排序。

SELECT语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。

二、SQL单表查询(仅涉及一个表的查询)

1.选择表中的若干列

(1)查询指定列

查询全体学生的学号与姓名

SELECT Sno,Sname

FROM Student;

查询全体学生的姓名、学号、所在系

SELECT Sname,Sno,Sdept

FROM Student;

(2)查询全部列

查询全体学生的详细记录

SELECT *

FROM Students;

等价于

SELECT Sno,Sname,Ssex,Sage,Sdept

FROM Student;

(3)查询经过计算的值

查询全体学生的姓名及其出生年份

SELECT Sname,2014-Sage //查询结果的第2列是一个 算术表达式

FROM Student;

注意:用当时的年份(假设为2014年)减去学生的年龄,这样所得的即是学生的出生年份。

查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示系名

SELECT Sname,'Year of Birth:',2014-Sage,LOWER(Sdept)

FROM Student;

2.选择表中的若干组

(1)消除取值重复的行

查询选修了课程的学生学号

SELECT DISTINCT Sno

FROM SC;

(2)查询满足条件的元组

查询满足指定条件的元组可以通过WHERE子句实现。WHERE子句常用的查询条件如下表所示查询条件谓词

比较=,>,=,<=,!=,<>,!>,!

确定范围BETWEEN AND,NOT BETWEEN AND

确定集合IN,NOT IN

字符匹配LIKE,NOT LIKE

空值IS NULL,IS NOT NULL

多重条件(逻辑运算)AND,OR,NOT

查询计算机科学系全体学生的名单

SELECT Sname

FROM Student

WHERE Sdept='CS'

查询所有年龄在20岁以下的学生姓名及其年龄

SELECT Sname,Sage

FROM Student

WHERE Sage<20;

查询考试成绩不合格的学生的学号

SELECT DISTINCT Sno

FROM SC

WHERE Grade<60;

查询年龄在20~23岁之间的学生的姓名、系别和年龄

SELECT Sname,Sdept,Sage

FROM Student

WHERE Sage BETWEEN 20 AND 23

查询年龄在20~23岁之间的学生的姓名、系别和年龄

SELECT Sname,Sdept,Sage

FROM Student

WHERE Sage NOT BETWEEN 20 AND 23

查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名、系别和年龄

SELECT Sname,Ssex

FROM Student

WHERE Sdept IN('CS','MA','IS');

查询学号为201215121的学生的详细情况

SELECT *

FROM Student

WHERE Sno LIKE '201215121'

等价于

SELECT *

FROM Student

WHERE Sno='201215121'

此处介绍下字符匹配

谓词LIKE可以用来进行字符串的匹配。其一般语法格式如下:

[NOT] LIKE'' [ESCAPE '']

其含义是查找指定的属性列值与相匹配的元组。可以是一个完整的字符串,也可以含有通配符 % 和 _。其中:%(百分号)代表任意长度(长度可以为0)的字符串。例如:a%b 表示以a开头,以b结尾的任意长度的字符串。如acb、addgb、ab等。

_(下划线)代表任意单个字符。例如:a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb、agb等。

查询所有姓刘的学生的姓名、学号和性别

SELECT Sname,Sno,Ssex

FROM Student

WHERE Sname LIKE '刘%';

查询姓“欧阳”且全名为三个汉字的学生的姓名

SELECT Sname

FROM Student

WHERE Sname LIKE '欧阳_'

注意:数据库字集为ASCII时一个汉字需要两个_;当字符集为GBK时只需要一个。

查询名字中第二个字为“阳”的学生的姓名和学号

SELECT Sname,Sno,

FROM Student

WHERE Sname LIKE '_阳%';

查询所有不姓刘的学生的姓名、学号和性别

SELECT Sname,Sno,Ssex

FROM Student

WHERE Sname NOT LIKE '刘%';

如果用户要查询的字符串本身就含有通配符%或_,这时就要使用 ESCAPE '' 短语对通配符进行转义了。

查询DB_Design 课程的课程号和学分

SELECT Cno,Ccredit

FROM Course

WHERE Cname LIKE 'DB \ _Design' ESCAPE '\';

ESCAPE '\' 表示 “\” 为换码字符。这样匹配串中紧跟在 “\” 后面的字符“_”不再具有通配符的含义,转义为普通的“_”字符。

查询以“DB_”开头,且倒数第三个字符为i的课程的详细情况

SELECT *

FROM Course

WHERE Cname LIKE 'DB \_%i__'ESCAPE '\';

某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号

SELECT Sno,Cno

FROM SC

WHERE Grade IS NULL; /*分数Grade是空值*/

注意:这里的“IS”不能用等号(=)代替。

查所有有成绩的学生学号和课程号

SELECT Sno,Cno

FROM SC

WHERE Grade IS NOT NULL;

查询计算机科学系年龄在20岁以下的学生姓名

SELECT Sname

FROM Student

WHERE Sdept='CS' AND Sage<20;

php单表查询语句,单表查询相关推荐

  1. java oracle分页查询语句_Oracle分页查询语句的写法(转)

    Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用. ...

  2. MYSQL查询语句2——子查询

    子查询 一.为什么会使用子查询 二.什么是子查询 三.子查询的具体使用+实例 1.WHERE子句后使用子查询 2.FROM子句后使用子查询 一.为什么会使用子查询 虽然可以通过连接查询来实现多表查询数 ...

  3. php中id如何与删除关联,ThinkPHP查询语句与关联查询用法实例

    这篇文章主要介绍了ThinkPHP查询语句与关联查询用法,以实例的形式常见的查询方法,包括数组作为查询条件及对象方式来查询等技巧,需要的朋友可以参考下 本文实例讲述了ThinkPHP查询语句与关联查询 ...

  4. Mysql的查询语句(联合查询、连接查询、子查询等)

    Mysql的各个查询语句(联合查询.连接查询.子查询等) 一.联合查询 关键字:union 语法形式 select语句1 union[union选项] select 语句2 union[union选项 ...

  5. 查询语句 like 模糊查询

    查询语句 like 模糊查询 前言 建表语句在最后 like 应该是最常用的查询条件了 必须掌握地! like 的语法格式 LIKE '字符串' NOT LIKE '字符串' NOT :取反,不满足指 ...

  6. mysql 单表子查询语句_MySQL基本SQL查询语句:多表查询和子查询示例

    一.简单查询:基本语法: 代码如下 SELECT * FROM tb_name; 查询全部 代码如下 SELECT field1,field2 FROM tb_name; 投影 代码如下 SELECT ...

  7. mysql单表备份语句 +多表

    mysql单表备份语句 mysql单表备份 SELECT CONCAT("mysqldump -uroot -p123456 ",table_schema," " ...

  8. oracle sql 分区查询语句_oracle11g 表分区后的查询语句如何知道是否进行了全表扫描...

    2019-05-10 回答 1. 对返回的行无任何限定条件,即没有where 子句 2. 未对数据表与任何索引主列相对应的行限定条件 例如:在city-state-zip列创建了三列复合索引,那么仅对 ...

  9. Oracle - 查询语句 - 多表关联查询

    /* SQL语句的历史版本SQL89比较多 SQL92SQL99多表关联查询笛卡尔积等值关联查询非等值关联查询左外连接右外连接全外连接自连接 */ -------------------------- ...

最新文章

  1. 《自然》:欧洲根据已知基因序列合成新冠病毒,助力疫苗开发
  2. JavaScript中 for、for in、for of、forEach等使用总结
  3. python如何训练模型生产_手把手教你用Python构建你的第一个多标签图像分类模型(附案例)...
  4. Flask 【第七篇】Flask中的wtforms使用
  5. C语言写数据库(三)
  6. AE学习笔记——第一章:AE的界面布局和基本操作
  7. cannot instantiate the type
  8. 全志F1C100S声卡驱动探究
  9. 修改SLK数据 的一些基础
  10. 单片机基础知识学习笔记
  11. gamit 10.71更新包更新内容 incremental_updates.20200501.tar.gz
  12. sob攻略超详细攻略_超详细西安旅游攻略
  13. 海外国外支付渠道接口对接
  14. xpdl关于join和split的定义的翻译。(转)
  15. 机动目标运动分析——IMM篇
  16. 【已解决】找不到某服务器 IP 地址
  17. Apache Dubbo详解
  18. 【图像去雾】基于matlab颜色衰减先验图像去雾【含Matlab源码 2036期】
  19. Android中Wi-Fi扫描、连接和信息(一)
  20. C/C++数据结构舞伴问题

热门文章

  1. [Python]--爬虫 Resources Collection
  2. criterion java_Java Criterion類代碼示例
  3. lmbs PHP,PHP的GD2函数创建折线图源码示例
  4. java各种包的用途
  5. 【PC工具】200416最终百度网盘——最终下载方法及注意事项,代理是什么
  6. 更新网盘(云存储)功能需求,免费网盘需求,手机数据备份
  7. 【编程通识】PlantUML绘制时序图样例
  8. KubeCon + CloudNativeCon北美2018年会议透明度报告:一项破纪录的CNCF活动
  9. JEPLUS学习心得之请假单功能的完成——JEPLUS软件快速开发平台
  10. 在iis中让asp.net的错误显示在远程访问电脑中