复习Mysql基本命令_笔记
插入数据 insert into t1(字段1名,字段2名) values(值1,值2),(值1,值2),(值1,值2);
查询数据 select 字段信息 from 表名 where 条件;
修改数据 update 表名 set xxx=xxx,xxx=xxx where 条件;
删除数据 delete from 表名 where 条件;
delete删除
多个表比较,删除指定表中的数据题目来源
#删除per1中的数据
delete per1
#数据来源
from Person per1, Person per2
# 删除条件
where per1.email=per2.email and per1.id > per2.id
IF
根据表达式的某个条件或值结果来执行一组 SQL 语句。
语法结构如下:
IF(expr,v1,v2)
其中:表达式 expr 得到不同的结果,当 expr 为真是返回 v1 的值,否则返回 v2.
order by排序
格式: order by 字段名 asc(升序默认)/desc(降序)
left(Str,length)
left()函数是一个字符串函数,它返回具有指定长度的字符串的左边部分。
接收两个参数:
str:一个字符串;
length:想要截取的长度,是一个正整数;
SUBSTRING(str, begin, end)截取字符串
end 不写默认为空。
SUBSTRING(name, 2) 从第二个截取到末尾,注意并不是下标,就是第二个。
CONCAT() 函数
CONCAT 可以将多个字符串拼接在一起。
UPPER(str) 与 LOWER(str) 大小写转换
UPPER(str) 将字符串中所有字符转为大写
LOWER(str) 将字符串中所有字符转为小写
group_concat() 列变行
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
详细介绍
题目来源
union 和 union all 连接两个查询语句
如果我们需要将两个 select 语句的结果作为一个整体显示出来,我们就需要用到 union 或者 union all 关键字。union (或称为联合)的作用是将多个结果合并在一起显示出来。
union
会自动压缩多个结果集合中的重复结果,而 union all
则将所有的结果全部显示出来,不管是不是重复。
行转列也用的union,例子
ifnull判断查询的值是否为null,然后赋值
IFNULL(expr1,expr2)的用法:
假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。
题目来源
limit分页
limit 跳过的条数,请求的条数(每页的条数)
跳过的条数=(请求的页数-1)*请求的条数(每页条数)
eg:select * from emp order by hiredate limit 6,3;
left join on左外连接查询
格式: select * from A left/right join B on 关联关系
外连接查询的是一张表的全部和另外一张表的交集数据
题目来源
join on内连接查询
格式: select * from A join B on 关联关系
group by分组查询
分组查询可以有多个条件,用“,”隔开
select job,count(*) from emp group by job;
count()统计个数
select job,count(*) from emp group by job; #统计每种工作的人数
distinct去重
select distinct job from emp;
DATEDIFF(date1,date2) 两个日期的天数差集
between A and B查询两个数字之间的结果
也可以用来查找两个日期间的数据
题目来源
sum()求和
注:要统计某段日期内的数量,不能用count,必须用sum,因为查询两个日期间的数量返回的是数量,不是具体的日期,sum(sale_date between '2019-01-01' and '2019-03-31')
题目来源
题目来源
having
having后面可以包含聚合函数的条件,需要和group by结合使用,写在group by的后面select dept_id,avg(sal) from emp group by dept_id having avg(sal)>2000;
注:where后面只能写普通字段的条件,不能包含聚合函数
题目来源