zoukankan      html  css  js  c++  java
  • MySQL常用查询命令(单表查询)

    查询语法如下:

    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,在官网就能下载到。

     
    // 创建名为testdemo的数据库
    mysql> create database testdemo;
     
    // 查看MySQL的版本
    mysql> select version();
     
    // 进入名为testdemo的数据库
    mysql> use testdemo;
     
    // 将指定地址的SQL脚本文件导入到testdemo数据库,注意地址路径中不应包含中文
    mysql> source C:UsersLarissaDesktopjpowernode.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;
  • 相关阅读:
    DB2基本语句操作
    makefile简析与例子
    io多路复用epoll归纳
    Selenium 3----设置元素等待
    Selenium 3----获取断言信息
    Selenium 3----鼠标、键盘操作常用方法
    Selenium 3----WebDriver常用方法
    算法时间复杂度求解
    Selenium 3----控制浏览器操作
    操作系统基础知识学习
  • 原文地址:https://www.cnblogs.com/larissa-0464/p/14907033.html
Copyright © 2011-2022 走看看