mysql的数据可以有逗号吗_SQL


笔记对应书本的四五六章

「written by Talaxy on 2/22/20」


SELECT语句

最经常使用的SQL语句就是SELECT语句了,它的用途是从一个或多个表中检索信息。

为了使用SELECT检索数据,必须至少给出两条信息:

  • 想检索什么
  • 从什么地方检索

检索单个列

从表中获得一个列 select 列名 from 表名;

如果没有明确排序查询结果,则返回的数据的顺序没有特殊意义

多条SQL语句必须以分号间隔。
MySQL和多数DBMS一样,不需要在单条SQL语句后加分号。
但如果使用的是mysql命令行,必须加上分号来结束SQL语句。

SQL语句不区分大小写。但许多SQL开发人员喜欢对SQL关键字使用大写,对列和表名使用小写,使得提高阅读性。
(注意:标识符,即数据库名、表名、列名,在MySQL4.1之前是区分大小写的)

一行SQL语句可以拆分为几行来写

检索多个列


select


检索所有列


select


如果不是真的需要,最好不要用*通配符,检索不需要的列通常会降低检索和应用程序的性能

可以用*通配符来查询名字未知的列

检索不同的行(纪录)

如果不想要每个值每次都出现(去重):


select


distinct关键字必须放在所有列名之前

限制结果

如果只要返回前几行:


select


这里的行数是指最大行数

返回从第几行开始后的几行:


select


这里第一个数是开始位置,第一个位置是0,第二个数是要检索的行数。比如 "limit 1, 1" 会检索出第二行而不是第一行

MySQL5也可以这样写来提高阅读性:


select


使用完全限定的表名


select


这个语句和最开始的SELECT语句效果相同,但有些情况下需要这么写,以后章节会提到。


排序数据

子句(clause):

SQL语句由子句构成,有些子句是必需的,有的是可选的。一个子句通常由一个关键字

对指定列排序(字典排序)输出:


select


按多个列排序


select


ORDER BY后列的顺序为排序优先级顺序,由高到低

指定排序方向


select


[]包含的内容为可选项
若要对指定的列排序设为降序,在列的后面加desc即可。每个列后都可以加desc。

使用ORDER BY和LIMIT的组合,能找出第一个列中最高或最低的值:


select



使用WHERE子句

检索时可能会需要过滤出需要的信息。只检索所需数据需要指定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition)


select


条件可以是判等,比如 "列二 = 2.5"

尽量使用SQL过滤而非手动过滤,手动过滤会让服务器发送多余的数据,导致网络带宽的浪费。

在同时使用ORDER BY和WHERE子句时,应让WHERE在前,否则会产生错误

WHERE子句操作符

MySQL支持以下条件操作符:


mysql的数据可以有逗号吗_mysql表名不区分大小写_02


MySQL在执行匹配时默认不区分大小写

范围检查:


select


空值检查:


select


NULL是无值,而非0、空字符串或仅仅包含空格

在过滤操作时,NULL无法进行匹配(除了空置检查),所以在匹配过滤或不匹配过滤时不返回它们。因此,在过滤数据时,一定要验证返回数据中确实给出了被过滤列具有NULL的行。