查询语法如下:

select...

from...

where...

group by...

(having)...

order by...;

顺序是from (从指定表中) where (具体条件) group by (分组依据) having (附加条件) select (查询) order by (结果排序)

单行处理函数主要包括:lower, upper, substr, length, trim, str_to_date, date_format, format, round, rand(), ifnull, concat

分组函数主要包括:sum, max, min, avg, count

例子:

来源于动力节点的例子,数据库文件是bjpowernode.sql,在官网就能下载到。

// 连接MySQL(首先确保MySQL服务已经运行,可以使用>net start MySQL来打开MySQL服务,也可以直接在服务中开启)
>mysql -u root(角色) -pXXXX (密码)  // 连接MySQL
>mysql -h (ip address) -P (port) -u root -pXXXX // 连接到远程MySQL
 
// 创建名为testdemo的数据库
mysql> create database testdemo;
 
// 查看MySQL的版本
mysql> select version();
 
// 进入名为testdemo的数据库
mysql> use testdemo;
 
// 将指定地址的SQL脚本文件导入到testdemo数据库,注意地址路径中不应包含中文
mysql> source C:\Users\Larissa\Desktop\bjpowernode.sql;
 
// 显示testdemo数据库中的表
mysql> show tables;
 
// 描述名为dept的表
mysql> desc dept;
 
// 从名为dept的表中查询全部数据
mysql> select * from dept;
 
// 从名为dept的表中查询deptno字段的数据
mysql> select deptno from dept;
 
// 从dept表中查询字段名为deptno的数据,并将deptno命名为Number,可以使用as或空格
mysql> select deptno as Number from dept;
mysql> select deptno Number from dept;
 
// 一条SQL语句可以查询多个字段,从dept表中查询字段名为deptno和dname的数据,并分别命名为Number和Name
mysql> select deptno as Number, dname as Name from dept;
 
// 从emp表中查询sal字段,并将sal数据乘以1.1,结果命名为newsal。查询可以进行数学运算
mysql> select sal*1.1 as newsal from emp;
 
// 条件查询,从emp表中查询sal大于2000的job和sal数据,并按照sal升序排列
mysal> select job,sal from emp where sal>2000 order by sal;
 
// 从emp表中查询sal小于3000的job,sal数据,并按照sal降序排列
mysql> select job,sal from emp where sal<3000 order by sal desc;
 
// 从emp表中查询sal大于3000同时job为MANAGER的ename,sal数据
mysql> select ename,sal from emp where sal>3000 and job='MANAGER';
 
// 从emp表中查询job为MANAGER或者为SALESMAN的ename,sal数据。注意in表示集合而不是区间
mysql> select ename, sal from emp where job='MANAGER' or job='SALESMAN';
mysql> select ename, sal from emp where job in ('MANAGER','SALESMAN');
// 注意这里如果使用not in的话,后面的集合中不应该包含null。
 
// 从emp表中查询sal大于1500同时job为MANAGER或者SALESMAN的ename,job,sal数据。注意and优先级高于or,不确定时请果断使用括号。
mysql> select ename,job,sal from emp where sal>1500 and (job='MANAGER' or job='SALMESMAN');
 
// 从emp表中查询comm是空的ename,sal,comm数据。注意null要用is,is not,而不能用=或者!=
mysql> select ename,sal,comm from emp where comm is null;
mysql> select ename,sal,comm from emp where comm is not null;
 
// 模糊查询,从emp表中查询ename最后一位是k的ename数据。%匹配任意多个字符
mysql> select ename from emp where ename like '%k';
 
// 从emp表中查询ename第二个字符为m的ename数据,_匹配一个字符。
mysql> select ename from emp where ename like '_m%';
 
// 从emp表中查询ename,sal数据并按照sal升序和ename升序排序,这意味着当两个sal相同时,将按照ename排序。
mysql> select ename,sal from emp order by sal asc, ename asc;
 
// 从emp表中查询sal在1250至3000之间的ename,sal数据并且按sal降序排列
mysql> select ename, sal from emp where sal between 1250 and 3000 order by sal desc;
 
// 使用处理函数对查询结果进行处理,从emp中查找ename,并将结果小写。
mysql> select lower(ename) from emp;
 
// 从emp表中查询ename,并截取从1(第一位不是0)开始,长度为2的字符串,然后转小写
mysql> select lower(substr(ename,1,2)) from emp;
 
// 从emp表中查名字首字母为s的员工名字
mysql> select ename from emp where substr(ename,1,1)='s';
 
// 从emp表中找到名字长度大于5个字符的员工名字
mysql> select ename from emp where length(ename)>5;
 
// 随机生成100以内的随机数
mysql> select round(rand()*100) from dept;
 
// 从emp表中查询ename,并计算加上comm的年薪。这里重点是使用ifnull可以将null转换为指定的值,这里是0
mysql> select ename,(sal+ifnull(comm,0))*12 as yearsal from emp;
 
// case when then when then else end的用法
mysql> select ename,job,sal as oldsal,
    -> (case job when 'MANAGER' then sal*1.1 when 'SALESMAN' then sal*1.5 else sal end) as newsal
    -> from emp;
 
