基本查询

SELECT * FROM <tablename>;

SELECT是SQL关键字,SQL关键字是不区分大小写的,但是表名是区分大小写的。SELECT关键字表示查询操作,而*表示查询所有字段。FROM是SQL关键字,表示从哪张表查询。tablename是表名。分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。另外MySQL要求每条SQL语句的结束都需要加上分号。

例如:

SELECT * FROM students;

SELECT语句还可以单独使用,通常用来检查当前数据库连接是否有效。通常是使用SELECT 1;来进行判断。

去除重复结果集

它可以筛选出字段的所有可能的结果。例如:

结果表明,students表中的性别只有男和女两种。

结果表明,students表中的的class_id只有1,2,3这三种结果。

 计算:

例如,我想计算数学和英文的总成绩,那么使用如下语句即可。

SELECT name,math,english,math+english FROM students;

上面的查询结果在成绩都存在的情况下,都是正确的,但是当其中一项为NULL之后,计算的成绩之和也是NULL。这可能和我们的预期不太一致。我们希望成绩和是81.00. 好在SQL提供了IFNULL()来替换NULL为相应的值。例如:

SELECT name,math,english,IFNULL(math,0)+IFNULL(english,0) FROM students;

上述语句中,将math字段中的NULL值替换为0,同理,english字段的NULL值也被替换为0。

起别名 

查询结果显示的字段名可能像上面那样,非常难看。不过SQL提供了起别名。起别名使用关键字as,不过as可以省略。下面这两条语句是等价的。

SELECT name as 姓名,math as 数学,english as 英语,math+IFNULL(english,0) as 总分 FROM students;SELECT name 姓名,math 数学,english 英语,math+IFNULL(english,0) 总分 FROM students;

经过起别名之后,看起来就舒服很多了。

条件查询

SELECT语句可以通过WHERE条件来设定查询条件。格式如下:

SELECT * FROM <tablename> WHERE <condition>;

WHERE是SQL的关键字,condition是限制条件。

例如:

SELECT * FROM students WHERE score >= 90;

其中条件表达式可以使用AND,OR,NOT关键字来进行条件之间的组合。AND,OR,NOT的意思和C语言中的&&,||,! 没有区别。下面来分别展示一下相关的查询实例。实际上在SQL中使用&&,||,!也是可以的,但是不建议这么做。而是建议使用AND,OR,NOT关键字。同时SQL支持比较操作,

>=(大于等于)

>(大于)

<=(小于等于)

<(小于)

=(等于),注意,这里的判断是否相等是一个等号,而不是C语言中的双等号。

!=(不等于),SQL还提供了<>作为不等于,不常用。

IN(),在括号里的选项都会匹配到。例如:SELECT * FROM students WHERE id IN(1,2);这将查询出id为1和2的所有数据。

如果某个字段为NULL,那么判断是NULL的写法为:SELECT * FROM students WHERE english IS NULL;判断不是NULL的语法是:SELECT * FROM students WHERE english IS NOT NULL;

SELECT * FROM students WHERE score >= 80 AND id = 1;

SELECT * FROM students WHERE score >= 90 OR score <= 60;

SELECT * FROM students WHERE NOT id = 3;

AND, NOT, OR之间存在优先级关系。NOT优先级最高,其次是AND,最后是OR。同1样,和C语言中建议的一样,我们在使用它们的时候,为了使程序方便阅读,建议加上括号。例如:

SELECT * FROM students WHERE (NOT class_id = 3) AND (score >= 80);

模糊查询

模糊查询使用关键字LIKE进行。单个匹配符是"_",多个匹配符是"%"。

首先,给数据库插入几条记录,如下:

