MySQL核心查询
2021-08-16 20:18:13 0 举报
AI智能生成
MySQL核心查询语句
作者其他创作
大纲/内容
合并两个或多个select语句的结果集,并消除重复行
select语句必须拥有相同数量的列,列的数据类型也要相似,顺序相同,名称不必相同
select .. from ..unionselect .. from ..
UNION
与UNION类似,保留重复行
执行效率比UNION更快
UNION ALL
四、合并查询
一条select查询语句的结果,作为另一条select语句的一部分
概念
子查询必须放在小括号里
整个sql至少有两个select关键字
特点
子查询的结果是单行单列,将子查询的结果作为父查询的比较条件
select 字段名 from 表 where 字段=(子查询);
where型子查询
子查询的结果是多列,将子查询的结果作为一张表,提供给父层查询使用
select 字段名 from (子查询) 表别名 where 条件;
注意当子查询作为一张表的时候,需要起别名,否则无法访问表中的字段。
from型子查询
子查询的结果是单列多行,类似一个数组,父层查询使用IN函数,包含子查询的结果
select 字段名 from 表 where 字段 IN (子查询);
exists型子查询
分类
如果一个sql中需要多次使用同一个子查询的结果,可以使用with..as
with 表名 as (子查询) select .. from ..
with..as的用法
五、子查询
绝对值:ABS(x)
返回不大于x的最大整数值:floor(x)向下取整 ceil(x)向上取整
返回0~1的随机数:rand()
圆周率的值:pi()
数学函数
移除字符串s的字头或字尾空格:trim(s)
反转字符串s:reverse(s)
字符串函数
当前日期:curdate()
当前时间:curtime()
当前日期和时间:now()
返回月份:month(d)
返回年份:year(d)
日期和时间函数
case when
条件判断函数
数据库版本号:version()
当前数据库名:databases()
当前用户名:user()
系统信息函数
六、MySQL函数
select 字段名 from 表名 order by 字段名 [ASC/DESC],其中ASC表示升序(默认),DESC表示降序
单列排序
组合排序
排序ORDER BY
对某一列的值进行计算,返回一个单一的值,会忽略null空值
select 聚合函数 from 表名
统计总记录条数可以count(*)或count(1),不能用带有null的列进行统计
统计指定列不为NULL的记录行数:count(字段)
计算指定列的数值和:sum(字段)
计算指定列的最大最小值:max(字段)/min(字段)
计算指定列的平均值:avg(字段)
聚合函数
往往和聚合函数一起使用,对数据进行分组,分完组后在各个组内进行聚合统计
select 分组字段/聚合函数 from 表名 group by 分组字段 [having 条件],其中having是用于在分组后对数据进行过滤
分组时可以查询要分组的字段或者聚合函数统计,查询其他字段没有意义。所以group by的字段必须出现在select中,且select中除了group by字段和聚合函数,不能出现其他字段
where进行分组前的过滤,不能加聚合函数;having进行分组后的过滤,能加聚合函数
分组GROUP BY
限制返回的查询结果的行数
limit关键字
一、单表查询
作用:对表中的数据进行进一步限制,保证数据的正确性、有效性、完整性,违反约束的不正确数据无法插入表中
特点:不可重复,唯一,非空
作用:唯一标识数据库中的每一条记录
主键与业务和客户无关,往往人为加上一列,习惯上起名为id,rid等
创建表时,字段名 字段类型 primary key,例如eid int primary key
创建表时,primary key(字段名),例如primary key(eid)
创建表时不指定,通过DDL设置:alter table 表名 add primary key(eid)
语法
eid int primary key auto_increment
默认开始值是1,修改起始值方式:create table emp(...)auto_increment=100;
如果delete数据,则自增会继续记录如果truncate数据,则自增会重新从1开始
主键自增
主键约束
特点:某一列不能重复
创建表时,字段名 字段类型 unique
唯一约束
特点:某一列不允许为空
创建表时,字段名 字段类型 NOT NULL
非空约束
定义:在从表中与主表的主键对应的那个字段
作用:让两张表产生一个对应关系,保证主从表的引用完整性
外键类型应与主表主键类型一致;先添加主表数据;先删除从表数据。
创建表时,[constraint] [外键约束名] foreign key(外键字段名) references 主表名(主键字段名)
创建表时不指定,通过DDL设置:alter table 从表 add [constraint] [外键约束名] foreign key(外键字段名) references 主表(主键字段名)
删除外键:alter table 从表 drop foreign key 外键约束名
外键约束
特点:用来指定某一列的默认值
创建表时,字段名 字段类型 default 默认值
默认值约束
常见约束
二、SQL约束
交叉查询,得到两个表的数据的乘积,很多无效结果
可以通过添加where条件,过滤出有效数据
笛卡尔积
特点:通过指定的条件去匹配两张表的数据,匹配上就显示,匹配不上就不显示
select 字段名 from 左表,右表 where 连接条件;
隐式内连接
select 字段名 from 左表 [inner] join 右表 on 条件;
显式内连接
内连接
特点:以左表为基准,匹配右表数据,匹配的上就显示,匹配不上,左表数据正常显示,右表显示为null
select 字段名 from 左表 left [outer] join 右表 on 条件;
左外连接
特点:以右表为基准,匹配左表数据,匹配的上就显示,匹配不上,右表数据正常显示,左表显示为null
select 字段名 from 左表 right [outer] join 右表 on 条件;
右外连接
外连接
插入图片
三、多表查询
MySQL核心查询
0 条评论
回复 删除
下一页