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;

MySQL修炼之路二的更多相关文章

  1. MySQL学习之路(二)——数据类型和操作数据表

    数据类型和操作数据表 2.1 MySQL类型之整型 2.2 MySQL数据类型之浮点型 2.3 日期时间型 DATE 1支持时间:1000年1月1日~9999年12月31日 DATETIME 3 支持 ...

  2. MySQL修炼之路四

    1. 外键(foreign key) 1. 定义:让当前表字段的值在另一个表的范围内选择 2. 语法 foreign key(参考字段名) references 主表(被参考字段名) on delet ...

  3. MySQL修炼之路一

    1. MySQL概述 1. 什么是数据库 存储数据的仓库 2. 都有哪些公司在用数据库 金融机构.游戏网站.购物网站.论坛网站 ... ... 3. 提供数据库服务的软件 1. 软件分类 MySQL. ...

  4. MySQL修炼之路五

    1. 存储引擎和锁 1. 存储引擎(处理表的处理器) 1. 基本操作 1. 查看所有存储引擎 mysql>show engines; 2. 查看已有表的存储引擎 mysql>show cr ...

  5. MySQL修炼之路三

    1. SQL查询 1. 执行顺序 3. select ... 聚合函数 from 表名 1. where ... 2. group by ... 4. having ... 5. order by . ...

  6. 微博MySQL优化之路--dockone微信群分享

    微博MySQL优化之路 数据库是所有架构中不可缺少的一环,一旦数据库出现性能问题,那对整个系统都回来带灾难性的后果.并且数据库一旦出现问题,由于数据库天生有状态(分主从)带数据(一般还不小),所以出问 ...

  7. Java工程师修炼之路(校招总结)

    Java工程师修炼之路(校招总结) 前言 在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到几个公司的研发岗offer,包括百度,阿里,腾讯,今日头条,网易, ...

  8. MySQL学习之路(一)——初涉MySQL。

    MySQL学习之路(一) 1.1MySQL的概述 MySQL由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一个开源的关系型数据库管理系统. MySQL分为社区版和企业版. 1 ...

  9. iOS攻城狮修炼之路

    自己总结的学习iOS的笔记,打造一个全面的知识体系,iOS攻城狮修炼之路[持续更新中] iOS学习笔记01-APP相关 iOS学习笔记02-UIScrollView iOS学习笔记03-UITable ...

随机推荐

  1. JavaEE 项目部署方式

    一.手动部署 二.自动部署 “自动化”的具体体现:向版本库提交新的代码后,应用服务器上自动部署,用户或测试人员使用的马上就是最新的应用程序. 搭建上述持续集成环境可以把整个构建.部署过程自动化,很大程 ...

  2. 《Ensemble Methods: Foundations and Algorithms》

    <Ensemble Methods: Foundations and Algorithms>

  3. 洛谷P1706 全排列问题

    题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入输出格式 输入格式: n(1≤n≤9) 输出格式: 由1-n组成的所有不重复的数字序列, ...

  4. Tableau可视化操作

    1.地图显示 1.修改地理角色:“省份” 2.双击省份—绘制地图 3.显示销售额和利润额的情况—销售额(大小)+利润额(颜色) 4.修改显示颜色:两种方式 第一种方式:双击右边利润额图例— 第二种方式 ...

  5. Linux性能优化实战学习笔记:第五十七讲

    一.上节回顾 上一节,我带你一起梳理了常见的性能优化思路,先简单回顾一下.我们可以从系统和应用程序两个角度,来进行性能优化. 从系统的角度来说,主要是对 CPU.内存.网络.磁盘 I/O 以及内核软件 ...

  6. [LeetCode] 892. Surface Area of 3D Shapes 三维物体的表面积

    On a N * N grid, we place some 1 * 1 * 1 cubes. Each value v = grid[i][j] represents a tower of v cu ...

  7. python 获取日期以及时间

    >>> import datetime >>> >>> i = datetime.datetime.now() >>> prin ...

  8. ros脚本断点调试-编写过程可以把过程变量输出到log查看的方法

    /caps-man registration-table :do {:foreach i in=[find interface~"5G"] do={:log info messag ...

  9. java web开发需要注意的地方

    java需要注意的 1.字符串值相等比较 c#用双等号(==)来进行 字符串值相等比较.如下: string a="3"; string b="3"; if(a ...

  10. c#中怎样取得某坐标点的颜色

    // x,y 分别为x轴,y轴坐标 返回System.Drawing.Color 可以直接显示 public System.Drawing.Color GetPixelColor(int x, int ...