数据库——MYSQL复习

2023-11-02

单表查询

1.查询指定列

select id,name from t_student

2.查询全部列

select * from t_student

3.查询经过计算的值

select id,age-18 from t_student

4.消除取值重复的行

select name distinct from t_student

5.查询满足条件的元祖(比较、确定范围(between 18 and 20)、确定集合(in (‘李四’,‘王五’))、字符匹配(‘%张%’、‘张_’)、空值(is null、is not null)、多重条件(sex is not null and age > 20))

select * from t_student where age > 20

select * from t_student where age between 18 and 20

select * from t_student where name in (‘李四’,‘王五’)

select * from t_student where name like ‘%张%’

select * from t_student where name like ‘张_’

select * from t_student where sex is null

select * from t_student where sex is not null

select * from t_student where sex is not null and age > 20

6.Order by子句

select * from t_student order by age asc

select * from t_student order by age desc

7.聚集函数 COUNT/SUM/AVG/MAX/MIN

select count(*) from t_student

select sum(age) from t_student

8.Group by子句

select * from t_student group by age

连接查询

嵌套查询 ANY/ALL/IN/EXISTS

select * from t_student where name in (select name from t_good_stu)

select * from t_score where score < any(select score from t_score where score < 80)

select * from t_score where score < all(select score from t_score where score between 10 and 80)

select * from t_score where exists (select score from t_score where score < 100)

集合查询UNION/INTERSECT/EXCEPT

select * from t_student where age > 20 union select * from t_student where sex = ‘男’

select * from t_student where age > 20 intersect select * from t_student where sex = ‘男’

select * from t_student where age > 20 except select * from t_student where sex = ‘男’

索引

创建索引

CREATE TABLE t_user(id int,username varchar(20),password varchar(20),UNIQUE INDEX(username,password));

CREATE INDEX idx_lastname ON table_name (lastname);

ALTER TABLE t_user ADD INDEX username_index(username)

删除索引

DROP INDEX username_index ON t_user

EXPLAIN 是一个 MySQL 的关键字,用于分析查询语句的执行计划和查询优化器的决策。通过 EXPLAIN,你可以获取关于查询的重要信息,例如使用的索引、连接类型、扫描行数等,以及查询优化器的选择和判断。

视图

视图是虚拟表,数据库没有存储结构和数据。

视图作用:

**简化复杂查询:**通过在视图中定义复杂的查询逻辑,可以简化查询语句,使其更易读和易用。视图隐藏了底层表的复杂性,用户只需关注视图的结构和使用。

**提供数据安全性:**通过视图,可以限制用户对数据的访问权限,只显示他们被授权访问的特定数据和列。视图可以隐藏敏感数据,增强数据的安全性。

**封装数据:**视图将查询逻辑封装在一个虚拟表中,隐藏了底层表的细节。这样用户可以通过视图来访问和操作数据,而不需要直接操作底层表。

**简化数据访问:**视图提供了一个简化的数据访问接口,用户可以直接查询视图而无需了解底层表的结构和关系。视图将复杂的数据结构转化为更易理解和使用的形式。

**逻辑数据组织:**通过视图,可以将多个表的数据按照逻辑上的组织方式进行展示,提供更高层次的数据抽象。视图可以将相关联的数据组合在一起,形成一个更完整和一致的数据视图。

创建视图

CREATE VIEW view_name AS
SELECT column1, column2, …
FROM table
WHERE condition;

更新视图结构

ALTER VIEW view_name AS
SELECT column1, column2, …
FROM table
WHERE condition;

更新视图内容

UPDATE view_name SET column1 = “”

触发器

创建触发器

CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name
FOR EACH ROW
BEGIN
– 触发器操作语句
END;

INSERT是NEW,DELETE是OLD

CREATE TRIGGER my_trigger
AFTER INSERT ON customers
FOR EACH ROW
BEGIN
INSERT INTO audit_table (customer_id, action) VALUES (NEW.customer_id, ‘INSERT’);
END;

删除触发器

DROP TRIGGER [IF EXISTS] trigger_name;

函数

数学函数

ABS(X):返回X绝对值

MOD(N,M):返回N被M除的余数

FLOOR(X):返回不大于X的最大整数值

CEILING(X):返回不小于X的最小整数值

ROUND(X):返回参数X的四舍五入的一个整数

字符串函数

ASCII(str):返回字符串str的最左面字符的ASCII代码值,如果是空串则返回0

LENGTH(str):返回字符串str的长度

LOCATE(substr,str):返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0

LEFT(str,len):返回字符串str的最左面len个字符

RIGHT(str,len):返回字符串str的最右面len个字符

SUBSTRING(str,pos):从字符串str的起始位置pos返回

TRIM(str):返回字符串str,所有前缀或后缀空格被删除了

REVERSE(str):返回颠倒字符顺序的字符串str

日期和时间函数

DAYOFWEEK(date):但会日期date的星期索引

DATEOFYEAR(date):返回date在一年中的日数

QUARTER(date):返回date在一年中的季度

