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. C++中#define与typedefine的区别

    原文链接:https://www.cnblogs.com/fengfengqingqingyangyang/p/3270432.html (1)typedef是用来定义关键字/标识符的别名,并未分配内 ...

  2. html--前端jquery基础实例

    一.左边的菜单栏 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  3. python3中pymysql模块的事务操作

    try:    cursor.execute(sql_1)     cursor.execute(sql_2)     cursor.execute(sql_3) except Exception a ...

  4. Node.js 入门篇

    Node.js 使用C++开发的. Node.js是一个事件驱动服务端JavaScript环境,只要能够安装相应的模块包,就可以开发出需要的服务端程序,如HTTP服务端程序.Socket程序等. No ...

  5. [THUPC2018]弗雷兹的玩具商店(线段树,背包)

    最近状态有点颓,刷刷水题找找自信. 首先每次询问就是完全背包.可以 $O(m^2)$. 由于每个物品都可以用无数次,所以对于价格相同的物品,我们只用考虑愉悦度最高的. 直接上线段树.$val[i]$ ...

  6. xshell 与服务器断开连接后 服务停止500internal error

    看某教程用uwsgi +nginx运行django项目,但是xshell关掉之后服务会停止. 大佬一席话,胜趟十天坑. 把supervisor配置好之后正常运行. 如何配置?百度啊! 附录一个好的教程 ...

  7. 黑客最喜欢的15个Nmap扫描命令,熟练掌握你也能成为黑客大神

    1.针对IP或主机的基本Nmap扫描 nmap IP 现在,如果要扫描主机名,只需替换主机的IP,如下所示: nmap 域名 2.扫描本地或远程服务器上的特定端口或扫描整个端口范围 nmap -p 1 ...

  8. Python安装(64位Win8.1专业版)

    本文出处:http://www.cnblogs.com/leonwen/p/4700648.html 嗯,开始学Python. 我安装的是Python 2.7.10版本,安装的时候除了选了路径其他均n ...

  9. java对接微软认证,用oauth2.0实现

    由于官网所说所写的demo比较官方,比较难理解,而且只能到获取到token阶段,没有用户到用户信息.就算理解官网所写的,但是还是不能获取到用户信息,这对于业务系统做单点对接,增加很大的难度,附件代码是 ...

  10. MySQL事务未提交导致整个表锁死

    问题及说明: 当一个SQL事务执行完了,但未COMMIT,后面的SQL想要执行就是被锁,超时结束:报错信息如下: mysql> ERROR 1205 (HY000): Lock wait tim ...