• 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
没有结果
查看所有结果

Mysql(三)联合查询、 运算符、 高级修改、 高级删除、 高级新增、 高级查询

Mr.Lee 由 Mr.Lee
2018年5月18日
在 Mysql
0
Mysql(五)事物、 外键、 存储函数、 存储过程、 流程控制、 视图、 触发器
0
分享
0
浏览

思考题

  • 手机号码一般使用什么数据类型存储? char(11)
  • QQ号 varchar(12)
  • 性别一般使用什么数据类型存储? tinyint(1) 1-男,2-女 char(1) 男,enum 单选女
  • 年龄信息一般使用什么数据类型存储? Unsigned tinyint(3)
  • 照片信息一般使用什么数据类型存储? varchar(60) 直接存唯一的图片名
  • 薪水一般使用什么数据类型存储? decimal(10,2) php要判断小数位不能有第三位
  • 学员姓名允许为空吗? 不能(使用情况)
  • 家庭地址允许为空吗? 个人中心设置可以为空,购物不能为空
  • 电子邮件信息允许为空吗? 可个人中心可以,用邮箱注册账号
  • 考试成绩允许为空吗? 不可以 给一个默认值0
  • 在主键列输入的数值,允许为空吗? 不能
  • 一个表可以有多个主键吗? 不能
  • 在一个学校数据库中,如果一个学校内允许重名的学员,但是一个班级内不允许学员重名,可以组合班级和姓名两个字段一起来作为主键吗? primary key(id,name)
  • 表中没有合适的列作为主键怎么办? 给他添加一个编号id
  • 一个表可以没有主键吗? 可以,一般使用没有主键的表都是中间表(存储两个表之间的关系)
  • 如果标识列A的初始值为1,增量为1,则输入三行数据以后,再删除两行,下次再输入数据行的时候,标识值从多少开始? 4

运算符

算术运算符

+ 加

– 减

*乘

/ 除 如果除数为0怎么办? 得出的结果是null

% 取模(求余) 如果除数为0怎么办? 得出的结果是null

算术运算符一般是应用到,结果字段运算上

Select (字段运算)字段表达式 [from ] [where]

关系运算符

< 小于

>大于

<= 小于等于

>=大于等于

= 等于(比较)

<> != 不等于

关系运算符主要用在哪个类型上 数值类型,也可以用在字符串类型

Select * from 表名 id>5

Select * from 表名 name=’李明’;

Select * from 表名 name!=’李明’;

逻辑运算符

and 条件同时满足为真

or 条件有一个满足为真

not 取反

高级查询

高级查询的格式

Select [all/distinct] 字段/字段表达式

[from 子句]

[where子句]

[group by 子句]

[having子句]

[order by子句]

[limit 子句]

子句的顺序固定

All

含义就是把查询出来的结果全部展示出来

distinct去除重复数据

as别名

使用方式 as 新名字,as关键字可以省略

Where条件

In

在某个范围内

找出type 是打野,或输出的英雄信息

一般会:select * from hero where type=’打野’ or type=’输出’;查询

其实还可以使用in来查询

字段名 In (值1,值2….);含义就是 该字段的值是小括号里边的任意一个

比较:or 和in

In比or使用更方便,如果需要再加满足的条件,只需要在小括号里边加一个值就行了而or需要使用两次or运算这样执行效率慢,语法繁琐

Is null /is not null

Is是判断,一般只和null连用,判断字段的值是否是null,如果是null就返回1,如果不是就返回0;

between…and

在什么范围之内,这个范围主要指数字

大于3小于8

Between 3 and 8; 包括3和8的

Between…and…表示不了不连续的范围,比如 在这些数字里边的 1,6,8,9

like模糊查询

模糊查询就是知道要查询信息的一部分内容,不是精确的内容的查询

英雄名字我只知道第一个是‘牛’ 那么我怎么查到这些英雄的信息呢?

通配符

就是占位的符号,有一定含义

通配符

描述

_ (下划线)

表示任意一个字符

%

表示任意多个或一个或0个字符

1、’t_m’下列选项符合的条件的是()

A:tm B:tom C:toom D:tam E:tmo

2、’张%’ 下列选项符合的条件的是()

A:张三 B:张三丰 C:张牙舞爪 D:张 E:小张