NOW():YYYY-MM-DD HH:MM:SS格式返回当前时间

加密函数

PASSWORD(str):对字符串str进行加密

MD5(str):对字符串str进行加密

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库——MYSQL复习 的相关文章

  • PHP PDO相关:更新SQL语句未更新数据库内容

    我正在尝试使用准备好的语句来实现更新语句PHP http en wikipedia org wiki PHP脚本 但它似乎没有更新数据库中的记录 我不确定为什么 所以如果您能分享一些见解 我将不胜感激 Code query UPDATE D
  • 使用按位函数查询 BIT 字段时,MySQL 不使用索引

    我的 MySQL 表中有一个 BIT 类型的字段 我想使用位值存储记录的状态 例如 1 status1 2 status2 4 status3 8 status4 每条记录可以同时具有多种状态 对于 status1 和 status3 该值
  • PHP 选择后立即删除

    我有一个 PHP 服务器脚本 它从 MySQL 数据库中选择一些数据 一旦我将 mysql query 和 mysql fetch assoc 的结果存储在我自己的局部变量中 我就想删除我刚刚选择的行 这种方法的问题在于 PHP 似乎对我的
  • 当“修复表”查询在 mysql 中不起作用时该怎么办?

    我收到此错误 表的存储引擎不支持修复 当我尝试使用查询修复表时repair table tbl college master 表是 innodb 类型 但我不知道我收到此错误 See 手册 http dev mysql com doc re
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 比较表中的行以了解字段之间的差异

    我有一个包含 20 多列的表 客户端 其中大部分是历史数据 就像是 id clientID field1 field2 etc updateDate 如果我的数据如下所示 10 12 A A 2009 03 01 11 12 A B 200
  • Mysql innoDB 不断崩溃[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的数据库 mysql 服务器不断崩溃 重新启动 我不知道该怎么办 我不断在 dbname org err 文件中收到以下内容 13120
  • MYSQL - 查找最近的前一天

    我可以以某种方式 不使用 PHP 找到一周中最近的前一天日期吗 Like 最近的上一个星期二的日期是哪一天 CURDATE INTERVAL WEEKDAY CURDATE wday IF WEEKDAY CURDATE gt wday 0
  • Mysql 检索所有有限制的行

    我想检索特定用户的所有行 限制为 0 x 所以我只是想问是否有任何方法可以检索 mysql 中的所有行 而不调用返回 x 的 count id 的方法 而不重载现有函数 该函数在查询中根本没有限制 与我们的 string Relace 功能
  • MySQL 使用 ALTER IGNORE TABLE 出现重复错误

    我的 MySQL 中有一个有重复项的表 我尝试删除重复项并保留一项 我没有主键 我可以通过以下方式找到重复项 select user id server id count as NumDuplicates from user server
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • 免费 PHP 登录库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • MySQL连接字符集问题

    我在 Mac 上使用带有 MySQL 的 velosurf 没有任何编码问题 但是当我切换到 Linux 计算机时 从 velosurf 获得的值未正确编码 我发现这可能是默认连接字符集的问题 在 Mac 上我得到 mysql gt sho
  • Mysql 将 int 转换为 MAC

    我有一些数据可以转换 其中有 2 列 其中一列有 IP 它包含整数值 我在 mysql 查询中使用了以下函数 是否有一个函数可以用来转换我的 mac 列 其中包含整数和数据类型是bigint to MAC地址 SELECT INET NTO
  • Flask-login:无法理解它是如何工作的

    我试图理解如何Flask Login https flask login readthedocs org en latest works 我在他们的文档中看到他们使用预先填充的用户列表 我想使用数据库存储的用户列表 但是 我不明白其中的一些
  • Bugzilla 中分离客户端的基本权限

    我正在尝试配置一个 Bugzilla 实例 这将允许我的客户登录并为其正在开发 维护的网站提交错误 例如 我创建了 2 个名为 TestProject TestProject2 的产品和一个名为 TestClient 的用户 我想要实现的是
  • 在 PHP 字符串中格式化 MySQL 代码

    是否有任何程序 IDE 可以在 PHP 字符串中格式化 MySQL 代码 例如 我使用 PHPStorm IDE 但它无法做到这一点 它对 PHP 和 MYSQL 执行此操作 但不适用于 php 字符串内的 MYSQL 我已准备好使用新的
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen

随机推荐

  • 企业网络规划和设计方案(一)

    企业网络规划和设计方案 一 工程概况公司有一栋独立大楼 高4层 每层面积2000平方米 由研发技术部 成员60人 分成硬件 25 和软件 35 2大部门 生产部 主要产品是手持电子产品 110人 管理人员10人 和市场部 30个销售 10个
  • AV1生态系统更新:2019年6月

    Kay是热心的AV1关注者 他在blog上持续搜集了关于AV1的进展 很抱歉 我们延误了很久才发布这篇非常不错的blog 希望对你了解AV1有所帮助 文 Kay Singh 译 John 原文 https www singhkays com
  • 分享8个免费的超清背景图片下载网站

    想用免费的桌面背景图 还是前端开发做页面展示 下面推荐10个超清的免费背景图下载网站 1 wallhaven cc wallhaven cc拥有进1000万张高质量壁纸 无广告 支持名称搜索 像素搜索 整体色调搜索 不支持中文 采用IPV6
  • robot自动化测试实现多浏览器支持

    做自动化测试首先要保证的就是用例覆盖面完整 而UI测试首先保证就是浏览器覆盖率问题 robot支持的火狐和谷歌浏览器 IE都很好 当然IE可能有一点问题 不过10 11切换的用问题不大 目前用户大多用360浏览器进行上网 我们构建一下使36
  • 数据挖掘中常用的数据清洗方法有哪些?

    原文来自 https www zhihu com question 22077960 answer 24095218 从两个角度上看 数据清洗一是为了解决数据质量问题 二是让数据更适合做挖掘 不同的目的下分不同的情况 也都有相应的解决方式和
  • 网络编程 用代码创建进程

    创建进程的多种方式 1 鼠标双击启动图标 2 使用代码创建应用进程 如何用代码创建进程 python中有跟进程相关的模块multiprocessing 意思为多进程 from multiprocessing import Process i
  • Java 多线程写同一个文件实现

    最近项目中需要从网站上抓取大量的数据 采用了多线程技术 每个线程抓取的数据都需要保存到一个文件中 避免消耗大量的内存 思路 多个访问线程将需要写入到文件中的数据先保存到一个队列里面 然后由专门的 写出线程负责从队列中取出数据并写入到文件中
  • Activity启动源码分析

    我会思考的是 activity的启动过程是什么样的呢 是什么原理呢 有哪些好的地方 哪些不好的地方呢 可不可以更好呢 首先 是会执行到startActivityForResult 然后会执行Instrumention的execStartAc
  • GDB调试-小试牛刀

    This is the GNU debugger Usage gdb options executable file core file or process id gdb options args executable file infe
  • vue自定义组件+Dialog 对话框组件定制弹出框教程

    1 新建一个 vue页面 写一个Dialog组件 把弹出框上想要展示的内容放进去
  • 学习笔记(97):R语言入门基础-pairs绘图

    立即学习 https edu csdn net course play 24913 285841 utm source blogtoedu pairs函数 m matrix 1 16 nrow 4 pairs m 对应结果 df data
  • prettier 配置

    使用 VS Code 开发的时候会配合 prettier 来进行代码格式化 这里贴出一份 prettier 配置 所有的配置都是默认配置 注释中也有表明相关的网站 options 是使用 google 翻译的 可能有翻译的不准确的地方 不过
  • 使用tensorflow训练模型时可能出现nan的几种情况

    最近在做基于MTCNN的人脸识别和检测的项目 在训练模型的过程中总是会不定时地出现损失值为nan的情况 Debug了好久终于找到了问题所在 这里总结以下可能出现nan的几种情况 1 在分类问题中 我们经常使用到交叉熵损失函数 需要注意的是
  • thymeleaf加载数据失败

    在使用thymeleaf进行传送模型数据的时候 发现只有return数据 没有对应的页面 后台代码如下 前端代码如下 应该将 RestController 改成 Controller 测试成功 原因 如果使用 RestController注
  • idea如何开启Run Dashboard

    1 使用场景 IDEA开发工具中以 run 或 debug 方式启动多个 SpringBoot 应用时 日志控制台排开在窗口上方 服务间调用涉及日志追踪时 不方便快速切换来查看日志信息 如下图所示 IDEA提供了强大Dashboard功能
  • css的层叠顺序

    css中用z index来控制定位元素的层叠顺序 z index integer auto 整数值越大 元素离我们越近 一旦给一个定位元素设定了z index的值 不是auto 那么它就为它的所有后代建立了一个新的局部层叠上下文 如
  • Kafka系统学习

    Kafka学习视频 文章目录 一 Kafka 概述 二 消息队列 传统消息队列的应用场景 使用消息队列的好处 消息队列的 两种模式 三 Kafka 基础架构 四 Docker安装 Kafka Kafka命令行 六 Kafka架构深入 Kaf
  • VMware Pro下Centos 8虚拟机网络配置与克隆

    网络配置对于小白来讲是非常麻烦的 所以针对VMware Pro下的虚拟机网络配置进行记录 另外也会记录一下克隆虚拟机的一个过程 这个对测试集群的部署是非常有用的 注意一定是VMware Pro 因为Player免费版无网络配置功能 环境安装
  • 浪潮服务器更换硬盘_浪潮K1 Power E950百万豪机拆机指南

    不久前 浪潮商用机器一位架构师背着老板把浪潮K1 Power Linux服务器给 解剖 了 但是有网友质疑说顶多算半个拆机 不过瘾 安排 不过这次拆的可是价值百万的豪华机型 浪潮K1 Power E950 价值百万可不是随口说说 不信 看基
  • 数据库——MYSQL复习

    单表查询 1 查询指定列 select id name from t student 2 查询全部列 select from t student 3 查询经过计算的值 select id age 18 from t student 4 消除