Mysql基本查询语句及方法

在mysql中 查询一张表中的记录的时候

  书写顺序是: select * from 表名 where name=‘long‘ and age =‘18‘;

但是mysql中的执行顺序是

  from  后面加表名 确定你是那张表

  where 后面是条件 通过条件 来筛选这表的内容

  select 后面是 你where筛选出的数据中的 某些字段    * 是所有字段

  # 查询语句执行的结果也是一张表,可以看成虚拟表

我们创建一张 emp的员工表

当我们的字段特别多的时候  结果的排版可能会出现凌乱现象 我们可以在查询语句末尾 加上\G来规范查询结果

select * from 表名\G;

当我们遇到一个需求时 怎么来分析? 例如

1.查询id大于等于3小于等于6的数据

   给你展示下实际操作  1.先确定 来自哪一张表  from emp   2. 筛选条件 where id >= 3 and id <=6;   3.select  *

   select * from emp where id >= 3 and id <= 6;
    select * from emp where id between 3 and 6;  between 等价于id >= 3 and id <= 6

2.查询薪资是20000或者18000或者17000的数据

    select id,name from emp where salary = 20000 or salary = 18000 or salary = 17000;
    select id,name from emp where salary in (20000,18000,17000);

3.查询员工姓名中包含o字母的员工姓名和薪资

模糊匹配  % 匹配多个任意字符  _ 匹配 一个任意字符

select name,salary from emp where name like ‘%o%‘;

4.查询员工姓名是由四个字符组成的员工姓名与其薪资 

select name, salary from emp where length(name) =4;
select name ,salary from emp where name like "____"

5.查询id小于3或者大于6的数据

select * from emp where id<3 or id >6;
select * from emp where id not between 3 and 6; 

6.查询薪资不在20000,18000,17000范围的数据

select * from emp  where  salary not in (20000,17000,18000);

7.查询岗位描述为空的员工名与岗位名   针对null判断的时候只能用is 不能用=

select name ,post from emp where post_comment is null;

MySQL对大小写不敏感  平时写的时候大小写都可以

group by 分组

select * from emp group by post;  # 按照部门分组

分组后 应该做到 最小单位是 组 ,而不应该是 展示 组内的单个数据信息

向上面那样 他会直接给你 打印出来而没有给你报错 说明你的严格模没有设置

show variables ‘%mode%‘; # 找到严格模式所在的地方

set session # 临时有效
set global  # 永久有效

set global sql_mode= ‘strict_trans_tables‘ # 设置字符类型的自动截取
set global sql_mode="strict_trans_tables,pad_char_to_full_length" #char 取出时 取消自动去空格

set global sql_mode=‘strict_trans_tables,only_full_group_by‘ # 设置分组后   最小单位是组     

此时你如果还使用 select name from emp group by post; 就会报错 #ERROR 1055 (42000): ‘day37.emp.name‘ isn‘t in GROUP BY

selest 后应该接的是 你分组的字段名

聚合函数(max, min ,sum,count, avg)

mysql中 分组之后 只能拿到分组的字段信息 无法直接 获取其他字段的信息 但是 你可以通过其他方法来间接的获取(聚合函数)

获取每个部门的最高工资

   需求是 每一个部门 说明有分组 所以 先分组 在使用聚合函数来取值

select post ,max(salary) from emp group by post;

每个部门的最低工资

select post,min(salary) from emp group by post;取的时候还可以给字段取别名 select post,min(salary) as ‘最小‘ from emp group by post;

每个部门的平均工资

select post,avg(salary) from emp group by post;

每个部门的工资总和

select post,sum(salary) from emp group by post;

每个部门的人数

    select post,count(age) from emp group by post;
    select post,count(salary) from emp group by post;
    select post,count(id) from emp group by post;
    select post,count(post_comment) from emp group by post;