3、’%诺基亚%’ 下列选项符合的条件的是()

A:诺基亚2100 B :2100诺基亚 C:我的诺基亚质量很好 D:诺基亚

4、SELECT * FROM 数据表 WHERE 编号 LIKE ’00_A5%C’ ()

A、0890AC B、007_A51C C、00A54C D、00AA5C

group by分组

什么是group by分组查询,作用

分组查询是按照指定的字段来分组,分组的目的是为了统计

聚合函数

聚合函数就在分组的基础上求某一个字段的相关信息,返回的是一个单独的数据,也就是 ‘一行一列’

Sum求和

Avg平均值

Max最大值

Min 最小值

Count 数量

having条件

在原有查询出来的结果上过滤

比较having和where的区别

相似的地方都是条件—–过滤数据

不同的地方

  • Where在分组之前执行,having在分组之后执行说白了,having就是在where过滤之后的结果之上,再次过滤数据
  • Having过滤只能使用查询结果中有的字段,where过滤数据能使用表中的任何字段

回溯查询 with rollup

就是在分组的结果基础之上,再次进行相同的分组查询

扩展:我想在一次结果中查看到不同英雄的平均伤害,和所有英雄的平均伤害

order by排序

排序,按照某一字段从大到小排,从小到大排

从大到小排序 desc order by 字段名 desc 按照某个字段从大到小排序

从小到大排序 asc order by 字段名 asc按照某个字段从小到大排序

如果没有设置排序,会按照id从小到大排序展示出来

Id从大到小排序

limit限定

限定查询出来的结果显示多少条,从第几条开始显示显示多少条

Limit 数字 –从第一条开始显示多少条数据

Limit 数字 ,数字 —从第几条开始显示,显示多少条 不包括开始的那一条

实现:显示前四条数据

实现:从第5条开始,显示3条

高级查询案例

测试数据

  • 找出伤害是前三的英雄信息

select name from hero order by hurt desc limit 3;

  • 找出英雄名字中有’德’字的英雄

select name from hero where name like ‘%德%’;

  • 找出每种技能的平均伤害

select skill,avg(hurt) from hero group by skill;

  • 找出每种技能的平均伤害 和所有技能的平均伤害

select skill,avg(hurt) from hero group by skill with rollup;

  • 找出平均技能伤害大于60的技能

select skill,avg(hurt) as 平均伤害 from hero group by skill having 平均伤害>60;

  • 找出伤害最高的英雄信息(不要求掌握)

select name,hurt from hero where hurt= (select max(hurt) from hero);

高级新增

之前学的新增:insert [into] 表名 [(字段列表)] values (值列表);

要求,字段列表和值列表一致,每一次执行插入一条数据的

多值插入

语法: insert [into] 表名 [(字段列表)]

values (值列表), (值列表), (值列表)……;

例如:

insert into hero values

(null,’a’,1,2,50,60),

(null,’b’,1,2,50,60),

(null,’c’,1,2,50,60);

set方式插入

很少用,只需要知道就可以了

语法: insert 表名 set 字段1=值1,字段2=值2…;每次只插入一条数据

例如:

insert into hero set name=’d’,type=1,skill=2,hurt=23,waittime=6;

蠕虫复制

什么是蠕虫复制,这个类似细胞分裂

1 变 2

2 变 4

4 变 8

每次进行一个蠕虫复制的话,数据表的数据就是成倍的增加

当前表有10条数据,蠕虫复制了10次—-现在有多少条数据?1024*10

再蠕虫复制10次 1024*1024*10—-千万级数据

所以蠕虫复制需要防止;

例如:

语法 insert [into] 表名 values select 语句

Select 语句的查询结果字段和插入的字段列表一致(数量,类型);

扩展:怎么防止蠕虫复制

加入unique key

replace插入

替换插入,如果插入的数据中在表中有(一个字段上—唯一建),那么会先把表中已有的数据删除,然后再插入

Replace[ into] 表名 [(字段列表)] values (值列表);

高级修改

Update 表名 set 字段1=值1 ,字段2=值2… where 修改条件;

排序限定条数修改

语法:update 表名 set 字段1=值1 ,字段2=值2… [where 条件] [order by 子句] [limit子句]

在修改的过程中可以限定修改的条数,和排序

我要修改英雄前三的伤害值 ,让伤害值加倍;

