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

MySQL必知必会汇总

<=10; 不匹配检查: :不是由供应商1003制造的所有产品 select vend_id,prod_name from products where vend_id 1003; select...between关键字匹配的范围中所有,包括指定的开始与结束; 空检查: 在一个中不包含时,称为包含空NULL; NULL 无,它与字段包含0,空字符串或者仅仅包含空格不同; 关键字:is...(_)通配符: 作用:只能匹配单个字符而不是多个字符; (_) mysql> select prod_id,prod_name from products where prod_name like '_...第9章:用正则表达式进行搜索 什么是正则表达式: 用来匹配文本的特殊字符集合 关键字:regexp(REGEXP) 基本字符匹配: 例1:检索prod_name包含文本1000的所有mysql>...,如果被匹配的文本在中出现,LIKE将不会找到它,相应的行也不被返回(除非使用通配符 -% _); ​ 而REGEXP在内进行匹配,如果匹配的文本在中出现,REGEXP将会找到它,相应的行将被返回

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

MySQL操作之数据查询语言:(DQL)(四-1)(单表操作)

(含头含尾) 一定区间内的数 IN(set) 显示在in列表中的,例:in(100,200) 两个数中的一个 查询商品价格是200或800的所有商品 SELECT * FROM product WHERE...BETWEEN AND) 显示在某一区间的(含头含尾) 查询商品价格在200到1000之间所有商品 SELECT * FROM product WHERE price >= 200 AND price...FROM 表名 WHERE 字段名 IS [NOT] NULL 查询grade为空的 SELECT id,name,grade FROM student WHERE grade IS NULL;..._%' --匹配(nam_e) 3.6 带AND关键字的多条件查询 假如含有多个AND关键字,条件都满足时,才会被查询出来 SELECT id,name,gender FROM student WHERE...’c002’所有商品的平均价格(AVG) SELECT AVG(price) FROM product WHERE category_id = 'c002' 查询商品的最大价格(MAX) SELECT

15710

mysql学习总结04 — SQL数据操作

