| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MySQL——增删改查进阶 -> 正文阅读 |
|
[大数据]MySQL——增删改查进阶 |
目录 四,查询(聚合函数:count,sum,max,min,avg) 一,数据库的约束1.not null——指定列非空create table student ( 2.unique——指定值唯一create table student ( 使用unique约束,数据库自动给对应列创建索引 3.default——默认值约束create table student ( 4.primary key——主键约束create table student ( 1.相当于 unique+not null 2.一个表中只能有一个(分布式部署时不能保证不重复) 3.常与? auto_increment? 搭配使用,可自动增加值,也支持手动分配. ? 手动分配后,按手动分配后新数据继续自增 ?生成公式=(时间戳+机房编号/主机编号+随机因子)==>计算哈希值 ?5.foreign key——外键约束create table classes ( create table students ( 父表为classes,子表为students 在子表里创建父表的伪id 1.子表存在,不能直接删父表 2.被约束的不能直接删除 拓展:逻辑删除 将数据标记为无效 6.check约束——了解create table students ( check (sex='男' or sex='女') 使用时不报错且自动忽略 二,表的设计1.主要思路(1).根据需求,找到“实体” (2).梳理实体间的关系 一对一? ? ? 一对多? ? 1.学校宿舍管理系统,要求包含宿舍信息,学生信息,每日的宿舍查房记录。
?多对多 需要额外一个关联表 ?三,新增可以把查询的结果插到另一个表中 insert into 表1 select?* from 表2 [where ]; 四,查询(聚合函数:count,sum,max,min,avg)对某某列的行进行操作 1.count——计算行数select count(列/*)from 表 ?注意: count(列),若该列为null,则不计算;若该列为*,所有列为空也计算 2.sum——若干行之间进行加和select sum(列名) from 表名; ?空值不参加运算,直接跳过 3.avg——求若干行平均数4.max——求若干行最大值5.min——求若干行最小值6.group by——分组查询(1).分组
(2). 在分组时进行操作
产生select 所需列,尽量不要使用*,否则分组产生的数据只显示第一个出现的行 count() ?avg(),max(),min()和count类似 ?(3).分组之前筛选
(4).分组之后筛选?
HAVING是从分组结果中筛选数据的(行),而不是筛选列的? ?7.联合查询(笛卡尔积——列数相加,行数相乘)联合查询/多表查询=笛卡尔积+连接条件+其他条件 (1).未做数据约束
?(2).排除错误数据
(3).jion on 写法
(4).具体聚合步骤1.先笛卡尔积 select * from 表1,表2 ; 2.再加上连接条件(一般是对id进行去重) select * from 表1,表2 where 表1.id=表2.id ; 3.再加上其他限制条件,留下你需要的内容 select * from 表1,表2 where 表1.id=表2.id and 条件/group by?; 4.最后改变 select 后的 * 为所需要的列 select 列1,列2/sum(列),avg(列)...? from 表1,表2 where 表1.id=表2.id and 条件/group by ; (5).内外链接1.内外连接区别 如果两张表数据对应,内外连接基本相同,甚至没有区别 ?如下所示: ?反之,情况不同,内外连接区别明显 ? 2.内连接
3.外链接 外连接分为左外连接和右外连接。 左外连接:左侧的表完全显示
? 右外连接:右侧的表完全显示
? (6).自连接自连接是指在同一张表连接自身进行查询,比较特殊,因条件查询一般为列操作,而自连接可行操作,即——将行转换为列 但因其可读性差,运行开销成本高,故实际中执行多个SQL来完成比较 8.子查询/嵌套查询其本质就是将多个查询语句组合成一个查询语句 (1).单行子查询返回一行记录的子查询
(2).多行子查询返回多行记录的子查询 [not] in
[not] exists?
exists可能速度较慢,延迟较高,故一般使用 In ,但当数据特别大时,可以使用exists 9.合并查询(1).union用于取得两个结果集的并集可自动去掉结果集中的重复行
(2).union all?用于取得两个结果集的并集,不能自动去掉结果集中的重复行
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/15 23:28:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |