查询语言
查询的基本语法
select 字段列表 frmo 表名 where [条件]
查询所有:SELECT * FROM product;
查询部分字段:SELECT pname,price FROM product;
定义字段的别名:SELECT pname AS ‘品牌’ FROM product
去掉重复值:SELECT DISTINCT price FROM product
查询的执行顺序
编写顺序:select…from…
执行顺序是: 先frmo后select
条件查询—基本
select…from…where…
比较运算符:特别注意的是不等于的写法是“!=”或者“<>”
逻辑运算符
and
or
not
范围查询:between…and… 在什么之间
多个值的等性条件:
in([值…])相当于多个or
模糊查询:like
%: 通配符 表示多个字符
_:通配符 表示一个字符
NULL 状态 查询
空:is null;
非空:is not null;
注意的是:空串(”“)和NULL是不一样的。以后空串使用NULL状态表示。
条件查询—排序
select …from …order by…
order by..字段.{[asc]|[desc]}
asc:升序(从小到大)
desc:降序
多列排序:先是对第一个排序列排序,如果第一个排序列的值不同,就不按第二排序列排序,只有当第一排序列相同了才使用第二排序列进行排序。
聚合函数
select 聚合函数 from…where…
count(字段):统计行数
sum(字段):求和,数值类型
max(字段):求最大值;数值类型、字符串、日期
min(字段):求最小值
avg(字段):求平均值
聚合函数的结果是“计算出来的结果”,与任何记录没有关系,可能跟某一个记录的这列的值相同,但不是这个值。
聚合函数查询结果中,只包含聚合函数的结果列,查询的结果和其他的字段(属性列)没有关系。
分组查询
查询每种的….
select …[聚合函数]…from …group by[字段1],[字段2]…
分组的意思是将同一数据内容的【字段】数据进行分组。
分组查询的查询结果中,最多只能出现分组字段、聚合字段其他字段没有意义。
执行过程:先分组在聚合。
对聚合后的结果进行筛选 Having
select …from…where…group by…order by…
执行顺序
from
where
group by
聚合函数
select
order by
格式:
select …from…where…group by…having…order by…
执行顺序
from
where
group by
聚合函数
having 对聚合后的结果进行筛选
select
order by
多表查询
什么是主表:存放信息被其他表所引用;主键字段是被引用的字段
什么是从表:引用其他表的表;外键:引用主键字段
SQL语句建立外键的约束
alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);
ALTER TABLE student ADD CONSTRAINT fk_student FOREIGN KEY (kmid) REFERENCES km (id);
从表往主表托。引用表是主表,
- 一对一
- 一对多
- 多对多
内连接查询
隐式内连接:select * from table1 t1,table2 t2 where t1.id=t2.id(两个表的等值条件);
显示内连接:select * frmo t1 INNER JION t2 ON t1.id=t2.id(两个表的等值条件)
外连接查询
左外连接:select * from t1 left join t2 on t1.id=t2.id;
右外连接:select * from t1 right join t2 on t1.id=t2.id;
三表查询
内连接查询
隐式内连接:select * from t1,t2,t3 where t1.id=t2.id(表1好中间表的等值关系) and t2.id=t3.id(中间表和表3的等值关系) and 其他查询条件
显示内连接:select * from 表一 INNER JOIN 中间表 ON 表一和中间表的等值关系 INNER JOIN 表2 ON 中间表和表2 的等值关系 and 其他查询条件
外连接查询
左外连接:select * from 表一 LEFT JOIN 中间表 ON 表一和中间表的等值关系 LEFT JOIN 表2 ON 中间表和表2 的等值关系 and 其他查询条件
右外连接:select * from 表一 RIGHT JOIN 中间表 ON 表一和中间表的等值关系 RIGHT JOIN 表2 ON 中间表和表2 的等值关系 and 其他查询条件
子查询
select * from t1 where fielt(字段)>(select fielt(字段) from 表 where 字段2 =‘条件’);
分页查询
select * from t_grade where gradeName like ‘%计%’ limit 0,10
select * from t_grade limit 0,10
好文阅读
发表评论