• MySQL修炼之路二


    1. 表字段的操作

      1. 语法: alter table 表名 执行动作;
      2. 添加字段(add)
        alter table 表名 add 字段名 数据类型;
        alter table 表名 add 字段名 数据类型 first;
        alter table 表名 add 字段名 数据类型 after 字段名;
      3. 删除字段(drop)
        alter table 表名 drop 字段名;
      4. 修改数据类型(modify)
        alter table 表名 modify 字段名 新数据类型;
      5. 表重命名
        alter table 表名 rename 新表名;
      6. 练习
        1. 创建库 studb2
          create database studb2;
        2. 在库中创建表 t1, 字段有3个:name, age, phnumber
          use studb2;
          create table t1(
          name char(15),
          age tinyint unsigned,
          phnumber int);
        3. 查看表结构
          desc t1;
        4. 在表中第一列添加一个id 字段
          alter table t1 add id int first;
        5. 把 phnumber 的数据类型改为 bigint
          alter table t1 modify phnumber bigint;
        6. 在表中最后一列添加一个字段 address
          alter table t1 add address char(100);
        7. 删除表中的 age 字段
          alter table t1 drop age;
        8. 查看表结构
          desc t1;

    2. 表记录管理

      1. 删除表记录
        1. delete from 表名 where 条件;
        2. 注意
          delete 语句后如果不加where条件,所有记录全部清空
      2. 更新表记录
        1. update 表名 set 字段1=值1,字段2=值2,... where 条件;
        2.注意
          必须加where条件

      3. 练习
        1. 查找所有蜀国人的信息
          select * from hero where country='蜀国';
        2. 查找所有女英雄的姓名、性别和国家
          select name,sex,country from hero where sex='女';
        3. 把id位2的记录改为典韦,性别男,国家魏国
          update hero set name='典韦', sex='男', country='魏国' where id=2;
        4. 删除所有蜀国英雄
          delete from hero where country = '蜀国';
        5. 把貂蝉的国籍改为魏国
          update hero set country='魏国' where name='貂蝉';
        6. 删除所有表记录
          delete from hero;

    3. 运算符操作

      1. 数值比较/字符比较
        1. 数值比较 : = != > >= < <=
        2. 字符比较 : = !=
        3 练习
          1. 查找攻击力高于150的英雄的名字和攻击值
            select name,gongji from sanguo where gongji > 150;
          2. 将赵云的攻击力设置位360,防御力设置位68
            update sanguo set gongji=360, fangyu=68 where name='赵云';

      2. 逻辑比较
        1. and(两个或多个条件同时成立)
        2. or(任意一个条件成立即可)
        3. 练习
          1. 找出攻击值高于200的蜀国英雄的名字、攻击力
            select name,gongji from sanguo where gongji > 200 and country='蜀国';
            select name as n, gongji as g from sanguo where gongji > 200 and country='蜀国';
          2. 将吴国英雄中攻击值位110的英雄的攻击值改为100,防御力改为60
            update sanguo set gongji=100, fangyu=60 where country='吴国' and gongji=110;
          3. 查找蜀国和魏国的英雄信息
            select * from sanguo where country='蜀国' or country='魏国';

      3. 范围内比较
        1. between 值1 and 值2
        2. where 字段名 in(值1, 值2, ...)
        3. where 字段名 not in(值1, 值2, ...)

        4. 练习
          1. 查找攻击值100-200的蜀国英雄信息
            select * from sanguo where gongji between 100 and 200 and country='蜀国';
          2. 找到蜀国和吴国以外的国家的女英雄信息
            select * from sanguo where country not in('蜀国', '吴国') and sex='女';
          3. 找到id 位1、3或5的蜀国英雄和貂蝉的信息
            select * from sanguo where (id in(1,3,5) and country='蜀国') or name='貂蝉';

      4. 匹配空、非空
        1. 空:where name is null
        2. 非空:where name is not null

        3. 示例:
          1. 姓名位NULL值的蜀国女英雄
            select * from sanguo
            where name is null and country='蜀国' and sex = '女';
          2. 姓名位“”的英雄信息
            select * from sanguo where name="";
        4. 注意
          1. NULL:空值,只能用is 或者 is not 去匹配
          2. "" :空字符串,用 = 或者 != 去匹配

      5. 模糊比较
        1. where 字段名 like 表达式
        2. 表达式
          1. _: 匹配单个字符
          2. %:匹配0到多个字符

        3. 示例
          select name from sanguo where name like "_%_";
          select name from sanguo where name like "%";
          # NULL 不会被统计,只能用is、is not 去匹配
          select name from sanguo where name like "___";
          select name from sanguo where name like "赵%";

    4. SQL查询

      1. 总结
        3.select ... 聚合函数 from 表名
        1. where ...
        2. group by ...
        4. having ...
        5. order by ...
        6. limit ...;

      2. order by
        1. 给查询结果进行排序
        2. ... order by 字段名 升序/降序
        3. 升序:ASC
         降序:DESC

        4. 示例
          1. 将英雄按防御值从高到低排序
            select * from sanguo order by fangyu desc;

          2. 将蜀国英雄按攻击值从高到低排序
            select * from sanguo order by gongji desc;

          3. 将魏蜀两国英雄中名字为三个字的按防御值升序排列
            select * from sanguo where country in('魏国', '蜀国') and name like '___' order by fangyu;

      3. limit(永远放在SQL语句的最后写)
        1. 作用:限制显示查询记录的个数
        2. 用法
          1. limit n -> 显示n条记录
          2. limit m, n
            m 表示 从第m+1条记录开始显示,显示 n 条
            limit 2, 3 : 第 3、4、5 三条记录

        3. 示例
          1. 在蜀国英雄中,查找防御值倒数第二名至倒数第四名的英雄的记录
            select * from sanguo
            where country='蜀国'
            order by fangyu asc
            limit 1, 3;

          2. 在蜀国英雄中,查找攻击值前3名且名字不为 NULL的英雄的姓名、攻击值和国家
            select name,gongji,country from sanguo
            where country="蜀国" and name is not null
            order by gongji desc
            limit 3;

        4. 分页
          每页显示5条记录,显示第4页的内容

          第1页: limit 0,5 # 1 2 3 4 5
          第2页: limit (2-1)*5,5 # 6 7 8 9 10
          第3页: limit (3-1)*5,5 # 11 12 13 14 15
          第4页; limit (4-1)*5,5 # 16 17 18 19 20
          .....
          每页显示n条记录,显示第m页:limit (m-1)*n, n

      4. 聚合函数
        1. 分类
          avg(字段名) : 求该字段平均值
          sum(字段名): 求和
          max(字段名):求最大值
          min(字段名): 求最小值
          count(字段名): 统计该字段记录的个数

        2. 示例
          1. 攻击最强值是多少
            select avg(gongji) from MOSHOU.sanguo;
            select avg(gongji) as best from MOSHOU.sanguo;

            select max(gongji) from MOSHOU.sanguo;

          2. 统计id、name两个字段分别有几条记录
            select count(id), count(name) from sanguo;
            ## 空值 NULL 不会被统计

          3. 计算蜀国英雄的总攻击力
            select sum(gongji) from MOSHOU.sanguo where country='蜀国';
          4. 统计蜀国英雄中攻击值大于200的英雄的数量
            select count(*) from MOSHOU.sanguo where country='蜀国' and gongji > 200;

  • 相关阅读:
    ELASTIC 动态修改配置API
    ELASTIC API
    ELASTIC索引监控脚本
    java并发多线程纪要
    Git 基础
    Linux 权限规划ACL
    Linux账号管理(二)
    Linux账号管理(一)
    Linux 备份工具dump
    Linux 文件压缩、打包
  • 原文地址:https://www.cnblogs.com/zhangchenchuan/p/11703603.html
Copyright © 2020-2023  润新知