数据库之表查询

一.查询语句模板

SELECT [ALL|DISTINCT] <字段1>/<表达式>,<字段2>
                                     [AS] <新字段名>
FROM <表名> [AS] <别名>/子查询语句 [AS] <别名>
[ WHERE <条件> ]
[ GROUP BY <字段> [ HAVING <条件> ] ]
[ ORDER BY <字段> [ ASC|DESC ] ];        
View Code

ALL 与 DISTINCT

distinct去除重复的数据
默认为all不去重
View Code

AS 别名

AS 别名
View Code

表达式

字段类型是数字类型的字段可以进行加减乘除四则运算
View Code

 

二.条件查询

比较谓词
=, >, <, >=, <=, !=, <>, !>, !<; 
字段 = 值;
notnot 字段 = 值
范围谓词
BETWEEN AND, NOT BETWEEN AND 
字段 (not) between 值1 and 值2
集合谓词
IN, NOT IN 
字段 (notin (值1,值2,值3)
字符匹配
LIKE, NOT LIKE
%:匹配多个任意字符
_:匹配一个任意字符
字段 (not) like “字符串”
空值谓词
IS NULL, IS NOT NULL 
逻辑谓词
AND, OR, NOT
条件1 and 条件2
regexp正则
用于条件判断,进行字符串匹配
示例:字段 regexp '正则表达式'
#select * from emp where name regexp '^j.*(n|y)$';
View Code

用于条件筛选

三.分组查询

 GROUP BY 与 聚合函数

  • GROUP BY 对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常配合聚合函数使用
  • GROUP BY 分组之后进行条件判断只能使用HAVING
  • 聚集函数
    • max min avg sum count
      • 示例:max (字段)

HAVING短语

  • 输出满足指定条件的组
  • 示例 having 条件

ps:HAVING语句一般配合作用于分组函数之后

四.ORDER BY  排序CONCAT与limit

ORDER BY 排序

对查询结果表按指定列值的升序(asc)或降序(desc)排序,默认升序(sc)
示例:order by 字段 desc
View Code

CONCAT与GROUP_CONCAT

concat在未使用group by 的情况下来进行数据拼接
示例:select concat(字段1,’字符串‘,’字段2‘)
concat在使用group by 后来进行数据拼接
效果与concat相同
View Code

limit

用于限制条数,写在语句最后。
limit只有一个参数时,参数表示展示的条数
limit有两个参数时候,第一个参数表示起始位置,第二个参数表示起始位置之后的展示条数
select * from emp limit 5,5;
View Code

 

五.多表查询

  • 表查询分类
    • 联表查询
    • 子查询
  • 内连接(inner join)
    • 取两张表有对应关系的记录
    • select 表1 inner join 表2 on 表1.字段=表2.字段
  • 左连接(left join)
    • 在内连接的基础上保留左表没有对应关系的记录
    • select 表1 left join 表2 on 表1.字段=表2.字段
  • 右连接(right join)
    • 在内连接的基础上,保留右表没有对应关系的记录
    • select 表1 right join 表2 on 表1.字段=表2.字段
  • 全连接(union)
    • 在内连接的基础上保留左、右面表没有对应关系的的记录(就是左连接加右连接去除重复记录)
    • select 表1 left join 表2 on 表1.字段1=表2.字段1 union select 表1 right join 表2 on 表1.字段=表2.字段
  • 子查询
    • 将一张表的查询结果作为另外一个sql语句的查询条件

 

六.严格模式

使用情况:Mysql使用分组后获取其他字段信息不报错

设置方式

  • show variables like '%mode%'; #模糊匹配 查看sql_mode的值
  • set session  当前窗口有效
  • set global  全局有效
  • set global sql_mode="strict_trans_tables,only_full_group_by";#修改为严格模式

 

posted @ 2019-08-21 19:46  Tri_stone  阅读(261)  评论(0编辑  收藏  举报