,查询其班级名 通过学生表获取班级id,得到一个数据(一行一) 通过班级id获取班级名 mysql> select * from tbClass where id = (select class_id...>); 举例: 获取有学生的班级名 查询学生表中所有班级id,得到一数据(一多行) 通过班级id获取班级名 mysql> select name from tbClass where id in (...select class_id from tbStudent); 11.3 行子查询 行子查询:子查询结果是一行数据(一行多) 行元素:字段元素指一个字段对应的,行元素对应多个字段,多个字段合作一个元素参与运算称为行元素...mysql> select * from tbClass as c where exists(select stu_id from tbStudent as s where s.class_id =...all():不等于所有 mysql> select * from tbClass where id all(select class_id from tbStudent); id

5.1K30

MySQL必知必会总结

,用来表示一个特定的行 任意两行都不具有相同的主键值 每个行都必须具有一个主键值(主键不允许NULL) 2 Mysql简介 数据的所有存储、检索、管理和处理实际上是由数据库软件——DBMS(数据库管理系统...; # 匹配任何位置包含文本anvil的 # _ 只能匹配单个字符 select prod_id,prod_name from products where prod_name LIKE '_ ton_anvil...Like匹配整列,REGEXP是匹配中;可以通过BINARY关键字区分大小;匹配特殊字符前必须用\\为前导,即转义; # 搜索prod_name 包含文本 1000 的所有select prod_id...要保证所有联结都要有where子句,则MySQL将返回比想要的数据多得多的数据。...set cust_email = NULL where cust_id = 10005; # 为了删除某个,可设置它为NULL 删除数据,可使用DELETE语句,从表中删除特定的行,从表中删除所有

26830

B-Tree 索引类型详解

1.2 适合 B-Tree 索引的查询类型 全值匹配 和索引中的所有进行匹配,如查找姓名为 George Bush、1960-08-08 出生的客户。...只使用索引的第一,如查找所有姓氏为 Bush 的客户: mysql> explain select * from customer where last_name='Bush'\G*********...只匹配某一的开头部分,如查找所有以 B 开头的姓氏的客户,这里使用了索引的第一mysql> explain select * from customer where last_name like...查找所有姓氏在 Allen 和 Bush 之间的客户,这里使用了索引的第一mysql> explain select * from customer where last_name between...,并范围匹配另一 第一匹配,第二范围匹配,如查找姓氏为 Bush,名字以 G 开头的客户: mysql> explain select * from customer where last_name

46610

最完整的Explain总结,SQL优化不再困难

用于 primary key 或 unique key 的所有与常数比较时,所以表最多有一个匹配行,读取1次,速度比较快。...system是const的特例,表里只有一条元组匹配时为system mysql> EXPLAIN SELECT * FROM t1 WHERE id = 5; ref_or_null 当对普通二级索引进行等值匹配查询...> EXPLAIN SELECT * FROM s1 WHERE id = 5; 由于id的类型是INT,并且不可以存储NULL,所以在使用该的索引时key_len大小就是4。...ref 这一显示了在key列记录的索引中,表查找所用到的或常量,常见的有:const(常量),字段名(例:t1.id) ref展示的就是与索引列作等值匹配什么,比如只是一个常数或者是某个...key1作等值匹配的对象是一个常数,当然有时候更复杂一点: mysql> EXPLAIN SELECT * FROM t1 INNER JOIN t2 ON t1.id = t2.id; 可以看到对被驱动表

47720

MySQL 查询专题

但是,并非所有 DBMS 都支持这两种不等于操作符。如果有疑问,请参阅相应的 DBMS 文档。 SELECT语句有一个特殊的 WHERE 子句,可用来检查具有 NULL 。...❑ IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。 ❑ IN WHERE子句中用来指定要匹配的清单的关键字,功能与OR相当。...作为计算字段使用的成为相关子查询 select cust_email from customers where cust_id in (select cust_id from orders where...很少见, 看上去像对象 多行多 select * from 表1 别名1 , (select ... ) 别名2 where 条件 所谓的连接是有针对性的找出关联关系 全文搜索 用基于文本的搜索作为正则表达式匹配的更进一步的介绍...❑ 性能——通配符和正则表达式匹配通常要求 MySQL 尝试匹配表中所有行(而且这些搜索极少使用表索引)。因此,由于被搜索行数不断增加,这些搜索可能非常耗时。

5K30

SQL命令记录

1. sql 主要命令描述 所有 MySQL 命令的列表:注意,所有文本命令必须在一行的开头,并且以分号“;”结束 命令 缩写 命令说明 示例 ? ? “help”的同义词。 mysql> ?...mysql> exit go g 发送命令到 MySQL 服务器。 mysql> SELECT `id` FROM `table`g help h 显示该帮助信息。...确保某(或两个多个的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 FOREIGN KEY - 外键,保证一个表中的数据匹配另一个表中的的参照完整性。...SELECT * FROM Websites WHERE url LIKE '%oo%'; 案例三: # 选取 name 以一个任意字符开始,然后是 "oogle" 的所有客户 SELECT * FROM...SQL JOIN INNER JOIN:如果表中有至少一个匹配,则返回行 LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行

19120

mysql系列】细谈explain执行计划之“谜”

执行计划中各个代表具体含义解释如下: id: 查询的序号,包含一组数字,表示查询中执行select子句或操作表的顺序 1.id相同,执行顺序从上往下 2.id不同,id越大,优先级越高,越先执行 select_type...因为只匹配一行数据,所以如果将主键置于where列表中,mysql能将该查询转换为一个常量 3.eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。...简单查询不会出现该类型 4.ref:非唯一性索引扫描,返回匹配某个单独所有行,本质上也是一种索引访问,是使用普通索引或者唯一性索引的部分前缀,它返回所有匹配某个单独的行,可能会找多个符合条件的行,...因为只需匹配一行数据,所有很快。如果将主键置于where列表中,mysql就能将该查询转换为一个const。 ? where 语句中使用主键索引作为条件。...这可能是在 const 之外最好的连接类型了,简单的 select 查询不会出现这种 type。 ? id都是1,当id一样时,从上到下执行表。

87410

MySQL必知必会笔记(1)

服务 systemctl restart mysql.service distinct关键字 对查询的结果去重,注意不能部分使用DISTINCT,DISTINCT关键字应用于所有而不仅是前置它的 select...(包括0) _: 匹配单个任意字符 找到所有产品名以jet开头的产品 select prod_id,prod_name from products where prod_name like "jet%"...like "%anvil%"; 比如下方出现在搜索模式的中间,匹配所有以s开头e结尾的 select prod_name from products where prod_name like "s%...max() 返回某的最大 min() 返回某的最小 sum() 返回某之和 -- avg() AVG()返回products表中所有产品的平均价格 AVG()忽略为NULL...union all,匹配所有行 ,不取消重复行 select vend_id,prod_id,prod_price from products where prod_price <=5 union all

1.5K10

MySQL基础SQL编程学习1

字段名 FROM 表名 WHERE 字段名 BETWEEN 初始 AND 终止; /* ORDER BY 关键字用于对结果集按照一个或者多个进行排序。..." 中选取唯一不同的,也就是去掉 "country" 重复 mysql> select distinct country from websites; -- 比较运算符 mysql> SELECT...**/ mysql> SELECT * FROM websites WHERE id 1; /*显示不包括id=1的数据;*/ mysql> SELECT * FROM websites WHERE...:查询 emp 表中 SAL 中大于等于 1500 的小于 3000 的 mysql> SELECT * FROM emp WHERE sal between 1500 and 3000;...2.外连接就好像是为非基准表添加了一行全为空的万能行,用来与基准表中找不到匹配的行进行匹配,两个没有空的表进行左连接,左表是基准表,左表的所有行都出现在结果中,右表则可能因为无法与基准表匹配而出现是空的字段

4.6K20

面试造火箭,工作拧螺丝,MySQL索引工作原理知多少?

另外,由于我们使用的是 select * ,也就是查询表中的所有字段的,但是 name 索引树中只存有主键 id,无法满足要查询所有字段的需求,而所有字段的数据都是存放在主键 id 索引树上的,...在使用联合索引时,索引的每一只能做等值判断,因为 MySQL 会使用最左匹配原则进行匹配,也就是从索引最左边的开始连续匹配,在碰到范围查找时会停止匹配,如遇到 like、>、<、between 等范围查找...select name,age from user where name = 'BB' and age = 33; # 在使用联合索引时,会依次匹配name和age。...select name,age from user where age = 33; # 在使用联合索引时,由于联合索引的最左列为name,而我们在where条件中匹配的是age,因此不满足最左匹配原则...为什么 MySQL 要遵循最左匹配原则呢?这是因为 B+Tree 中,所有节点上的数据是有序的,当我们创建联合索引时,首先保证的是所有数据的第一是有序的,然后再保证第二、第三以及后面的列有序。

54130

mysql explain用法和结果的含义

这里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的集进行ORDER BY上,而不是GROUP BY上 Where used 使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户...const:表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次!...ref:对于每个来自于前面的表的行组合,所有匹配索引的行将从这张表中读取。 ref_or_null:该联接类型如同ref,但是添加了MySQL可以专门搜索包含NULL的行。...DISTINCT查询的所有,而不要额外搜索硬盘访问实际的表。...因为所有与a表中order_id=100的匹配记录都将会从b表获取。这是比较常见的联接类型。

1.5K10

mysql explain用法和结果的含义

const:表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次!...ref:对于每个来自于前面的表的行组合,所有匹配索引的行将从这张表中读取。 ref_or_null:该联接类型如同ref,但是添加了MySQL可以专门搜索包含NULL的行。...filtered 显示了通过条件过滤出的行数的百分比估计。 Extra 该包含MySQL解决查询的详细信息 Distinct:MySQL发现第1个匹配行后,停止为当前的行组合搜索更多的行。...const:表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次!...ref:对于每个来自于前面的表的行组合,所有匹配索引的行将从这张表中读取。 ref_or_null:该联接类型如同ref,但是添加了MySQL可以专门搜索包含NULL的行。

2.1K20

【云原生进阶之数据库技术】第一章MySQL-2.3-数据基本操作

select ename from emp where ename like '%O%'; 1.1.2 通配符 ”*“通配符:匹配任意列名 “_"通配符:匹配单个字符 “%”通配符:匹配任意字符...平均值 max 最大 min 最小 例: #查询book表中年龄最大的 select max(age) from book; 1.1.5 分组函数 将查询结果按某一或多分组...也就是 select 后面的所有中,没有使用聚合函数的,必须出现在 group by 后面。...表名 [where ]; delete from test; ## 删除所有记录 delete from test where pid==123; #删除id为123的这条记录。...2.3 update 更新记录 语法:update 表名 set 列名1 = 1,列名2 = 2,…[where 条件]; 参考链接 【数据库】 mysql的四种安装方式_mysql安装-CSDN

11010

实战讲解MySQL执行计划,面试官当场要了我

结果包含很多 1 各字段说明 1.1 id SELECT标识符。这是查询中SELECT的序列号,表示查询中执行select子句或者操作表的顺序。如果该行引用其他行的并集结果,则该可为NULL。...sg on e.sa1 between sg.1osal and sg.hisal; id不同,如果是子查询,id的序号会递增,id越大优先级越高,越先被执行 explain select * from...,从上往下顺序执行,在所有组中,id越大, 越先执行 exp1ain select * from emp e join dept d on e.deptno = d.deptno join salgrade...如果该表是未标记为const的第一个表,则通常不好,并且在所有其他情况下通常性能也非常糟糕。一般来说,可以通过添加索引来避免ALL,这些索引允许基于早期表中的常量值或从表中检索行。...1.4.9 ref 对于先前表中的每个行组合,将从该表中读取具有匹配索引所有行。

1.2K10

Explain详解与索引最佳实践

例如:在索引中选取最小,可以单独查找索引来完成,不需要在执行时访问表 mysql> explain select min(id) from film; ?...用于 primary key 或 unique key 的所有与常数比较时,所以表最多有一个匹配行,读取1次,速度比较快。...system是const的特例,表里只有一条元组匹配时为system mysql> explain extended select * from (select * from film where...7. key_len 这一显示了mysql在索引里使用的字节数,通过这个可以算出具体使用了索引中的哪些。...8. ref 这一显示了在key列记录的索引中,表查找所用到的或常量,常见的有:const(常量),字段名(例:film.id) 9. rows 这一mysql估计要读取并检测的行数

77420
领券