这里用到了排序 英雄伤害从高到低排序 order by desc

限定 修改前三条信息,让信息值加倍 limit 3

Update hero set hurt=hurt*2 [hurt+hurt] order by hurt desc limit3;

修改前,伤害前三的英雄信息

扩展:

回想limit 3;

Limit 4,2; 修改英雄伤害排名是5,6的伤害,让其加倍—update修改没有这样的用法

高级删除

delete from 表名 [where 条件] [order by 子句] [limit 子句]

排序限定条数删除

英雄伤害前2两名,英雄删除

Delete from hero order by hurt desc limit 2

删除前数据

删除伤害排名前两位的英雄,如果成功,德玛和诺克消失

扩展:能不能指定从第几条开始删除?

也就是delete语句中支不支持 limit 数字,数字;的用法

测试;删除伤害排名在第3,4的两个英雄

Sql: delete from hero order by hurt desc limit 2,2;

Truncate删除

清空表,除了清空表中的数据,还可以把表的自动增长归成1

Truncate请空表

清空完成的效果

联合查询

含义

什么是联合查询

联合查询是把两个查询结果放在一起来显示

联合查询就是把这个两个展示出来的结果放在一块展示

既然是纵向的连接:首先是字段的个数必须一致

基本形式

语法:select 语句 union [all/distinct] select 语句

注意点

  • 第一纵向连接,两个结果集字段数量必须一致
  • 第二如果需要对连接过后的结果集 进行排序那么必须把两个select语句用小括号包括起来

这个order by是对联合过后的结果进行排序

  • 第三如果我们前边的select 语句查询的结果字段名,有别名,那么排序的时候必须用别名

错误原因:因为联合查询出来的结果集中没有id这个字段名,原来的id改成了编号,如果想用id进行排序,难么只能使用 ‘编号’这个名称;

  • 第四联合查询结果的字段名,默认是第一个select语句查询出来的字段名

标签: 联合查询运算符高级修改高级删除高级新增高级查询
上一篇文章

Mysql(四)子查询数据库备份还原、 用户权限、 表关系、 连接查询

下一篇文章

Mysql(二)修改表结构、 复制表、 字段类型、 数据类型、 重命名表

下一篇文章
Mysql(五)事物、 外键、 存储函数、 存储过程、 流程控制、 视图、 触发器

Mysql(二)修改表结构、 复制表、 字段类型、 数据类型、 重命名表

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Search

没有结果
查看所有结果

About Me

个人随笔

Winston Lee

Programmer

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Winston Lee

About Me

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Categories

  • AJAX
  • BootStrap
  • CodeIgniter
  • CSS
  • DedeCMS
  • GIT
  • HTML
  • Javascript
  • Jquery
  • Laravel
  • Laravel在线教育平台
  • Linux
  • Memcache
  • MongoDB
  • MVC
  • Mysql
  • Nginx
  • Node
  • PDO
  • PHP
  • PHP7
  • PHP基本语法
  • PHP核心编程
  • Redis
  • Smarty
  • Socket
  • SVN
  • Swoole
  • TP3.2
  • TP3.2商城
  • TP5.0
  • TP5.0商城
  • XML
  • Yaf
  • Yii
  • Yii手机直播
  • 二次开发
  • 优化方案
  • 前端技术
  • 前端框架
  • 后台框架
  • 基本操作
  • 微信公众号
  • 数据库
  • 未分类
  • 混合APP
  • 源码Blog项目
  • 版本控制
  • 环境搭建
  • 移动端开发
  • 网站优化
  • 资料
  • 面向对象
  • 面向对象编程
  • 页面静态化

Tags

DOM Json RBAC 事件 传参 函数 分页 判断语句 匿名函数 变量 图片上传 存储过程 安装 对象 封装 属性 接口 控制器 数据库操作 数据类型 数据表 数组 文件上传 无刷新分页 权限 标签 模型 正则 流程控制 目录结构 算法 类 索引 继承 缩略图 表关系 视图 路由 运算符 选择器 递归 配置 错误处理 页面静态化 验证码
  • 首页
  • 前端
  • 前端框架
  • PHP
  • 数据库
  • 优化
  • 后台框架与实战
  • 移动开发
  • 二次开发
  • Linux
  • 版本控制
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3

没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3