mysql核心查询

1.单表查询

1.1排序 order by (asc 升序,desc 降序)

1)单列排序

select * from <表名> order by <列名> asc

2)组合排序

select * from <表名> order by <列名1> asc,<列名2> desc

1.2聚合函数

聚合函数作用
count()统计列不为null的行数个数
sulm()计算指定列的行数
max()计算指定列的最大值
min()计算指定列的最小值
avg()计算指定列的平均值

语法结构:

select  <聚合函数> from  <表名>;

1.3分组 group by

语法结构:

select <分组字段/聚合函数> from <表名> group by <分组字段> having <条件>;

注:
1)分组一般会与聚合函数一起使用。
2)group by的字段必须出现在select后面,而且select后面只能是分组,聚合函数的字段,不能出现其他的字段。
2)分组后,对分组数据进行过滤,可使用having + 条件(类似于where条件)。

where和having的区别

过滤方式特点
where分组前,不能进行聚合函数
having分组后,可进行聚合函数

1.4 limit 函数(返回查询结果的函数)

语法结构:

select <字段1>,<字段2>,...from <表名> limit/offset/length;

limit ,offset和 length 区别

函数作用
limitlimit 3,6 从0开始计数,从第4条开始,查询6条
offset从0开始计数,如省略,默认0
length返回的行数

2.sql约束

常见的约束

约束名约束关键字
主键primary key
唯一unique
非空not null
外键foreign key

2.1 主键约束(唯一,非空)

语法结构:

create  table ( 
<字段名>,<字段类型> primary key
);
#主键自增
create table (
<字段名>,<字段类型> primary key auto_increment
);
#修改主键自增的起始值
create table (
<字段名>,<字段类型> primary key auto_increment
)auto_increment =<数值>;

2.2 非空约束(某一列不允许为空)

create  table ( 
<字段名>,<字段类型> not null
);

2.3 唯一约束(某一列的值不重复)

create  table ( 
<字段名>,<字段类型> unique
);

2.4 默认值(指定某列的默认值)

create  table ( 
<字段名>,<字段类型> default <默认值>
);

3.多表查询

3.1 笛卡尔积(交叉查询,会产生笛卡尔积,基本不用)

语法格式:

select <字段名> from <1>,<2>;

3.2 多表查询分类

3.2.1 内连接

1)隐式内连接:取交集

select <字段名> from <左表>,<右表> where <连接条件>

2)显式内连接:取交集

select <字段名> from <左表> (inner) join <右表> on <条件>

3.2.2 外连接

1)左外连接:左表为基准,匹配右表数据,匹配不到,左表数据显示,右表的展示为null

select <字段名> from <左表> left (outer) join <右表> on <条件>

2)右外连接:右表为基准,匹配左表数据,匹配不到,右表数据显示,左表的展示为null

select <字段名> from <左表> right (outer) join <右表> on <条件>

4.合并查询

4.1 union

语法结构:

select column1 [, column2 ] 
from table1 [, table2 ] 
[where condition] 
union
select column1 [, column2 ] 
from table1 [, table2 ] 
[where condition]

注:
1)选择的列数必须相同;
2)所选列的数据类型必须在相同的数据类型组中(如数字或字符)
3)列的名称不必相同
4)在重复检查期间,NULL值不会被忽略.

4.2 union all

union all 重复行包含在内,所遵从的规则与 union 一致。
语法结构:

select column1 [, column2 ] 
from table1 [, table2 ] 
[where condition] 
union all 
select column1 [, column2 ] 
from table1 [, table2 ] 
[where condition]

总结:
union和union all关键字都是将两个结果集合并为一个,也有区别。
1、重复值:union在进行表连接后会筛选掉重复的记录,而union all不会去除重复记录。
2、union all只是简单的将两个结果合并后就返回。
3、在执行效率上,union all 要比union快很多,因此,若可以确认合并的两个结果集中不
包含重复数据,那么就使用union all。

5.子查询

5.1 子查询结果作为查询条件:

语法结构:

select <查询字段> from <> where <字段> = (子查询)

5.2 子查询结果作为一张表:

select <查询字段> from (子查询) <表别名> where <条件> 

5.3 子查询结果是单列多行:

select <查询字段> from <> where <字段> in (子查询)

6.mysql函数–扩展函数

6.1 数学函数

函数作用
abs(x)返回x的绝对值
floor(x)向下取整,ceil(x) 向上取整返回不大于x的最大整数值
rand()返回0·1的随机数
pi()返回圆周率的值
mod(x,y)返回x除以y后的余数

6.2 字符串函数

函数作用
concat(s1,s2…)将字符串拼接,连接为一个字符串
lsft(s,n)返回从字符串s开始的n最左字符
trim(s)移除掉字串中s的字头或字尾处空格
replace(s,s1,s2)用字符串s2替代字符串s重的字符串s1
substring(s,n,len)截取字符串s中第n个位置开始,长度为len的字符串
mid(s,n.len)同substring(s,n,len)
reverse(s)将字符串s的顺序翻转过来

6.3 日期和时间函数

函数作用
curdate()返回当前日期
curtime()返回当前时间
now()返回当前日期和时间
month(d)返回月份
year(d)返回年份

6.4 条件判断函数

函数作用
if(expo,v1,v2)如果表达式成立,则执行v1,否则执行v2
case when用于计算条件列表并返回多个可能结果表达式之一

6.5 系统信息函数

函数作用
version()返回数据库的版本号
databases()返回当前数据库名
user()返回当前用户名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值