在统计分组内个数的时候 填写任意非空字段都可以完成计数,推荐使用能够唯一标识数据的字段  比如id字段

      聚合函数会自动将每一个分组内的单个数据做想要的计算,无需你考虑

group_concat

查询分组之后的部门名称和每个部门下所有的学生姓

select post, group_concat(name) from emp group by post;

select post,group_concat(‘hahha‘,name) from emp group by post;

还可以拼接

group_concat()能够拿到分组后每一个数据指定字段(可以是多个)对应的值

原文地址:https://www.cnblogs.com/lddragon/p/11390048.html

时间: 2024-09-29 10:35:24

Mysql基本查询语句及方法的相关文章

23个MySQL常用查询语句

一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,=< 二查询字符串 SELECT * FROM tb_stu  WHERE sname  =  '小刘' SELECT * FROM tb_stu  WHERE sname like '刘%' SELECT * FROM tb_stu  WHERE sname like '%程序员' SELECT * F

MySQL嵌套查询语句

MySQL嵌套查询语句统计每个省的人口最多的与最少的城市 SELECT District,NAME,Population FROM city WHERE Population IN (SELECT MIN(Population) FROM city WHERE city.CountryCode='CHN' GROUP BY city.District) UNION SELECT District,NAME,Population FROM city WHERE Population IN (SEL

SQL查询语句优化方法

以下是网上流传比较广泛的30种SQL查询语句优化方法: 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查

mysql常用查询语句

基本语句 1.mysql   -u   root   -p                            数据库连接 2.create   databases  数据库名             创建数据库 3.drop   database   数据库名                 删除数据库 查询语句 4.SELECT * FROM 表名称                    查询表中所有数据 5.SELECT idcard,name FROM student        

Mysql 数据查询语句中between and 是包含边界值的

MySQL的sql语句中可以使用between来限定一个数据的范围,例如: select * from user where userId between 5 and 7; 查询userId为5.6,7的user,userId范围是包含边界值的,也等同如下查询: select * from user where userId >= 5 and userId <= 7; 很多地方都提到between是给定的范围是大于等第一值,小于第二个值,其实这是不对的.此前我一直也是这么认为,通过实验,结论是

常用的MySQL复杂查询语句写法 --非原创(原创作者:菠萝大象)

上一篇讲了一些MySQL比较常用的SQL语句写法,这篇再记录下,平时可能会用到的复杂点的查询语句的写法.    复杂查询语句一般是在报表查询中比较常见,大象之前在“使用jxl生成复杂报表的分析与设计(二)”中就讲过,处理复杂报表,首先需要搞清楚它的业务关系,这个非常关键,如果你连这些业务都没弄明白就开始动手做,最后肯定是会有问题的.    搞清楚业务关系后,就可以对报表进行分解,看看到底要准备什么数据,按照这些数据加上对应的业务关系来写SQL语句,一步一步做下来,就可以实现所需要的功能了.大家应

【MySQL】查询语句优化 &#132411;

原文: http://blog.gqylpy.com/gqy/389 ???????MySQL的性能优化包罗甚广:索引优化.查询优化.查询缓存.服务器设置优化.操作系统及硬件优化.应用层优化(web服务器.缓存)等等.本文提到的优化技巧更适用于开发人员,都是从网络上收集和自己整理的,主要是查询语句上面的优化,其它层面的优化技巧在此不做记录. 整理如下 合理创建索引 count 的优化 避免使用不兼容的数据类型 索引字段上进行运算会使索引失效 尽量避免使用 !=.is null.is not nu

MySQL简单查询语句练习

数据查询语法(DQL) DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端. 语法: SELECT selection_list /*要查询的列名称*/ FROM table_list /*要查询的表名称*/ WHERE condition /*行条件*/ GROUP BY grouping_columns /*对结果分组*/ HAVING condition /*分组后的行条件*/ ORDER BY sorting_columns /*对结果分组*/

MySQL 常用30种SQL查询语句优化方法

1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描.如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from