Mysql 关键字的优先级 分组 多表联查

查看模式

select @@global.sql_mode;

关键字的优先级

  1. from 来自
  2. where 条件
  3. group by 分组
  4. having 筛选
  5. select 查询
  6. distinct 去重
  7. order by 排序
  8. limit 限制条数

表单查询语法

select  字段,字段  from  表名  where  条件  group by  分组  having  筛选  order by 排序  limit 限制

where

  • 比较运算 > < >= <= <> !=
  • 值在 80-100 之间 包含 80 100
    between  80 and 100;
  • 值 是 80,90,100 的
    in(80,90,100)
    相反的
    not in(80,90,100)
  • 模糊查询
    like '张%'    % 通配符  包含一个或多个  //  查询姓张的人
    like  '程咬_'  _ 包含一个字符

group by 分组

  • 经过分组之后只能查看当前字段,如果想查看组内信息需要借助于聚合函数
  • 聚合函数
    max()  求最大值
    min()  求最小值
    avg()  求平均值
    sum()  求和
    count()  求总个数
  • 拼接分组后的内容

    group_concat(name)

having 筛选

  • 用在 group by 之后

order by 排序

order by age ASC;  默认升序
order by age desc;  降序排列

limit

  • 限制查询次数

    limit  0, 5 ;  0 表示起始索引  5 表示显示条数 

多表查询

  • 交叉连接

    select * from table_1,table_2;  生成笛卡尔积
  • 内连接
    只获取匹配的数据
    select 表名.列名, 表名.列名 from 表1 inner join 表2 on 条件(表1.列 = 表2.列);
  • 左连接
    只显示左表所有的记录
    select 表名.列名, 表名.列名 from 表1 left join 表2 on 条件(表1.列 = 表2.列);
  • 右链接
    只显示 右 表所有的记录
    select 表名.列名, 表名.列名 from 表1 right join 表2 on 条件(表1.列 = 表2.列);
  • 全外连接
    左连接 union  右链接

子查询

in  ; not in ; any ; all; exists; not exists;  

原文地址:https://www.cnblogs.com/zhang-zi-yi/p/10749256.html

时间: 2024-10-20 13:05:02

Mysql 关键字的优先级 分组 多表联查的相关文章

MySQL数据库 外键,级联, 修改表的操作

1.外键: 用来建立两张表之间的关系 - 一对多 - 多对多 - 一对一 研究表与表之间的关系: 1.定义一张 员工部门表 id, name, gender, dep_name, dep_desc - 将所有数据存放在一张表中的弊端: 1.结构不清晰 ---> 不致命 2.浪费空间 ---> 不致命 3.可扩展性极差 ---> 不可忽视的弊端 - 类似于将所有python代码存放在一个py文件中,强耦合到一起了----> 解耦合 ----> 拆分表 - 拆分表解决以上问题.

python-day43--单表查询之关键字执行优先级(重点)

一.关键字的执行优先级(重点) 1.关键字执行优先级 from where #约束条件(在数据产生之前执行) group by #分组 没有分组则默认一组 按照select后的字段取得一张新的虚拟表,有聚合函数则执行聚合函数 having #过滤条件 ,having 是根据内存中的虚拟表 过滤的 :出现having的时候肯定是有group by,不然没意义 distinct #去重 #在select 之后执行 忽略先后顺序 order by #排序 #在select 之后执行 忽略先后顺序 li

MySQL 基础之 单表、多表联查

目录 使用和不使用not null 的区别: 不使用: 查询时用'name is null' 作为条件 使用:查询时用'name='' '作为查询条件 单表操作: 单表查询的语法: 分组:group by having: order by: order by 字段名 asc(升序)/desc(降序) limit 分页: limit offset, size 多表操作 外键: 占用空间少,方便修改数据 一对多: 多对多: 一对一: 多表联查: 使用和不使用not null 的区别: 不使用: 查询

MSSQL 4表联查,子查询,函数统计,分组条件查询综合应用实例

1 SELECT 2 [UserName] 3 ,[Yhxm] 4 ,[Qx] 5 ,[Phone] 6 ,[Number] = COUNT([UserName]) 7 FROM 8 (SELECT 9 [UserName] = A.[username] 10 ,[Yhxm] = B.[xm] 11 ,[Qx] = D.[P_Power] 12 ,[Phone] = B.[dh] 13 ,[DayCount] = (SELECT COUNT(*) FROM [Caihuashun_FuJian_

MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作)

MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作): a.创建2张表 create table userinfo(nid int not null auto_increment primary key, name varchar(10), age int, part_nid int )engine=innodb default charset=utf8; create table part( nid int not null auto_in

MySQL常用操作--多表联查

连接是把不同的表的记录连接到一起的最普遍的方法, 一种错误的观念认为由于MySQL的简单性和源代码的开放性使得他不擅长连接. 其实MySQL从一开始就很好的支持连接(SQL92标准), 这种连接语句可以以多种方法来组合表记录. 1. 内连接查询:  最普遍的连接类型, 而且是最均匀的(要求他们构成连接的每一部分的每个表的匹配, 不匹配的行将被排除), 内连接最普遍的例子是相等连接, 也就是连接后的表中的某个字段与每个表中的都相同, 这种情况下, 最后的结果集只包含参加连接的表中与指定字段相符的行

mysql 两表联查分页排序效率优化

数据库中有两张表 t1 存储消息信息 +-----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI |

MySQL数据中分级分组显示数据

前面已经有了SqlServer数据分级分组显示数据了.今天又来做一个MySQL数据库中的分级分组显示,SqlServer中用到了递归,这里为了简单就直接把根的数据显示为0 ,而不用递归了. 在MySQL数据库中创建数据表: CREATE TABLE `categories` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '分类id' , `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_gene

创建MySQL用户 赋予某指定库表的权限 flush privileges才能生效!!!!;

update ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value 建议使用GRANT语句进行授权,语句如下: grant all privileges on *.* to [email protected]'%' identified by "root"; --------------------------------------------------- GRANT SELECT,INSERT,UP