INSERT INTO students(class_id,name,gender,math,english) VALUES(2,"马化腾",'M',97.23,91.24),(3,"马云",'M',64.74,98.75),(5,"马德",'M',54.74,78.41);INSERT INTO students(class_id,name,gender,math,english) VALUES(3,"两马化
云腾",'X',NULL,NULL);

插入之后,数据库如下所示:

SELECT * FROM students WHERE name LIKE "%马%";

SELECT * FROM students WHERE name LIKE "马%";

SELECT * FROM students WHERE name LIKE "马_";

SQL查询语句(一)相关推荐

  1. SQL查询语句 select 详解

    查询select: 1.单表查询 2.多表查询 3.嵌套查询分类 1)单表查询 2)多表查询 A.连接查询 B.子查询 ①一般子查询 ②相关子查询*************************** ...

  2. MySQL番外篇:一条SQL查询语句是如何执行的?

    在面试的过程中,有的面试官会给出一条简单的SQL查询语句,让简单说一下执行的过程. SELECT * FROM emp where age=30; 以下问MySQL的基本架构图,从中可以看出SQL语句 ...

  3. SQL查询语句总是先执行SELECT?你们都错了。。。

    来源 | infoq.cn/article/Oke8hgilga3PTZ3gWvbg 很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否 ...

  4. R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库、将dplyr语法查询语句翻译为SQL查询语句

    R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库.将dplyr语法查询语句翻译为SQL查询语句 目录

  5. SQL 查询语句总是先执行 SELECT?你们都错了

    很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否可以对窗口函数返回的结果进行过滤"这个问题,得出的结论是"窗口函数 ...

  6. SQL 查询语句总是先执行 SELECT?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"1024"领取惊喜资料 很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟 ...

  7. SQL查询语句基础构成

    本文是基本的SQL查询语句用法,内容主要来自Alan Learning SQL这本书第3章,包括select,from,where,group by,having,order by六个查询子句,后续会 ...

  8. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  9. 怎么做mysql查询系统_mysql数据库系统学习(一)---一条SQL查询语句是如何执行的?...

    一.第一节:一条sql查询语句是怎样执行的 5.5.5版本以后,默认使用存储引擎为InnoDB 不使用查询缓存,MySQL8.0没有查询缓存这个功能 总体来说:MySQL分为service层和存储引擎 ...

  10. 没错,纯SQL查询语句可以实现神经网络

    我们熟知的SQL是一种数据库查询语句,它方便了开发者在大型数据中执行高效的操作.但本文从另一角度嵌套SQL查询语句而构建了一个简单的三层全连接网络,虽然由于语句的嵌套过深而不能高效计算,但仍然是一个非 ...

最新文章

  1. matlab-矩阵应用
  2. 超级实用!用Python写股票分析工具
  3. 人工智能领域论文常见基本概念笔记
  4. Language modeling tutorial in torchtext
  5. SQL索引碎片整理脚本
  6. eclipse 连接 mysql
  7. ubuntu16 安装opencv
  8. Lotus开发之Lotus Notes中域的验证
  9. 关于mpvue 切换页面数据没清空
  10. Kettle连接mysql错误 org.pentaho.ui.xul.XulException: java.lang.reflect.InvocationTargetException
  11. C#获取标准北京时间
  12. Linux在线词典问题,linux中goldendict发声词典播放报错问题解决方案
  13. jk女孩被人偷拍知名企业代码泄露, 原来是属性注解模式(Attribute Annotation Pattern)兴风作浪
  14. 电子元器件行业经销商管理平台高效协同,优化经销商系统渠道链条
  15. 【kafka专栏】使用shell脚本快速安装kafka集群(含视频)
  16. CF #689(Div. 2) B - Find the Spruce
  17. 人工智能中的认识导航技术
  18. 操作Oracle类型CLOB和BLOB
  19. android 数据刷新问题,RecyclerView数据不刷新问题
  20. Java接受前端的base64,转换失败。base64转图片互相转换

热门文章

  1. Matlab表白520绘图爱心
  2. 无线通信在应用中的优势
  3. ElasticSearch 之初步上手
  4. 本周回顾:Windows 12、新版 Outlook 桌面版、OneNote、PowerToys、官方手机壁纸等
  5. iOS AdHoc ipa包改用企业账号重新签名(含动态framework)
  6. iOS区分不同版本URL schema
  7. V-Value in fiber(光纤中的V值)
  8. mysql索性为啥个别值比较慢_MySQL 性能优化:为什么 SQL 开启索引还是那么慢
  9. 浅谈腾讯的创业史及目前的发展趋势分析
  10. Golang获取视频时长