• mysql 复习


    mysql特点
    /*
    1.查询列表可以是: 表中的字段, 常量值, 表达式, 函数
    2.查询得结果是一个虚拟的表格
    */

    # 查询单个字段
    select last_name from employees;

    # 查询多个字段
    select last_name, first_name, email from employees;

    # select * from employees;

    `` 用于区分当前查询的是字段还是关键字

    # 查询常量值
    select 100;
    select 'john';

    # 表达式
    select 100%98;

    # 查询函数
    select version();

    # 起别名
    select verison() as version; # 方式一
    select version() version; # 方式二

    # 特殊情况
    select salary `out put` from employees;
    select salary "out put" from employees; # 推荐

    # 去重
    distinct
    selelct distinct name from employees;

    # +号的作用 运算符
    /*
    mysql中的+号只有一个作用
    运算符
    如果两个操作数都是数值型, 则做加法运算
    其中一方为字符型, 试图将字符型数值装换成数值型, 如果转换成功, 继续做加法运算
    如果失败, 将字符转换成0, 接着做加法运算
    只要一方为null, 结果就是null

    */
    select
    last_name + first_name
    as 姓名
    from employees; 不对

    select 100+90;


    # concat;

    1.条件运算符
    > < >= <= != <>

    2.逻辑运算符
    连接条件表达式
    && || !
    and 和 && : 两个都是true, true,false
    || or

    3.模糊查询
    like
    between and
    in
    is null

    4.安全等于 <=>
    select name froom employees where id <=> null;

    5、SUBSTR
    # 两个参数是解取自当前位置之后的所有字符 select substr("i am a best man", 5);
    # 三个参数是解取自当前位置开始的字符, 长度是第三位置 select substr("i am a best man", 5, 6);

    6、instr
    # 拿到当前字符串返回的位置 select instr("i am a perfect woman", "p");

    7、upper, lower

    8、trim # 去除空余的字符
    select length(trim(" i am woman ")); ltrim, rtrim, trim
    select trim('*' from '*************i am woman***********'); rtrim,ltrim 不可以

    9、lpad(字符, 指定长度, 填充字符) 中间的数字指的是填充成多长的字符
    select lpad("i am", 2, "**");
    rpad

    10.replace select replace("周杰伦爱昆凌", "爱", "无可救药的爱");


    二、数学函数
    1、round() 四舍五入 select round(-4.2); -4
    select round(2.345, 10); 小数点后面取几位
    2、ceil 向上取整,大于等于该参数的最小整数
    select ceil(2.1);
    3、floor 向下取整
    select floor(-2.9); -3
    select floor(3.09); 3

    4、truncate 截断
    select truncate(1.65,4);
    和round的区别是round会四舍五入,他只是截断

    5、mod 取余
    mod(a,b) a-a/b*b
    select mod(10,3); 被除数如果是正数, 就是正数, 被除数是负数, 就是负数

    三、日期函数

    1、now() 返回当前系统日期+时间;
    mysql> select now();
    +---------------------+
    | now() |
    +---------------------+
    | 2020-04-21 20:56:26 |
    +---------------------+
    2、只返回日期, 不包含时间
    curdate
    mysql> select curdate();
    +------------+
    | curdate() |
    +------------+
    | 2020-04-21 |
    3、返回当前时间, 不包含日期
    curtime()
    mysql> select curtime();
    +-----------+
    | curtime() |
    +-----------+
    | 20:58:45 |
    +-----------+
    4、可以获取指定的部分,年,月,日,小时,分钟,秒
    mysql> select year(now());
    +-------------+
    | year(now()) |
    +-------------+
    | 2020 |
    +-------------+
    1 row in set (0.00 sec)

    mysql> select year("1994-01-27");
    +--------------------+
    | year("1994-01-27") |
    +--------------------+
    | 1994 |

    select monthname(now()); apari
    select dayname(now()); thuesday

    5、日期函数
    str_to_date:将日期格式的字符转换程指定格式的日期

    mysql> select str_to_date("01-23-2020", "%m-%d-%Y");
    +---------------------------------------+
    | str_to_date("01-23-2020", "%m-%d-%Y") |
    +---------------------------------------+
    | 2020-01-23 |
    +---------------------------------------+

    date_format(); 将日期转换成字符

    mysql> select date_format(now(), "%Y_%m-%d");
    +--------------------------------+
    | date_format(now(), "%Y_%m-%d") |
    +--------------------------------+
    | 2020_04-21 |
    +--------------------------------+
    1 row in set (0.00 sec)

    mysql> select now();
    +---------------------+
    | now() |
    +---------------------+
    | 2020-04-21 21:08:19 |
    +---------------------+
    1 row in set (0.00 sec)


    四、其他函数
    select version();
    select database();
    select user();

    五、流程控制函数
    if 函数 ; if else
    mysql> select if(10>5, "true", "false");
    +---------------------------+
    | if(10>5, "true", "false") |
    +---------------------------+
    | true |
    +---------------------------+
    1 row in set (0.00 sec)

    mysql> select if(10<5, "true", "false");
    +---------------------------+
    | if(10<5, "true", "false") |
    +---------------------------+
    | false |
    +---------------------------+

    case ...when 适用于等于的情况
    使用一:switch case效果
    switch (变量或者表达式) {
    case 常量1:语句1;break
    ...
    default;语句n;break
    }
    mysql中
    case 要判断的字段或表达式
    when 常量1 then 要显示的值1/语句1
    when 常量2 then 要显示的值2/语句2
    ...
    else 要显示的值n或者语句n;
    end

    使用二 适用于不等于的情况
    case
    when 条件1 then 要显示的值或者语句1
    when 条件2 then 要显示的值2或者语句2
    ...
    else 要显示的值n或者语句n
    end


    常见函数总结
    字符函数
    1.length
    2.concat
    3.substr
    3.instr
    4.trim
    5.upper
    6.lower
    7.lpad
    8.rpad
    9.replace
    数学函数
    1.round
    2.truncate
    3.floor
    4.ceil
    5.mod
    日期函数
    1.now
    2.curdate
    3.curtime
    4.year
    5.month
    6.monthname
    7.day
    8.hour
    9.minute
    10.second
    11.str_to_date
    12.date_format

    其他函数
    1.version
    2.user
    3.database

    控制函数
    1.if
    2.case ...when

    count() 详细介绍
    select count(salary) from employees;
    select count(1) from employees;
    select count(*) from employees;

    效率:
    MYISAM ocunt(*)
    INNODB 存储引擎下, count(*) 和count(1) 差不多, 比count(字段) 高

    # 和分组函数一同查询的字段有限制
    select avg(salary), last_name from employees; # 不可以
    **一同使用的字段要求是group by 后的字段

    datediff() 函数, 接受两个参数, 都是日期, 返回的是这两个日期相差的天数


    # 分组查询 group by
    按照表达式或者函数分组
    select count(*)
    from employees
    group by length(last_name);
    按照多个字段分组

    连表查询
    内连接 sql92全部支持
    等值连接
    非等值连接
    select
    salary,
    grade_level
    from
    employees e,
    job_grade j
    where
    e.salary
    between j.lowest_sal and j.highest_sal
    自连接
    同一张表含有多个可以连接在一起的字段
    select
    e.last_name,
    e.employid,
    m.last_name,
    m.employid
    from
    employees e,
    employees m
    where
    e.employid = m.id



    外连接
    交叉连接

  • 相关阅读:
    opengl学习
    同步、异步、多线程与事件型综述
    Javascript异步编程的4种方法
    ASP.NET(C#) GridView (编辑、删除、更新、取消)
    浅析五大ASP.NET数据控件
    用 Eclipse 开发 Android 应用程序
    [C# 网络编程系列]专题十:实现简单的邮件收发器
    [C# 网络编程系列]专题九:实现类似QQ的即时通信程序
    [C# 网络编程系列]专题七:UDP编程补充——UDP广播程序的实现
    [C# 网络编程系列]专题六:UDP编程
  • 原文地址:https://www.cnblogs.com/mcc61/p/12756144.html
Copyright © 2020-2023  润新知