MySQL中SELECT语句简单使用
最近开始复习mysql,查漏补缺吧。

关于mysql
1.MySQL不区分大小写,但是在MySQL 4.1及之前的版本中,数据库名、表名、列名这些标识符默认是区分大小写的;在之后的版本中默认不区分大小写。
2.MySQL不需要在单条SQL语句后加上分号,但是在特定的DBMS(数据库管理系统)可能必须加分号以此结束。如果使用的是MySQL命令行,必须加上分号来结束SQL语句。
SELECT语句简单使用
SELECT COLUMNS FROM TABLE;
同时检索多列,字段名之间用英文逗号“,”分隔,最后一个字段名后不用跟逗号。一般,除非确实需要表中的每一列,否则别在SELECT语句中使用通配符“*”。因为检索不需要的列通常会降低检索和应用程序的性能。

1.DISTINCT关键字
使用此关键字表示去掉检索结果中相同的值。如果使用DISTINCT关键字,它必须直接放在字段名的前面。

1.不使用DISTINCT关键字

2.使用DISTINCT关键字

可以看到,使用了DISTINCT关键字后去掉了检索结果中的重复值。

问题:如果在DISTINCT关键字后面的跟多个列名呢?

不使用DISTINCT关键字

使用DISTINCT关键字

结果一样,但并不是DISTINCT关键字不起作用,DISTINCT关键字是应用于所有列的,而不是它后面紧接着的那一列。在有多列的情况下,每行的每个字段的值都相同时才不会被检索出来。如上,如果将值conductor2改成conductor1,那么第0行(和编程语言一样,检索结果序号也是从0开始)和第1行检索出来的两列值相同,所以只会出现一行。(这里不确定出现的是前一行还是后一行。)

(2)LIMIT关键字
LIMIT关键字放于查询语句末尾,用于限制检索结果的行数,即只返回制定的行数。

不使用LIMIT关键字

共返回了11行。

使用LIMIT关键字(带1个参数)

返回指定的行数,即5行。

使用LIMIT关键字(带2个参数)

从第3行开始,共返回5行。

总结: LIMIT带一个参数,即返回总行数,从0行开始返回。LIMIT带2个参数,第一个参数表示从第几行处开始返回,第2个参数表示返回的总行数。另外,如果实际行数少于LIMIT后面设置的返回总行数,则返回实际行数。

在Mysql 5 中的LIMIT做了一点修改:LIMIT 3,4的含义容易被混淆,究竟是从第3行返回4行还是从第4行返回3行呢?因此在Mysql 5 中,出现了它的替代语法:LIMIT 4 OFFSET 3(返回4行,从第3行开始返回)

(3)使用完全限定的表名
在上面我们用到的查询语句都只是列名来查询,现在我们在列名前加上表名来查询:

SELECT user.password FROM user;
这条语句其实等价于SELECT password FROM user;但这里指定了一个完全限定的列名。
同样,我们也可以完全限定表名:

SELECT user.password FROM product.user;
前提是user表在product数据库中存在。
总结:列名前用表名限定,表名前用数据库名来限定。

(4)排序数据(ORDER BY子句)
一般的,检索出来的数据并不是以纯粹的随即顺序显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据后来进行过更新或者删除,则此时的顺序将会受到MySQL重用回收存储空间的影响。

关于MySQL重用存储空间:当你使用delete删除数据 时,mysql并不会回收被已删除数据的占据的存储空间以及索引位,而是空在那里,等待新的数据来弥补这个空缺。被删除的数据的信息将会被保存在一个链接清单中,当有新数据写入的时候,mysql会利用这些已删除的空间再写入。这样就有一个缺点,如果一时半会,没有数据来填补这个空缺,那这样就太浪费资源了。所以对于写比较频烦的表,要定期进行optimize(参考文章)
1.单列排序

单列排序,指对表中某一列进行排序

未使用排序子句

使用排序子句

2.多列排序

同时对表中多个列进行排序

未指定排序

指定排序

多列排序,先将数据按照ORDER BY子句后的第一个字段排序,然后再按第二个字段排序......以此得到最重排序结果。其实,按多个列排序时,只有第一个字段中检索出有相同的值时,才会在按照第二个字段对第一列中相同的值对应的行再次排序。

3.指定排序方向

数据默认排序顺序时升序(从A到Z,0到9,对于汉字根据采用的编码排序参考文章1,参考文章2),为了进行降序排序需要制定关键字DESC。

此处可以看到汉字没有按照顺序排序,原因及解决办法请看上面两篇参考文章。

注意:DESC关键字只作用于直接位于其前的列名,所以想多列排序时都按降序排序,需要对每一列指定DESC关键字。
A与a:大多数DBMS中(包括MySQL),不区分大小写,即A与a相同,如果你要改变这种相同的顺序,简单的ORDER BY子句是无法做到的,需要靠数据库管理员来做一些改变。
(5)ORDER BY 与LIMIT组合
仅需一点:ORDER BY 应位于 FROM 后,LIMIT 应位于 ORDER BY 后。

(6)WHERE子句
在SELECT语句中,数据根据WHERE子句中制定的条件进行过滤。WHERE子句位于FROM后,位于ORDER BY子句前。

WHERE子句操作符:

LIKE操作符的通配符:

百分号(%):表示任何字符出现任何次数('%'不会匹配到值NULL)
下划线(_):匹配单个的任意字符
通配符搜索花费时间更长。所以不要过度使用,除非绝对需要,不要把他们放在开始处,因为这样搜索最慢。

