针对数据表里面的每条记录,select查询语句叫做数据查询语言(DQL)
select的语法格式
SELECT
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]
示例表:book
简单查询 查询表的所有字段
select * from book;
select bookid, bookname from book;
select bookid, bookname,bookprice * borrowsum from book;
使用别名 谨记:as是可以忽略不写的哦
<表名> [AS] <别名>
<字段名> [AS] <别名>
select bookid as 图书ID, bookname 图书名称,bookprice * borrowsum as 图书总价 from book;
注意:表名取的别名不能和其他表名相同,字段名取的别名不能和其他字段名相同
消除重复行
SELECT DISTINCT <字段名>,<字段名>, FROM <表名>;
select distinct borrowsum from book;
select count(distinct typeid) from yyTest;
注意:当使用distinct的时候,只会返回指定的字段,其他字段都不会返回,所以查询语句就变成去重查询语句
条件查询
WHERE 查询条件
五种查询条件: 比较运算符、逻辑运算符
=:等于 <=>:安全等于 !=、<>:不等于 <、>、<=、>=:小于、大于、小于等于、大于等于 and、&&:所有查询条件均满足才会被查询出来 or、||:满足任意一个查询条件就会被查询出来 xor:满足其中一个条件,并且不满足另一个条件时,才会被查询出来 between and 关键字
is null 关键字
in、exist 关键字
like 关键字
单一条件的查询栗子 一般单一条件查询用的就是比较运算符
select * from book where borrowsum > 10;
select * from book where typeid = 1;
select * from book where typeid != 1;
select * from book where borrowsum > 8;
select * from book where borrowsum >= 10;
多条件的查询栗子 多条件的查询都需要使用逻辑运算符
select * from book where borrowsum >= 10 and typeid =3;
指定范围查询
select * from book where borrowsum < 10 or borrowsum > 30;
select * from book where borrowsum < 10 or borrowsum > 30;
select * from book where borrowsum between 10 and 30;
select * from book where borrowsum not between 10 and 30;
查询值为空的行 is null是一个关键字来的,用于判断字段的值是否为空值(NULL) 空值 ≠ 0,也 ≠ 空字符串""
select * from book where borrowsum is null;
指定集合查询
select * from book where bookname in ('离散数学','Java程序设计');
select * from book where bookname not in ('离散数学','Java程序设计');
模糊查询
LIKE '字符串'
NOT LIKE '字符串'
select * from book where bookname like 'java_';
select * from book where bookname like '%java';
select * from book where bookname like '%java%';
select * from book where bookname like 'java%';
查询排序 order by的语法格式
ORDER BY <字段名> [,<字段名>...] [ASC | DESC]
ASC:升序排序,默认值 DESC:降序排序 ASC select * from book order by bookprice asc; DESC
select * from book order by bookprice desc;
多字段排序
select * from book order by borrowsum asc ,typeid desc;
select * from book order by borrowsum, typeid desc;
LIMIT 初始位置,记录数
select * from book limit 0, 3;
-- 从第1条记录开始,一共返回三条记录
select * from book limit 2, 2;
-- 从第3条记录开始,一共返回两条记录
注意:初始位置和记录数都必须为正整数
limit不指定初始位置的栗子
LIMIT 记录数
select * from book limit 3;
-- 一共返回3条记录
LIMIT 记录数 offset 初始位置
select * from book limit 5 offset 1;
-- 从第2条记录开始,一共返回五条记录
和 limit 初始位置, 记录数 用法一样,只是多了个offset,参数位置换了下而已