// 分组函数的用法,注意,一定要先分组才能用分组函数,这意味着where后面不能用分组函数
mysql> select max(sal),sum(sal),avg(sal),count(ename) from emp;
mysql> select deptno,job,max(sal) from emp group by deptno,job;
 
// 过滤条件尽量用where实现
mysql> select deptno,max(sal) from emp where sal>3000 group by deptno;
 
// 实在无法用where实现的,用group by + having
mysql> select deptno,avg(sal) from emp where job!='MANAGER' group by job
    -> having avg(sal)>1500
    -> order by avg(sal) desc;
 
// 使用distinct关键字去除查询结果中的重复
mysql> select distinct job from emp;
mysql> select distinct job, deptno from emp;

MySQL常用查询命令(单表查询)的更多相关文章

  1. MySQL数据库篇之单表查询

    主要内容: 一.单表查询的语法 二.关键字的执行优先级 三.简单查询 四.where约束 五.分组查询 group by 六.having过滤 七.查询排序 order by 八.限制查询的记录数 l ...

  2. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  3. SQL基本查询_单表查询(实验二)

    SQL基本查询_单表查询(实验二) 查询目标表结构及数据 emp empno ename job hiedate sal comn deptno 1007 马明 内勤 1992-6-12 4000 2 ...

  4. SQL基础--查询之一--单表查询

    SQL基础--查询之一--单表查询

  5. mysql四-1:单表查询

    一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二.关键 ...

  6. mysql——查询语句——单表查询——(概念)

    一.基本查询语句 select的基本语法格式如下: select 属性列表 from 表名和视图列表 [ where 条件表达式1 ] [ group by 属性名1 [ having 条件表达式2 ...

  7. MySQL数据查询之单表查询

    单表查询 简单查询 - 创建表 DROP TABLE IF EXISTS `person`; CREATE TABLE `person` ( `id` ) NOT NULL AUTO_INCREMEN ...

  8. MySql(六)单表查询

    十.单表查询 一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制 ...

  9. (七)MySQL数据操作DQL:单表查询1

    (1)单表查询 1)环境准备 mysql> CREATE TABLE company.employee5( id int primary key AUTO_INCREMENT not null, ...

  10. MySQL简单查询和单表查询

    MySQL记录操作 概览 MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用 ...

随机推荐

  1. QT之事件机制

    MyPushButton.h: #ifndef MYPUSHBUTTON_H #define MYPUSHBUTTON_H #include<QPushButton> #include&l ...

  2. gin中的多模板和模板继承的用法

    1. 简单用法 package main import ( "github.com/gin-contrib/multitemplate" "github.com/gin- ...

  3. 访问静态资源有问题(配置url-pattern 用"/")(两种静态资源处理)

    发起的请求是由哪些服务器程序处理的 http://localhost:8080/ch05_url_pattern/index.jsp: tomcat(jsp会转为servlet) http://loc ...

  4. AOP-底层原理

    AOP(底层原理) 1,AOP底层使用动态代理 (1)有两种情况动态代理 第一种 有接口情况,使用JDK动态代理 *创建接口实现类代理对象,增强类的方法 第二种 无接口情况,使用CGLIB动态代理 * ...

  5. CKKS Part5: CKKS的重缩放

    本文翻译于 CKKS EXPLAINED, PART 5: RESCALING,主要介绍CKKS方案中最重要的技术- rescaling,重缩放技术 介绍 在CKKS的前一篇文章 CKKS Part4 ...

  6. 社交网络分析的 R 基础:(三)向量、矩阵与列表

    在第二章介绍了 R 语言中的基本数据类型,本章会将其组装起来,构成特殊的数据结构,即向量.矩阵与列表.这些数据结构在社交网络分析中极其重要,本质上对图的分析,就是对邻接矩阵的分析,而矩阵又是由若干个向 ...

  7. 掌握这些常用Linux命令,一起提升工作效率

    开始上班了,新一年的奋斗的之路启程了,要继续[奔赴山海,奔赴热爱]. 汪国真在<热爱生命>这首诗中写到:既然选择了远方,便只顾风雨兼程.技术上还是持续精进和学习,远方虽远,要迈开脚步,一步 ...

  8. ABC209 E Shiritori

    考虑对这个问题进行转化: 显然我们只关注每个串前三个棋子和后三个棋子,并且根据题目的特性,我们可以将任意的三个字符看作点,将一个字符串看作连接两个点的边,这样我们得到了一张点数为 \(52 ^ 3\) ...

  9. CSS样式表的书写位置

    行内式(内联样式) 是通过标签的style属性来设置元素的样式,其基本语法格式如下: <标签名 style="属性1:属性值1; 属性2:属性值2; 属性3:属性值3;"&g ...

  10. 【转】Mysql相关子查询&&MySQL获取分组后的TOP N记录

    https://www.cnblogs.com/Yiran583/p/6743870.html select * from test1 a where 2 > (select count(*) ...