MySQL的核心查询语句有哪些
MySQL是一款流行的关系型数据库管理系统,可用于存储、管理和检索数据。它是一个独立的数据库服务器软件,可安装在计算机或服务器上使用。在使用MySQL数据库的过程中我们通常且使用频率最高的就是数据查询了,那么MySQL的相关核心查询语句都有哪些呢?有需要的朋友可接着往下看。
框住的部分是本节重点
一、单表查询
1、排序
单列排序
asc升序(默认,可不写),desc降序
语法格式:
1 | SELECT 字段名 FROM 表名 [WHERE 字段 = 值] ORDER BY 字段名 [ASC / DESC] |
组合排序
同时对多个字段进行排序, 如果第一个字段相同就按照第二个字段进行排序,以此类推。
比如order by 字段1,字段2 desc—代表先按照字段1升序,再按字段2降序。
2、聚合函数
count(1)count(*)count(列名)的区别: count(1)和count(*)统计所有条数,包括null值; count(列名)统计所有不为null的条数。
3、分组
分组往往和聚合函数一起使用,对数据进行分组,分完组之后在各个组内进行聚合统计分析。 语法格式:
代码示例:
having的用法:
where 与 having 的区别:
having要放在where和分组之后
4、limit
语法格式:
参数说明: offset起始行数,从0开始记数,如果省略则默认为0。 length返回的行数。
1 2 3 4 5 6 | # 查询emp表中的前5条数据 SELECT * FROM emp LIMIT 5; SELECT * FROM emp LIMIT 0,5; # 查询emp表中从第4条开始,查询6条 -- 起始值默认是从0开始的 SELECT * FROM emp LIMIT 3,6; |
二、SQL约束
约束的作用: 对表中的数据进行进一步的限制,从而保证数据的正确性、有效性、完整性。 违反约束的不正确数据将无法插入到表中。注意:约束是针对字段的。
一般数据分析师对数据只是查询,基本没有创建修改表的权限,所以这块大家了解就好,不用纠结语法怎么写。在表结构中见到以下约束关键字,知道是对数据的约束就行了。
常见的四种约束
1、主键约束
特点:不可重复、唯一、非空
创建主键
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # 方式1 创建一个带主键的表 CREATE TABLE emp2( -- 设置主键 唯一 非空 eid INT PRIMARY KEY, ename VARCHAR(20), sex CHAR(1) ); -- 方式2 创建一个带主键的表 CREATE TABLE emp3( eid INT , ename VARCHAR(20), sex CHAR(1), -- 指定主键为 eid字段 PRIMARY KEY(eid) ); |
增加主键
1 2 | -- 创建的时候不指定主键,然后通过DDL语句进行设置 ALTER TABLE emp2 ADD PRIMARY KEY(eid); |
2、非空约束
3、唯一约束
4、外键约束
主键:数据表A中有一列,这一列可以唯一的标识一条记录。 外键:数据表A中有一列,这一列指向了另外一张数据表B的主键。
5、默认值
三、多表查询
数据分析师在实际工作中提取数据,不可能在一张表中就能把所有想要的数据都取到,而是关联多张表,从不同的表中拿到不同的目标数据,这就需要掌握表和表连接的知识了。这块非常重要!!!
1、内连接
**特点:**通过指定的条件去匹配两张表中的数据,匹配上就显示,匹配不上就不显示。
1)隐式内连接:
示例代码:
1 2 3 4 5 6 | SELECT p.pname, p.price, c.cname FROM products p , category c WHERE p.category_id = c.cid; |
2)显式内连接:
1 2 | SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 条件 -- inner 可以省略 |
示例代码:
1 2 3 | SELECT * FROM products p INNER JOIN category c ON p.category_id = c.cid; |
2、外连接
1)左外连接
特点: 以左表为基准,匹配右边表中的数据,如果匹配的上就展示匹配到的数据; 如果匹配不到,左表中的数据正常展示,右边的展示为null。
语法格式:
1 | SELECT 字段名 FROM 左表 LEFT [OUTER] JOIN 右表 ON 条件 |
示例代码:
1 2 3 4 | -- 左外连接查询 SELECT * FROM category c LEFT JOIN products p ON c.cid= p.category_id; |
2)右外连接
特点: 以右表为基准,匹配左边表中的数据,如果匹配的上就展示匹配到的数据; 如果匹配不到,右表中的数据正常展示,左边的展示为null。
语法格式:
1 | SELECT 字段名 FROM 左表 RIGHT [OUTER ]JOIN 右表 ON 条件 |
示例代码:
1 2 3 4 | -- 右外连接查询 SELECT * FROM products p RIGHT JOIN category c ON p.category_id = c.cid; |
各种连接方式的总结:
四、合并查询
1、UNION
UNION 操作符用于合并两个或多个SELECT语句的结果集,并消除重复行。 注意,UNION内部的SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。 同时,每条 SELECT 语句中的列的顺序必须相同。
代码示例:
1 2 3 4 5 6 7 | SELECT id,name,amount,date FROM customers LEFT JOIN orders on customers.Id = orders.customers_id UNION SELECT id,name,amount,date from customers RIGHT JOIN orders on customers.Id = orders.customers_id; |
注意:
1. 选择的列数必须相同;
2. 所选列的数据类型必须在相同的数据类型组中(如数字或字符);
3. 列的名称不必相同;
4. 在重复检查期间,NULL值不会被忽略;
2、UNION ALL
UNION ALL 运算符用于将两个 SELECT 语句的结果组合在一起,重复行也包含在内。 UNION ALL 运算符所遵从的规则与UNION一致。
总结: UNION和UNION ALL关键字都是将两个结果集合并为一个,也有区别。
1、重复值:UNION在进行表连接后会筛选掉重复的记录,而UNION All不会去除重复记录。
2、UNION ALL只是简单的将两个结果合并后就返回。
3、在执行效率上,UNION ALL 要比UNION快很多。因此,若可以确认合并的两个结果集中不 包含重复数据,那么就使用UNION ALL。
五、子查询
定义:一条select 查询语句的结果, 作为另一条select语句的一部分。
1、where型:
子查询的结果作为查询条件
1 | SELECT 查询字段 FROM 表 WHERE 字段=(子查询); |
代码示例:
1 2 | -- 查询价格最高的商品信息 SELECT * FROM products WHERE price = (SELECT MAX(price) FROM products); |
2、from型:
将子查询的结果作为一张表
1 | SELECT 查询字段 FROM (子查询)表别名 WHERE 条件; |
代码示例:
1 2 3 4 5 6 7 8 9 | -- 查询商品中,价格大于500的商品信息,包括商品名称、商品价格、商品所属分类名称 SELECT p.pname, p.price, c.cname FROM products p -- 子查询作为一张表使用时要起别名,才能访问表中字段 INNER JOIN (SELECT * FROM category) c ON p.category_id = c.cid WHERE p.price > 500; |
3、exists型:
子查询结果是单列多行
1 | SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询); |
代码示例:
1 2 3 4 | --查询价格小于2000的商品,来自于哪些分类 SELECT * FROM category WHERE cid in (SELECT DISTINCT category_id FROM products WHERE price < 2000); |
总结:
1. 子查询如果查出的是一个字段(单列),那就在where后面作为条件使用。 单列单行 = 单列多行 in
2. 子查询如果查询出的是多个字段(多列),就当做一张表使用(要起别名)。
六、MySQL函数
函数常用的就这些了,不用硬记,不会的百度查就行了,写着写着就记住了。
1、数学函数
2、字符串函数
3、日期和时间函数(必学)
4、条件判断函数(这个必须掌握!!!)
5、系统信息函数(可忽略)
版权声明:本文内容来自互联网,该文版权归原作者所有。本站仅提供信息存储空间服务,不拥有文章所有权,不承担相关法律责任。若对本内容有异议或投诉请与管理员联系 5604882#qq.com(请将#换成@)。