正则表达REGEXP:

SELECT ... FROM ... WHERE ColumnName REGEXP '正则表达式';
正则表达式参考:mysql正则表达式

注意:在WHERE子句中如果是与字符串进行比较,则必须将比较值用引号括起来(单引号双引号皆可),与数值比较可以但不必用(无关表中字段类型只看具体值)。在使用LIKE的时候,也可匹配检索数值。

 1.与AND操作符
使用AND操作符给WHERE子句附加条件,检索匹配WHERE子句后的全部条件的行。

 2.与OR操作符
OR关键字检索匹配满足WHERE子句后任意一个条件的行。

 3.AND与OR同时使用

造成这个结果的原因是:SQL在处理OR操作符之前会优先处理AND操作符。也就是说上面被SQL理解为,检索password为passd123456且money大于等于500的所有行,或password为123456的所有行。解决办法是 使用圆括号将相应的操作符分组
原文地址https://www.cnblogs.com/ChangAn223/p/10603473.html

MySQL中SELECT语句简单使用相关推荐

  1. MySQL中SELECT语句简单使用 1

    最近开始复习mysql,查漏补缺吧. 关于mysql 1.MySQL不区分大小写,但是在MySQL 4.1及之前的版本中,数据库名.表名.列名这些标识符默认是区分大小写的:在之后的版本中默认不区分大小 ...

  2. mysql select语句最简_10个mysql中select语句的简单用法

    1.select语句可以用回车分隔 $sql="select * from article where id=1" 和 $sql="select * from artic ...

  3. 我们大家都知道mysql_10个mysql中select语句的简单用法

    本篇文章主要讲述的是MySQL selec句法的简单分析,我们大家都知道MySQL数据库是我们大家经常使用的数据库,其相关的应用也是备受关注的,那么以下的文章主要是对MySQL SELECT句法的简单 ...

  4. mysql中select语句子句,了解mysql中select语句操作实例

    Select的语法 SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] ...

  5. mysql中select使用方法,MySQL中select语句介绍及使用示例

    数据表都已经创建起来了,假设我们已经插入了许多的数据,我们就可以用自己喜欢的方式对数据表里面的信息进行检索和显示了,比如说:可以象下面这样把整个数据表内的内容都显示出来 select * from p ...

  6. MySQL使用SELECT 语句不加ORDER BY默认是如何排序的?

    大家好,我是阿飞云 怕什么真理无穷,进一步有近一步的欢喜 记录一个MySQL查询排序的问题,一个SQL语句没有加order by,那么查询出来的结果到底是按照什么规则排序的呢?查询了网上的一些资料,分 ...

  7. Mysql中SQL语句不使用索引的情况

    Mysql中SQL语句不使用索引的情况 MySQL查询不使用索引汇总 众所周知,增加索引是提高查询速度的有效途径,但是很多时候,即使增加了索引,查询仍然不使用索引,这种情况严重影响性能,这里就简单总结 ...

  8. mysql数据库语句分类_细数MySQL中SQL语句的分类

    1:数据定义语言(DDL) 用于创建.修改.和删除数据库内的数据结构,如:1:创建和删除数据库(CREATE DATABASE || DROP  DATABASE):2:创建.修改.重命名.删除表(C ...

  9. 关于mysql中Join语句的几个问题

    本文来说下关于mysql中Join语句的几个问题,JOIN语句在平时的开发中还是使用的非常多的 文章目录 概述 基本介绍 举个例子 一个注意点 Join原理 Simple Nested-Loop In ...

最新文章

  1. SpringMVC返回Map类型转换成JSON失败
  2. Elasticsearch使用BulkProcessor批量插入
  3. 解决 Let’s Encrypt SSL 证书配置错误
  4. 早上发现还是问题不断
  5. linux ruby作用域,浅谈ruby语言中的一些概念(lambda, proc, block)
  6. Visual Studio Developer Assistant 3月新功能展示
  7. 安装Windows10 64位提示“只能安装到GPT分区”,怎么办?
  8. 字符编码ASCII ,Unicode ,UTF-8
  9. 带外设引脚选择(PPS)的I/O端口
  10. ETL数据同步工具Kettle简介
  11. 课程表里的表表机器人_酷Q机器人课程表查询插件 QianSW.Com系列插件
  12. 迁移oracle数据库,简简单单的Oracle数据库迁移方法
  13. 睡眠时间 数据_我测试了Apple Watch睡眠追踪以节省您的时间和电池寿命
  14. 浅谈LANG_ISO 639-1世界语言列表检索
  15. html如何实现文字跳动,JS代码怎么实现文字跳动特效?
  16. 【SAP-CO】成本中心会计报表
  17. PNAS:整合抑郁症的分子、细胞和皮层神经影像特征
  18. Qt编写地图综合应用3-省市区域图
  19. Linux中磁盘读写速度测试
  20. 超过3万Mac已感染 “银麻雀”病毒 最新m1芯片也中招

热门文章

  1. android contentDescription的使用
  2. tensorflow保存模型和加载模型的方法(Python和Android)
  3. 动态规划—01背包问题
  4. Mybatis的CRUD之XML方式以及动态SQL
  5. 如何向前一个Fragment回传信息?
  6. java求两个集合的交集和并集,比较器
  7. redis在windows10上跑起来
  8. ubuntu chrome 无法从该网站添加应用,拓展程序或脚本
  9. (LeetCode 83)Remove Duplicates from Sorted Lists
  10. 如何在64位的Linux中运行32位的应用程序