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. 【Spring AOP】AOP的实现(三)

    一.Spring 对AOP的支持 Spring中AOP代理由Spring的IOC容器负责生成.管理,其依赖关系也由IOC容器负责管理.因此,AOP代理可以直接使用容器中的其它bean实例作为目标,这种 ...

  2. centos7 扩容

    用 df -h, 看到磁盘满了 (注意:如果是二,或者第三次扩容,下面的参数就不一样) fdisk /dev/sda 但是失败了,显示没有多余的分区 可以看到 有个/dev/sda4 是我在这之前刚刚 ...

  3. CF1076D Edge Deletion 最短路树

    问题描述 Codeforces 洛谷(有翻译) 题解 最短路树,是一棵在最短路过程中构建的树. 在\(\mathrm{Dijkstra}\)过程中,如果最终点\(y\)是由点\(x\)转移得到的,则在 ...

  4. springboot2.1+redis多数据源的配置

    springboot系列学习笔记全部文章请移步值博主专栏**: spring boot 2.X/spring cloud Greenwich.    由于是一系列文章,所以后面的文章可能会使用到前面文 ...

  5. Mysql查询数据库状态及信息

    使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小.字符集.用户等等.下面总结了一些查看数据库相关信息的命令 1:查看显示所有数据库 mysql> show databases; ...

  6. ACE网络编程:IPC SAP、ACE_SOCKET和TCP/IP通信实例

    socket.TLI.STREAM管道和FIFO为访问局部和全局IPC机制提供广泛的接口.但是,有许多问题与这些不统一的接口有关联.比如类型安全的缺乏和多维度的复杂性会导致成问题的和易错的编程.ACE ...

  7. CF1188C Array Beauty(DP)

    日常降智. 不过还是第一次和 2700 的题正解这么近呢-- 由于排序后不影响答案,而且直觉告诉我们排序后会更好做,不妨排个序. 直觉告诉我们,变成求最小差 \(\ge v\) 的方案数会比最小差 \ ...

  8. CF1151F Sonya and Informatics(概率期望,DP,矩阵快速幂)

    明明是水题结果没切掉……降智了…… 首先令 $c$ 为序列中 $0$ 的个数,那么排序后序列肯定是前面 $c$ 个 $0$,后面 $n-c$ 个 $1$. 那么就能上 DP 了.(居然卡在这里……) ...

  9. [LeetCode] 58. Length of Last Word 求末尾单词的长度

    Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...

  10. Postman测试后台使用@RequestBody接收参数的坑

    问题原因:我在使用PostMan测试接口时发现数据传递不过来,是因为请求体定义为JSON数据,自动就传递不过来,虽然问题简单,但由于之前这个用的较少,所以就忽略了这点. 解决问题链接:https:// ...