在前面几章中,已经慢慢的熟悉了数据库的概念。通过了SQL语句取到了学生表格里的数据,看到了SQL并不是一门难于理解的语言,这么门语言的语法像极了英文代码。
在数据的管理中,如同在管理物件一样,最常见的是取出相应的物品,查询取得数据也同样,先要知道数据存在在哪个仓库,存放在哪一个位置下。
对于数据的查询选取,占据了数据库操作的大半江山,是SQL语句的重点。开始来看看数据是如何查询的。
再来看一下已有的学生的数据:
数据有六行属性字段:序号,名字,性别,年龄,手机号。其中id是自动增长的,在插入的时候不用考虑这一列的数值。
字段的选择
在SQL中 *
号表示通配符,表示选择所有的东西,如
SELECT * FROM `students`
选择了 students
表中所有的字段,在具体的要求中如果并不需要所有的字段的话,有时字段特别的多,SQL的运行规则在前面介绍过,服务器算完了数据要返回给客服端,如果字段特别多,数据量特别大,拖慢了计算速度和数据返回的速度,所以一般在项目的使用过程中通常不会用 *
号来返回所有的数据字段。
对于要返回的数据字段,把 *
替换为字段的名称:
SELECT name,sex FROM `students`
字段之间用 ,
隔开。
结果返回个数
select
如果不加限制的话,返回的是所有的数据,在这个例子中我们只有六条数据,并没有太大的影响,如果有一个几百万条的数据,返回来的数据量太大,容易导致服务端卡死。
一般来说,我们也不需要一次性的返回太多的数据,基本上是看不过来的,在很多网页上对于太多的数据大部分使用分页的办法来处理。SQL的查询就能实现很好的分页功能。
只可惜并不是所有版本的SQL对于结果个数的限制是同样的语法,在MySQL中使用的关键字为limit
假设我们需要每一页显示两个学生,用分页的方式来处理,如下:
SELECT * FROM `students` limit 0,2
显示的结果如下:
结果学生表格里的前面两条数据,这里就能知道 limit
的用法,limit offset,num
,即 limit
后面跟的是偏移,和个数,偏移就可以用在sql的分页中了,如下显示第二页的内容:
SELECT * FROM `students` limit 2,2
不出意外的话,显示的应该是 id为 3,4的数据。如下:
limit
中,如果只跟一个数值,那个数值就是返回的结果数,也就是默认的偏移为0。
SELECT * FROM `students` limit 2
显示的结果为前面的两条数据。
不同SQL的分页方法不太一样,但是基本的语法都是相似的,可以根据选用的版本进行选择。
条件选择数据
普通字段查询
SQL语言中,条件选择的关键字 where
,用 where
后面跟具体的条件,条件的限制基本上是对字段的限制,如我们要选出班级所有的男学生,用sex来进行限制:
SELECT * FROM `students` where sex = '男' limit 10
结果如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WkbkGxEi-1649725714832)(/images/kuxue/sql-start/mysqlwhere1.png)]
用 where
关键字对条件进行过滤,sex字段限制学生的性别,这里的操作符为 =
,除了等号以外,常用的操作符如下:
操作符 | 说 明 |
---|---|
= | 等于 |
< > | 不等于 |
< | 小于 |
<= | 小于等于 |
! | 不等于 |
> | 大于 |
!> | 不大于 |
BETWEEN | 两者之间 |
IS NULL | 是否为空 |
in | 在数组中 |
not | 用来否定其后条件 |
以上的这些操作符,跟我们数学用到的意思差不多,经常用到的是那几个,也不用特别的去记。
多条件
有的时候一个条件的限制并不能满足需要,如需要选出年纪在20岁的男同学,多个条件的组合,条件的组合关键字为 and,or:
SELECT * FROM `students` where sex = '男' and age = 20 limit 10
结果如下:
只有id为1的王小明符合上面的条件,即20岁男同学。
用like匹配字符串
对字符串的查找是搜索最经常见的,想走出某一字符串是否出现在特定的字段中,用以上的操作符是做不到的,例如想查找手机号码以13开头的同学,这是一种匹配的结果,用通配符 %
,加操作符 like
。
如下:
SELECT * FROM `students` where tel like '13%' limit 10
结果如下:
可以试试:
SELECT * FROM `students` where tel like '%23%' limit 10
的结果是那些同学,语句具体的意思是什么?
通常通配符的查询效率都是比较低的,为什么会是这样,后面会有解释。
对于数据的查询,涉及到了字段的选择,返回个数,条件查询等,查询语句按照固定的顺序组织起来,在写SQL语句时根据需求写出语句就能查到相应的结果。