首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何查询同时包含多个指定标签的文章

文章和标签是典型的多对多的关系,也就是说每一篇文章都可以包含多个标签,如图: 每一篇文章都可以包含多个标签 下面问题来了:如何查询 tag_id 同时包含 1、2、3 的 article_id?...article_id FROM articles_tags WHERE tag_id in (1, 2, 3) GROUP BY article_id HAVING COUNT(*) = 3 关于一对多关系的查询问题...,实际情况可能会更复杂一些,让我们扩展一下本题: 如何查询 tag_id 包含 1、2 但不包含 3 的 article_id?...如何查询 tag_id 包含 1、2、3 中至少两个的 article_id?...如果你理解了前面介绍的几种方法,那么解决这些扩展问题并不困难,不要固守某一种方法,要根据情况选择合适的方法,篇幅所限,恕不赘述,留给大家自己解决吧。

1.9K20

备忘单:提升你的 MariaDB 和 MySQL 数据库技能

如果你忘记输入分号,MariaDB 会认为你是想在下一行继续输入你的查询命令,在下一行你可以继续输入命令也可以输入分号结束命令。...你必须指定 MariaDB 使用哪个库,才能对该库使用查询语句。指定数据库的命令是 use。当你选择了一个库后,MariaDB 提示框会切换为选择的库。...MariaDB [(NONE)]> USE test; MariaDB [(test)]> 显示数据库的表 数据库里有表,与电子表格类似:有一系列的行(在数据库中称为记录)和列。...mysql 数据库是这个 MariaDB 实例的系统管理数据库。它里面包含重要数据,比如用来管理数据库权限的用户结构。...不论你是否需要一个普通的账号来管理数据库或者为计算机配置数据库(例如安装 WordPress、Drupal 或 Joomla时),在 MariaDB 中多建一个用户账号是很普遍的。

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL 之单表查询(精简笔记)

    MySQL提供了功能强大、灵活的语句来实现这些操作,下面将介绍如何使用SELECT语句查询数据表中的一列或多列数据、使用集合函数显示查询结果....,包括零字符: 查询Name字段中,包含所有g字母的水果(注意不是开头,只要Name字段包含g字母通通匹配),SQL语句如下: MariaDB [lyshark]> select Gid,Name,Price...◆ 在使用Select语句时,可以增加查询的限制条件,这样可以使查询的结果更加精确,我们可以在where 子句中使用and操作符,来限定相应的查询条件,使用and连接多个查询条件时,不同表达式之间应该用...[位置偏移,]输出的行数; #其中位置偏移是表示从哪一行开始显示,如果不指定默认从1开始 实例1: 显示lyshark表的前5行数据,SQL语句如下: MariaDB [lyshark]> select...(30005,4,'m1',5,14.99); ◆COUNT()函数◆ 简介:返回某列的行数 功能:此函数统计表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数 计算总行数:count(

    4.9K10

    MariaDB 单表查询与聚合查询

    ,下面将介绍如何使用SELECT语句查询数据表中的一列或多列数据、使用集合函数显示查询结果.查询语句简介首先,MySQL从数据表中查询数据的基本语句为SELECT语句,SELECT语句的基本格式如下:MariaDB...,包括零字符: 查询Name字段中,包含所有g字母的水果(注意不是开头,只要Name字段包含g字母通通匹配),SQL语句如下:MariaDB [lyshark]> select Gid,Name,Price...◆在使用Select语句时,可以增加查询的限制条件,这样可以使查询的结果更加精确,我们可以在where 子句中使用and操作符,来限定相应的查询条件,使用and连接多个查询条件时,不同表达式之间应该用and...,]输出的行数;#其中位置偏移是表示从哪一行开始显示,如果不指定默认从1开始实例1: 显示lyshark表的前5行数据,SQL语句如下:MariaDB [lyshark]> select * from...5,14.99);◆COUNT()函数◆简介:返回某列的行数 功能:此函数统计表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数计算总行数:count(*) 查询test1表总行数,SQL语句如下

    3K10

    mysql 唯一索引_mysql主键和唯一索引的区别

    '1-1' for key 'name_score' 2:提高查询速度 使用index索引时,经常导致慢查询,耗时2秒左右,遇忙时更有达到5秒的 改用unique之后,查询耗时在0.0003秒 基本可以忽略不计...2:可以把唯一性约束放在一个或者多个列上,这些列或列的组合必须有唯一的。但是,唯一性约束所在的列并不是表的主键列。 3:唯一性约束强制在指定的列上创建一个唯一性索引。...KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致重复的问题,则插入新行,跟普通的insert into一样。...使用insert into,你必须具有insert和update权限 如果有新记录被插入,则受影响行的值显示1;如果原有的记录被更新,则受影响行的值显示2;如果记录被更新前后值是一样的,则受影响行数的值显示...如果有两个事务并发的执行同样的语句, 那么就会产生death lock(死锁) 因此在使用的时候尽量避免: 尽量对存在多个唯一键的table使用该语句 在有可能有并发事务执行的insert 的内容一样情况下不使用该语句

    2.9K30

    MariaDB 连接查询与子查询

    连接是关系数据库模型的主要特点,连接查询是关系数据库中最主要的查询,主要包括内连接、外连接等.通过连接运算符可以实现多个表查询,在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中....当查询数据时,通过连接操作查询出存放在多个表中的不同实体的信息.当两个或多个表中存在相同意义的字段时,便可以通过这些字段对不同的表进行连接查询....◆外连接查询◆外连接查询将查询多个表中相关联的行,内连接时,返回查询结果集合中的仅是符合查询条件和连接条件的行.但有时候需要包含没有关联的行中数据,即返回查询结果集合中的不仅包含符合连接条件的行,而且还包括左表...子查询子查询指一个查询语句嵌套在另一个查询语句内部的查询,在SELECT子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表....,并删除重复的记录.合并但不删除重复行: 查询所有价格小于9.0的水果的信息,且查询Gid=101和103所有水果信息,使用UNION ALL连接,不要删除重复的行,查询结果,SQL语句如下:MariaDB

    4.5K30

    MariaDB 连接查询

    《MySQL5.7从入门到精通》 - 刘增杰 MariaDB 连接查询 连接是关系数据库模型的主要特点,连接查询是关系数据库中最主要的查询,主要包括内连接、外连接等.通过连接运算符可以实现多个表查询...,在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中.当查询数据时,通过连接操作查询出存放在多个表中的不同实体的信息.当两个或多个表中存在相同意义的字段时,便可以通过这些字段对不同的表进行连接查询...◆外连接查询◆ 外连接查询将查询多个表中相关联的行,内连接时,返回查询结果集合中的仅是符合查询条件和连接条件的行.但有时候需要包含没有关联的行中数据,即返回查询结果集合中的不仅包含符合连接条件的行,而且还包括左表...子查询 子查询指一个查询语句嵌套在另一个查询语句内部的查询,在SELECT子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表....合并但不删除重复行: 查询所有价格小于9.0的水果的信息,且查询Gid=101和103所有水果信息,使用UNION ALL连接,不要删除重复的行,查询结果,SQL语句如下: MariaDB [lyshark

    4.4K10

    python_day16_pythom-

    ID号 # 创建一个数据库 # MariaDB [(none)]> create database test; # 创建一个标题表 包含标题名称跟ID号 # MariaDB [test]> create...table title (id int primary key auto_increment, name varchar(20)); # 创建属性内容表 包含标题表的ID 作者消息 内容等 # MariaDB...("select * from pysql")** # 一次只查询一行 print(cursor.fetchone()) #(1, 'xiong1') # fetchmany(nums) 选择一次查看多少行...)) # 查询所有的行 因为总行数只有4行 而流标已经到了最后一行了 print(cursor.fetchall()) #() 16.2.4、scroll // 位置 relative (当前...一致性(Consistency):事务前后数据的完整性必须保持一致 隔离性(Isolation):事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离

    56910

    MariaDB 视图与触发器

    数据库中的视图是一个虚拟表,同真实的表一样,视图包含一系列带有名称的行和列数据,行和列数据来自由定义视图查询所引用的表,并且在引用视图时动态生成,视图是从一个或者多个表中导出的,视图的行为与表非常相似,...,当表上出现特定事件时,将激活该对象.MariaDB 视图视图的含义:视图是一张虚拟表,是从数据库中一个或多个表中导出来的表,视图还可以从已经存在的视图基础上定义,视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样在数据库中再存储一份....通过视图用户只能查询和修改他们所能见到的数据,数据库中的其他数据则既看不见也取不到,数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上.通过视图,...自动调用,触发器可以查询其他表,而且可以包含复杂的SQL语句,它们主要用于满足复杂的业务规则或要求.一般来说创建触发器的基本语法如下:create trigger trigger_name trigger_time...AUTO_INCREMENT PRIMARY KEY, -> b4 INT DEFAULT 0 -> );Query OK, 0 rows affected (0.07 sec)2.创建一个包含多个执行语句的触发器

    1.3K10

    MySQL 之高级命令(精简笔记)

    《MySQL5.7从入门到精通》 - 刘增杰 创建索引 索引用于快速找出在某个列中有一特定值的行,如果不使用索引MySQL必须从第l条记录开始读完整个表,直到找出相关的行.表越大,查询数据所花费的时间越多...● ref:行给出了关联关系中另一个数据表里的数据列的名字 ● rows:行是MySQL在执行这个查询时预计会从这个数据表里读出的数据行的个数 ● extra:行提供了与关联操作有关的信息...通过视图用户只能查询和修改他们所能见到的数据,数据库中的其他数据则既看不见也取不到,数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上.通过视图,用户可以被限制在数据的不同子集上...,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句来调用,也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MySQL自动调用,触发器可以查询其他表,而且可以包含复杂的...AUTO_INCREMENT PRIMARY KEY, -> b4 INT DEFAULT 0 -> ); Query OK, 0 rows affected (0.07 sec) 2.创建一个包含多个执行语句的触发器

    1.1K10

    java开发学习-数据库(1)

    MySQL 是开源的,所以你不需要支付额外的费用。 Mysql的两个小插曲: Mysql之父[U1] Mysql的兄弟- mariaDB 国外软件产品特点 mariaDB[U2] 简介 ?...6)分组查询 ? 将查询结构按照1个或者多个字段进行分组,字段值相同的为一组 生活场景:在这里有一堆人,有女人和男人,根据性别进行分组 6.1.基本分组查询 ?...* from tb_user WHERE `name` LIKE '_关%' 查询姓名中包含”二” ?...例如:查询起始行为第5行,一共查询3行记录 SELECT * FROM emp LIMIT 4, 3; --> 其中4表示从第5行开始,其中3表示一共查询3行。即第5、6、7行记录。...5.6.3.多对多关系 生活中场景: 一个学生可以选择多门选修课,每门课程可以供多个学生选择 一个学生可以有多个老师,一个老师也可以有多个学生 CREATE TABLE tb_teacher( tid

    1.3K50

    MySQL 索引与性能调优

    索引用于快速找出在某个列中有一特定值的行,如果不使用索引MySQL必须从第l条记录开始读完整个表,直到找出相关的行.表越大,查询数据所花费的时间越多,如果表中查询的列有一个索引,MySQL能快速到达某个位置去搜寻数据文件...查询请求,查询中不包含子查询或者union查询....PRIMARY => 查询中任何复杂的查询中,最外层的查询语句,就是最后加载的语句. SUBQUERY => 子查询类型,在select或where列表中包含了子查询....rows 根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数,该值当然也是越小越好。 每张表有多少行被优化器查询。...[lyshark]> insert into phone(card) values(floor(1+(rand()*20))); * 10 -- 最简单的链接查询 MariaDB [lyshark

    2.3K20

    LAMP的搭建与MariaDB的基础使用

    + 8、tests —— PHP的测试脚本集合,包含PHP各项功能的测试文件。...所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。...(3) 第三范式(3NF) 第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。...5.唯一约束:unique 一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为NULL;一个表可以存在多个 6.检查约束:check 约束用于限制列中的值的范围。...索引:将表中的一个或多个字段中的数据复制一份另存,并且此些需要按特定次序排序存储; 关系运算: 选择:挑选出符合条件的行(部分); 投影:挑选出需要的字段; 连接: 用于把来自两个或多个表的行结合起来

    2.3K10

    MySQL笔记汇总

    内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb。...5.3 B树 结构特征:每个节点可包含多个子节点,叶子节点位于同一层(每个节点保存索引和数据) 使用用法:B树为磁盘预读设计,其特征相对于二叉树降低了高度,减少IO次数(树的高度等于IO次数) ?...select 的效率,但同时也降低了 insert 及 update 的效率(5) 尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销...但是对于行级别的事务是共享的,也就是说,一个意向锁可以被多个行级别的事务所持有。...乐观锁是一种更新前的检查机制,相对于悲观锁来说在多读场景下可以减少锁的性能开销,对于多写场景,乐观锁会一直进入已修改,重新读取,再次提交的循环,反而带来更多的资源消耗。

    99340

    MariaDB 使用简解

    MariaDB支持多种存储引擎,其中最常用的是InnoDB和MyISAM。InnoDB:InnoDB是MariaDB的默认存储引擎,它支持ACID事务、安全恢复和行级锁定。...操作插入数据INSERT INTO mytable (name, age) VALUES ('Alice', 25);查询数据SELECT * FROM mytable WHERE age > 20;更新数据...通过这种方式,可以实现更高的高可用性和故障恢复能力。多源复制:多源复制允许一个从数据库从多个主数据库接收数据。这样可以实现跨数据中心的数据同步和灾难恢复。2....分区表分区表是MariaDB的一项重要特性,它允许将大表分成多个小的物理分区,从而提高查询性能和管理效率。MariaDB支持多种分区类型,包括范围分区、列表分区、哈希分区和键分区等。3....动态列动态列允许在同一行中存储不同的列集合,适用于数据结构不固定的场景。MariaDB的动态列特性使得它在处理非结构化数据时更加灵活。

    33300

    MYSQL基础知识和案例分享

    INSERT操作只加隐式锁,不需要显示加锁。 B. UPDATE,DELETE在查询时,直接对查询用的Index和主键使用显示锁,其他索引上使用隐式锁。 C....S锁可以保证事务内查询存在的数据不会在 select和insert to child期间被其他事务删除。...2 三星系统three-star索引 一星:索引将相关的记录放到一起; 二星:索引中的数据顺序和查找中的排列顺序一致; 三星:索引中的列包含了查询中需要的全部列; 3 高性能的索引策略 正确的创建和使用索引是实现高性能查询的基础...诀窍在于要选择足够长的前缀以保证较高的选择性。 · 多列索引:当多个索引做相交操作时(AND条件),通常意味着需要一个包含所有相关列的多列索引,而不是多个独立的单列索引。...当多个索引做联合操作时(OR条件),需要耗费大量的CPU和内存在算法的缓存、排序和合并操作上,而优化器不会把这些计算到“查询成本”(COST)中, 优化器只关心随机页面读取。

    91920

    30 道 MySQL 面试题

    一个典型的互联网产品架构包含接入层、逻辑处理层以及存储层,其中存储层承载着数据落地和持久化的任务,同时给逻辑处理层提供数据查询功能支持。...关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。...关系型二维表的结构非常贴近现实世界,二维表格,容易理解。 支持复杂查询。可以用 SQL 语句方便的在一个表以及多个表之间做非常复杂的数据查询。 支持事务。...MariaDB 或其它的数据库。...视图是虚拟表,并不储存数据,只包含定义时的语句的动态数据。

    57220

    MySQL数据库基础

    所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合;一个数据库由多个表空间(Tablespace)构成。...在一个数据库中的表看起来像一个简单的电子表格 列 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。 行 一行(元组,或记录)是一组相关的数据,例如一条用户订阅的数据。...主键 主键是唯一的;一个数据表中只能包含一个主键;主键约束的列的值必须是非空 + 唯一的。...索引是对数据库表中一列或多列的值进行排序的一种结构。...对应操作 DDL CREATE:创建 DROP:删除 ALTER:修改 DML INSERT:向表中插入数据 DELETE:删除表中数剧 UPDATE:更新表中数据 SELECT:查询表中数据 DCL

    33130

    掌握了这30道MySQL基础面试题,我成了面霸

    正文共 8197 字,预计阅读时长 15 分钟 一个典型的互联网产品架构包含接入层、逻辑处理层以及存储层,其中存储层承载着数据落地和持久化的任务,同时给逻辑处理层提供数据查询功能支持。...关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。...关系型数据库的优势: 易于理解 关系型二维表的结构非常贴近现实世界,二维表格,容易理解。 支持复杂查询 可以用 SQL 语句方便的在一个表以及多个表之间做非常复杂的数据查询。...所以如果看到你公司用的是 MariaDB 不用怀疑,其实它骨子里还是 MySQL,学会了MySQL 也就会了 MariaDB。...视图是虚拟表,并不储存数据,只包含定义时的语句的动态数据。

    54020

    【MySQL】MariaDB Galera Cluster(mariadb10.1.22)部署

    一、Galera Cluster简介 1.1 galera cluster 介绍 Galera Cluster是MariaDB的一个双活多主集群,其可以使得MariDB的所有节点保持同步,Galera为...从MariaDB 10.1开始,在Galera Cluster中默认已经包含了wsrep API。...*表将不会复制,但是DDL语句会被复制的,因此创建用户将会被复制,但是insert into mysql.user…将不会被复制的。...● 在多主环境下LOCK/UNLOCK TABLES不支持,以及锁函数GET_LOCK(), RELEASE_LOCK()…。 ● 查询日志不能保存在表中,如果开启查询日志,只能保存到文件中。...● 由于集群是乐观的并发控制,事务commit可能在该阶段中止。如果有两个事务向在集群中不同的节点向同一行写入并提交,失败的节点将中止。

    2K40
    领券