第五章 SQL查询(一)
一,什么是查询
查询产生一个虚拟表
看到的是表形式显示的结果,但结果并不真正存储
每次执行查询只是从数据表中提取数据,并按照表的形式显示出来
二,查询语法
SELECT <列名>
FROM <表名>
[WHERE <查询条件表达式>]
[ORDER BY <排序的列名>[ASC或DESC]]
1.查询全部的行和列
-- 查询所有的行和列 * 代表所有
SELECT * FROM menus;
2.查询部分行和列
-- 查询部分行和列
SELECT id,NAME,price FROM menus;
3.有条件的查询
-- 价格小于30的所有商品
SELECT * FROM menus WHERE price<30;
4.列别名
-- 别名 列名 as 别名 as可以省略
SELECT id AS 序号,NAME AS 名称,price AS 市场价格
FROM menus;
SELECT id 序号,NAME 名称,price 市场价格
FROM menus;
5.空行
-- 空行 没有添加过数据的字段
SELECT * FROM menus WHERE price IS NULL;
-- 原来有数据,但数据被清除的列
SELECT * FROM menus WHERE brief='';
Null 和 ‘ ’的区别
null是空值,表示未被赋值。
‘ ’是空字符串,表示非空,只不过值是一个非空字符串而已。
6.分页查询
在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?
LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数
LIMIT 接受一个或两个数字参数。参数必须是一个整数常量
第一个参数指定第一个返回记录行的偏移量
第二个参数指定返回记录行的最大数目
初始记录行的偏移量是 0(而不是 1)
-- 分页查询 LIMIT m,n; m开始位置 从0开始,n显示的数量
-- 每页显示5条数据 第一页
SELECT*FROM menus LIMIT 0,5;
-- 每页显示5条数据 第二页
SELECT*FROM menus LIMIT 5,5;
7.模糊查询
通配符
一类字符,代替一个或多个真正的字符
与LIKE关键字一起使用
-- 查找 所有 张X
SELECT * FROM students WHERE studentname LIKE '张_';
-- 所有 X三
SELECT * FROM students WHERE studentname LIKE '_三';
-- 找出所有 姓张的人
SELECT * FROM students WHERE studentname LIKE '张%';
BETWEEN
查询某一列中内容在特定范围内的记录
-- 查找价格在20~30之间的所有菜品
SELECT*FROM menus WHERE price>=20 AND price<=30;
SELECT*FROM menus WHERE price BETWEEN 20 AND 30;
IN
查询某一列中内容与所列出的内容列表匹配的记录
-- 姓名是 (张三,张五,李四)的信息
SELECT*FROM students WHERE studentname='张三'
OR studentname='张五' OR studentname='李四';
SELECT*FROM students WHERE
studentname IN('张三','张五','李四');
-- 姓名不是 (张三,张五,李四)的信息
SELECT*FROM students WHERE
studentname NOT IN('张三','张五','李四');
排序
单列排序
-- 根据成绩升序排列 asc升序 可以省略
SELECT*FROM scores ORDER BY score ASC;
-- 根据成绩降序排列 DESC降序,不能省略
SELECT*FROM scores ORDER BY score DESC;
按多列排序
-- 根据 科目(降序)和成绩排序(降序)
SELECT*FROM scores ORDER BY subjectNo DESC,score DESC;
SELECT*FROM scores ORDER BY score DESC,subjectNo DESC;