这篇博客主要是笔者为了准备秋招的数据分析岗位,然后整理的数据库的一下基本概念,如果有什么不对的地方,欢迎各位通过QQ邮箱:1391716398与笔者进行联系和沟通。
where 条件子句
固定语法格式: where * from 表名 where 条件;
表记录管理
1.删除特定条件的表记录
delete from 表名 where 条件;
如果不加where,则表中的数据全部删除;
2.更新表记录
updata 表名 set 字段名=value1,字段名2=value2…+where 条件;
运算符操作
数值比较运算符:=、!=、>、<、>=、<=;
字符比较运算符:= 、!=;
逻辑比较:and (两者或者多个条件同时满足时)
or (两者或者多个条件有一个满足就可以)
范围比较: between in 、in 、not in
语法:between 值1 and 值2;
in (值1,值2,值3…)(可以是字符也可以是字符串);
not in (数字,字符串都可以)
匹配空、非空
匹配数值为空,即null的情况时,用 is null来匹配,不能用=null ,因为 null表示的是数值为空,匹配非空就是:is not null;
匹配空字符串:字段=“”;
null: 空值,必须用is 或者 is not 去匹配
“ ” :空字符串,用=或者!=去匹配
模糊匹配
语法:where 字段名 like (表达式);
表达式:
_ : 匹配单个字符;
%: 匹配0到多个字符;
示例:
select name from sanguo where name like “%”;
匹配至少有两个字符的名字
select name from sanguo where name like “%”;
匹配所有字符(空值不会统计即Null值)
正则表达式匹配
语法:select 字段 from table where 字段 regexp 正则表达式;
正则表达式符号:
^:以……开头;
$:以……结尾;
.:可以匹配任意字符
[]:包含……内容;
[0-9]:匹配带数字;
[a-z]:匹配带小字母;
SQL查询
总结(执行顺序):
③ select ……(聚合函数) from 表名
① where……
② group by……
④ having……
⑤ order by……
⑥ limit……
order by
作用:给查询结果进行排序;
语法格式:order by 字段名 排序方式;
ASC 升序 DESC 降序
limit
作用:限制显示查询记录的个数
用法:
limit n ------------显示n条记录
limit m,n ------------显示从第(m+1)条开始显示n条记录
聚合函数
分类:
avg(字段名) :求字段平均值;
sum(字段名) :求该字段和;
max(字段名) :求该字段最大值;
min(字段名): 求该字段最小值;
count(字段名): 统计该字段记录的个数
group by
作用:给查询结果显示分组,一般与聚合函数使用;
执行顺序:先分组再聚合
注意:group by 之后的字段名必须为select 之后的字段名,如果select之后的字段没有在group by 之后,则必须要对改字段进行聚合处理。
例如:select 字段名 from sanguo group by 字段名;
having
作用:对查询结果进行进一步的筛选
having 语句后的字段可以是表中不存在的字段,但是where语句之后的字段必须是表中存在的字段。
having 语句通常与group by 语句联合使用,用来过滤group by 语句返回的记录集;
distinct
作用: 不显示字段重复值
distinct 处理的是distinct 和from 之间的所有字段,所有字段值必须完全相同才可以去重,distinct不能对任何字段做聚合处理。
嵌套子查询
①把内层的查询结果作为外层的查询条件
如:select * from table where 条件(select *from tanble)
连接查询
内连接
定义:从表中删除与其他被连接的表中没有匹配到的行,简而言之就是只显示匹配到的信息。
语法格式:
select 字段名列表 from 表1
inner join 表2 on 条件 inner join 表3 on 条件……;
外连接
左连接:
定义:以左表为主显示查询结果,以哪个表为主,就全部显示哪个表的所有信息,没有匹配到的则置为null;
语法格式:
select 字段名列表 from 表1
left join 表2 on 条件;
右连接:
定义和语法格式与左连接相似;
多表查询
select 字段名列表 from 表名列表 ; 等同于笛卡尔积
select 字段名列表 from 表名列表 where 条件;等同于内连接 inner join;