1.插入
insert into 表名(字段名) values (字段值);
2.删除
delete from 表名 where 筛选条件
3.查询语句
1. 聚合函数使用
sum, max, count, min, ave
2. 连接查询
多表查询,查询的字段来自多个表的时候
#笛卡尔乘积现象
n * m个行
#起别名
和字段起别名是一样的
sql99的语法
#内连接 inner
select 字段名
from 表1
INNER JOIN 表2, ..表n
on 表1.字段 = 表2.字段名, 表2.字段 = 表3.字段
[where 筛选条件]
[group by 分组条件]
[having 分组后的筛选]
[order by 条件]
[limit offset end]
#外连接
左外连接,右外连接,全连接
left [outer] join 表2 on
right [outer] join 表2 on
full [outer join] 表2 on
#交叉连接
cross
sql92 语法
#内连接
select 字段名
from 表1 , 表2 ...表n
where 连接条件
[and 筛选条件]
[where 筛选条件]
[group by 分组条件]
[having 分组后的筛选]
[order by 条件]
[limit offset end]
#外连接 不支持?
#交叉连接 不知道。
1.内连接
#(1)等值连接
#查询文章
select name, count(*) as cnt from article ,user where user.id = authorid group by authorid order by cnt desc, authorid limit 1;
#(2)非等值连接·
#把等号换成非等号
比如between and
#(3)自连接
#自己连接自己的连接
#查询员工的领导姓名
select e.name, ep.namefrom employees e, employee ep
where e.manage_id = ep.employee_id;
2.外连接
特点
(1)左右外连接查询的结果为主表的所有记录,从表的记录没有显示null。
(2).全外连接:主表有的从表有的都能查出来,mysql不支持。
用处
可以查询一个表中有,一个表中没有的。统计一些对象的空的性质,
比如没写过文章的作者,没有员工的部门等。
#统计所有作者写的文章的个数
select name, count(title) from user left join article on user.id = authorid group by name;
#选出没写过文章的作者名字
select name from user left join article on user.id = authorid where article.id is null;
先选出,在分组,在排序
所以不能按照authorid 进行分组,因为选出的列中没有authorid
3.交叉连接
得出笛卡尔积
4.集合与查询的一些关系
3. 分组查询
select 聚合函数 from 表
[join type join 表2 on 连接条件]
[where 分组前筛选]
[group by 一个或多个分组条件]
[having 分组后筛选]
[order by 字段 [desc]]
按照日期从高到低的顺序
4.分页查询
就是在前面的基础上加上了limit进行限制,这样一来就可以求出聚合函数排序之后的值的最大最小值了!
select 聚合函数 from 表
[join type join 表2 on 连接条件]
[where 分组前筛选]
[group by 一个或者多个分组条件]
[having 分组后筛选]
[order by 字段 [desc]]
[limit offset, end]
例如:
#查询文章数目最少的作者id和他写的文章数目,
select count(*) as cnt, authorid from article group by authorid order by cnt limit 1;
#如果右多个人写的都最少,选取id最小的
select count(*) as cnt, authorid from ariticle group by authorid order by cnt, authorid limit 1;
#查询文章数目最多的作者id和他写的文章数目,如果右多个人写的都最多,选取id最大的
select count(*) as cnt, authorid from article group by authorid order by cnt desc, authorid desc limit 1;
5. 子查询
- 分类
(1)按照子查询出现的位置
select 后面
仅支持标量子查询
from 后面
支持表子查询
where 或者having 后面
标量子查询
列子查询
行子查询
exits后面
表子查询
(2)按照结果集的行列数
标量子查询
列子查询
行子查询
表子查询 - 特点
(1)小括号内
(2)在条件右侧
(3)标量子查询:伴随着 < > <=
(4)列子查询: in any/some,all
4.性能分析
5.explain
explain + sql