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;
MySQL修炼之路二的更多相关文章
- MySQL学习之路(二)——数据类型和操作数据表
数据类型和操作数据表 2.1 MySQL类型之整型 2.2 MySQL数据类型之浮点型 2.3 日期时间型 DATE 1支持时间:1000年1月1日~9999年12月31日 DATETIME 3 支持 ...
- MySQL修炼之路四
1. 外键(foreign key) 1. 定义:让当前表字段的值在另一个表的范围内选择 2. 语法 foreign key(参考字段名) references 主表(被参考字段名) on delet ...
- MySQL修炼之路一
1. MySQL概述 1. 什么是数据库 存储数据的仓库 2. 都有哪些公司在用数据库 金融机构.游戏网站.购物网站.论坛网站 ... ... 3. 提供数据库服务的软件 1. 软件分类 MySQL. ...
- MySQL修炼之路五
1. 存储引擎和锁 1. 存储引擎(处理表的处理器) 1. 基本操作 1. 查看所有存储引擎 mysql>show engines; 2. 查看已有表的存储引擎 mysql>show cr ...
- MySQL修炼之路三
1. SQL查询 1. 执行顺序 3. select ... 聚合函数 from 表名 1. where ... 2. group by ... 4. having ... 5. order by . ...
- 微博MySQL优化之路--dockone微信群分享
微博MySQL优化之路 数据库是所有架构中不可缺少的一环,一旦数据库出现性能问题,那对整个系统都回来带灾难性的后果.并且数据库一旦出现问题,由于数据库天生有状态(分主从)带数据(一般还不小),所以出问 ...
- Java工程师修炼之路(校招总结)
Java工程师修炼之路(校招总结) 前言 在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到几个公司的研发岗offer,包括百度,阿里,腾讯,今日头条,网易, ...
- MySQL学习之路(一)——初涉MySQL。
MySQL学习之路(一) 1.1MySQL的概述 MySQL由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一个开源的关系型数据库管理系统. MySQL分为社区版和企业版. 1 ...
- iOS攻城狮修炼之路
自己总结的学习iOS的笔记,打造一个全面的知识体系,iOS攻城狮修炼之路[持续更新中] iOS学习笔记01-APP相关 iOS学习笔记02-UIScrollView iOS学习笔记03-UITable ...
随机推荐
- 多个页面进行爬虫 pycharm
使用requests , lxml ,xpath进行爬取并写入了TXT(也可以存入数据库).参考博客:https://blog.csdn.net/yexing_cts/article/details ...
- win/zabbix_agent.conf
# This is a configuration file for Zabbix agent service (Windows) # To get more information about Za ...
- 3.Vue的基本语法
1.v-bind 可简写为":" 你看到的 v-bind 等被称为指令.指令带有前缀 v-,以表示它们是 Vue 提供的特殊特性. 我们可以使用 v-bind 来绑定元素特性! 在 ...
- Linux权限及归属管理 磁盘管理 文件系统 LVM管理
第五六七章 alias 查看系统别名 67 chmod 设置文件或目录的权限 -R表示以递归的方式设置目录及目录下的所有子目录及文件的权限 u:属主 g:属组 o:其他人 a:所有人 +:添加 ...
- Bootstrap-table实现动态合并相同行
Bootstrap-table 表格合并相同名字的列 @编写function() /** * 合并行 * @param data 原始数据(在服务端完成排序) * @param fieldName ...
- [NOI2014]动物园(KMP,字符串)
半年前看这题还感觉很神仙,做不动(没看题解). 现在过来看发现……这tm就是一个sb题…… 首先题面已经提示我们用 KMP 了.那 KMP 究竟能干啥呢? 看 $num$ 的定义.发现对于前缀 $i$ ...
- Linux性能优化实战学习笔记:第五十一讲
一.上节回顾 上一节,我带你一起学习了常见的动态追踪方法.所谓动态追踪,就是在系统或者应用程序正常运行的时候,通过内核中提供的探针,来动态追踪它们的行为,从而辅助排查出性能问题的瓶颈. 使用动态追踪, ...
- 2.Python学习之路
这里主要更新Python每个部分知识点的详细的目录...(知识点目录) Python基础 一.计算机基础 二.Python基础 三.函数 四.常用模块 五.模块和包 六.面向对象 Python进阶 七 ...
- 使用Windows的Linux子系统搭建嵌入式开发环境
亲,都9102年了,还在用VMware跑嵌入式交叉编译链吗? 北京时间2019年6月13日,Windows 10发布预览版本18917.版本的主要功能是Linux子系统(windows sub ...
- K8S 如何实现将git代码下拉到指定的容器路径中
gitRepo 是 kubernetes Volume类型中的一种,gitRepo volume可以实现将git代码下拉到指定的容器路径中. 备注:实现此功能,Pod运行的节点都必需要安装git.换句 ...