mysql 去重后拼接_mysql学习笔记(三)—— 查询select
本节主要介绍查询语句(select),包括基础查询、条件查询、模糊查询,以及一些常用函数包括:去重函数distinct、字符拼接函数concat、null判断函数ifnull。
内容都是自己学习后从SQLyog上摘抄下来的,需要sql文件的朋友可以私发,自己弄到SQLyog跑一跑就行。
/*
一. 基础查询的语法:
Select 查询列表 from 表名;
其中:
查询列表就是查询的对象,一定要先明确查询的对象是什么
特点:
(1)查询列表可以是:表中的字段、常量值、表达式、函数等
(2)查询的结果是一个虚拟的表格
*/
1. 查询字段
查询表中的单个字段
SELECT last_name FROM employees;
查询表中的多个字段(以逗号隔开)
SELECT last_name,salary,email FROM employees;
查询表中所有字段
SELECT * FROM employees;
2. 查询常量值
SELECT 100;
SELECT 'join';
3. 查询表达式
SELECT 100%98;
4. 查询函数(获取函数返回值)
SELECT VERSION();
5.起别名
/*
起别名的好处:
(1) 便于理解
(2) 如果要查询的字段有重名的情况,起别名可以更好的区分
*/
方式一:(使用AS)
对表达式起别名
SELECT 100%98 AS 结果;
SELECT last_name AS "姓",
first_name AS "名"
FROM employees;
方式二:(直接接别名,省略AS)
SELECT last_name "姓",first_name "名" FROM employees;
注意:字符最好加上双引号(或单引号),如果不加的话,当别名中含有一些特殊字符如井号和空格时会出问题
6. 去重
如:查询员工表中涉及到的所有部门编号
#去重前
SELECT department_id FROM employees;
#去重后
SELECT DISTINCT department_id FROM employees;
7. 加号(+)的作用
/*
mysql中的”+“只有一个功能:运算符
select 50+90; (140) 两个操作数为数值型,则做加法运算
select "50"+90; (140)其中一方为字符型,则运算会试图将字符型转化为数值型,
如果转换成功,则为数值型相加
select "john"+90; (90)如果转换失败,则字符型转换为数值0用作计算
select null+90; (null)只要有一方为null,则运算结果一定为null
*/
字符拼接函数CONCAT(str1,str2,…)
SELECT CONCAT("a","b","c") AS 结果;
案例1:查询员工名和姓连接成一个字段,并显示为”姓名“
SELECT CONCAT(last_name," ",first_name) AS 姓名 FROM employees;
案例2:显示出表employees的全部列,各个列之间用逗号连接,列头显示成out_put
/*
分析:
(1)各个列用逗号连接:concat
(2)列头显示为out_put:起别名
*/
SELECT
CONCAT(employee_id,",",first_name,",",last_name,",",phone_number,",",`commission_pct`) # 这里不写完了
AS out_put
FROM employees;
结果很多为null,原因在于commission_pct中有很多值为null,只要有一个为null,拼接结果必为null。所以要使用ifnull()函数判断是否为null并将null转化为数值0进行计算
先来试一下ifnull的作用:
SELECT IFNULL(commission_pct,0) AS output FROM employees;
案例2正确写法
SELECT
CONCAT(employee_id,",",first_name,",",last_name,",",phone_number,",",IFNULL(commission_pct,0))
AS out_put
FROM employees;
/*
二. 条件查询
语法:
select
查询列表
from
表名
where
筛选条件;
分类:
1. 按条件表达式筛选:、=、!=、 <>(不等于) 、<=,>=
2. 按逻辑表达式筛选(用于连接条件表达式):&&(and)、||(or)、!(not)
3. 模糊查询:like、between and、in、is null
*/
案例1:查询工资大于12000的员工信息
SELECT * FROM employees WHERE salary>12000;
案例2:查询部门编号不等于90的员工名和部门编号
SELECT
last_name,department_id
FROM employees
WHERE department_id <> 90;
案例3:查询工资在10000到20000之间的员工名、工资以及奖金
SELECT
last_name,salary,commission_pct
FROM
employees
WHERE
salary>=10000 AND salary<=20000;
案例4: 查询部门编号不在90-110之间,或者工资高于15000的员工信息
SELECT
*
FROM
employees
WHERE
department_id>110 OR department_id <90 OR salary>15000;
三:模糊查询
主要关键字:
like
between and
in
is null 、is not null
1.like
特点:
(1)一般和通配符搭配使用,通配符**%**表示任意多的字符,通配符_(下划线)表示任意单个字符
*/
案例1:查询员工名中包含字符a的员工信息(这里的包含并不是精确匹配,只要包含就行,所以是模糊匹配)
SELECT
*
FROM
employees
WHERE
last_name LIKE "%a%";
案例2:查询员工名中第三个字符为s,第五个字符为i的员工名和工资
SELECT
last_name,salary
FROM
employees
WHERE
last_name LIKE "__s_i%";
#案例3:查询员工名中第二个字符为下划线_的员工名
SELECT
last_name
FROM
employees
WHERE
last_name LIKE "_\_%"; # \为转义字符
#last_name LIKE "_$_%" escape '$';
这里可以使用任意字符来充当转义符,只要在后面用escape指明即可
2. between and
案例3:查询工资在10000到20000之间的员工名、工资以及奖金
SELECT
last_name,salary,commission_pct
FROM
employees
WHERE
salary>=10000 AND salary<=20000;
SELECT
last_name,salary,commission_pct
FROM
employees
WHERE
salary BETWEEN 10000 AND 20000;
注意:between and 中间的数值不能随意交换位置
3. in
/*
含义:判断某字段的值是否属于in列表中的某一项
特点:
(1)提高语句简介度
(2)in列表内的值类型要一致或兼容
*/
案例:查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的一个的员工名和工种编号
SELECT
last_name,job_id
FROM
employees
WHERE
job_id ='IT_PROG' OR job_id='AD_VP' OR job_id='AD_PRES';
SELECT
last_name,job_id
FROM
employees
WHERE
job_id IN('IT_PROG','AD_VP','AD_PRES');
4. is null
案例:查询没有奖金的员工名和奖金率
SELECT
last_name,commission_pct
FROM
employees
WHERE
commission_pct IS NULL; # 不能用”= null“,=或<>不能用于判断null值
#commission_pct IS NOT NULL; # 判断不为NULL的值
补充
安全等于: <=>
用法: 既可以判断一般数值,也可以判断null
缺点:可读性较差
SELECT
last_name,commission_pct
FROM
employees
WHERE
commission_pct <=> NULL;
练习:查询员工号为176的员工的姓名、部门编号以及年薪
分析:注意年薪的计算包括奖金以及奖金率中包含空值
SELECT
last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM
employees
WHERE
employee_id=176;
mysql 去重后拼接_mysql学习笔记(三)—— 查询select相关推荐
- 大数据HiveSQL学习笔记三-查询基础语法以及常用函数
大数据HiveSQL学习笔记三-查询基础语法以及常用函数 一.基础语法 1.SELECT -列名- FROM -表名- WHERE -筛选条件- 如:需要根据城市,性别找出匹配的10个用户 user_ ...
- mysql 加号的作用_MySQL学习笔记(一)
MySQL学习笔记(一) 作者:易成勇 案例来源:AI技术前线 MySQL常用命令 1.查看当前所有数据库 show databases; 2.打开指定的库 use 库名 3.查看当前库的所有表 sh ...
- mysql没法修改数据_MySQL学习笔记之数据的增、删、改实现方法
本文实例讲述了MySQL学习笔记之数据的增.删.改实现方法.分享给大家供大家参考,具体如下: 一.增加数据 插入代码格式: insert into 表明 [列名-] values (值-) creat ...
- mysql原生建立索引_MySQL学习笔记之索引
索引是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但 ...
- mysql 查找相似数据_MySQL学习笔记之索引
索引是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但 ...
- mysql传小马_Mysql 学习笔记
1.关系型数据库 关系:由行和列组成的二维表 表:至少要有列,可以没有行. 列:是实体的属性. 数据模型:层次模型.网状模型.关系模型.非关系模型. DBMS:DataBase Mangenent S ...
- mysql 3.5安装_MYSQL学习笔记-06-搭建数据库
文章内容输出来源:拉勾教育Java高薪训练营 1. 安装说明 基于Ubuntu Linux系统安装,MySQL版本是5.7.29. 安装方式是通过官网下载相应的tar.gz压缩包进行安装.这种方式需要 ...
- mysql行级安全_MySQL学习笔记(五):MySQL表级锁和行级锁
一:概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking ...
- mysql悲观锁 更新_MySQL学习笔记(四)悲观锁 for update
恼骚 最近在搞并发的问题,订单的异步通知和主动查询会存在并发的问题,用到了Mysql数据库的 for update 锁 在TP5直接通过lock(true),用于数据库的锁机制 Db::name('p ...
最新文章
- Apache MINA 2.0 用户指南
- linux下tar包追加与其他压缩追加方式
- 查看mysql SQL物理读_Oracle查看逻辑读、物理读资源占用排行的SQL语句
- php 去除字符前空格,php中删除字符串前导空格的函数是什么?
- Python pandas中DataFrame逐行读取的方法(pandas.core.frame.DataFrame类型)
- openldap 中文乱码问题
- mongodb java 开源_开源的Mongodb java client -- mango发布
- DE21 Convolution Formula
- swf文件格式解析(一)
- 【浏览器硬件交互篇】浏览器js调用摄像头拍照
- 解决libcrypto.so.1.0.0 动态库找不到的问题
- SIM卡电气特性详解
- 基于遗传算法的柔性车间调度优化(Matlab代码实现)
- 3966: 购物(sum)
- FFMPEG视频编码 NVIDIA 和 INTEL 硬件加速 x265 8bit 和 10bit
- 快捷方式图标小箭头刷新慢?百度网盘的锅---附“解除“百度网盘限速技巧(这次是百度网盘先动手的啊)
- hibernate的关联映射 (员工管理)
- 计算机C盘什么引用了,电脑老是显示c盘引用了一个不可用的位置 怎么处理
- [转]架构必备:Rate limiting 的作用和常见方式
- 微信开发(三)微信模板消息接口设计
热门文章
- linux内存报警,linux 邮件报警,监控内存cup
- linux mysql异地备份工具,Linux中MySQL的异地自动备份
- Oracle 坏块 总结
- 计算机程序设计 大作业 vb,成人《VB程序设计》标准化大作业(答案)1
- 电脑网络怎么添加计算机,Win10系统如何添加网络共享打印机
- servlet中doPost()和doGet()
- hrbp 牵着鼻子走_防止被下属牵着鼻子走的四个经典方法,学会了,下属就好管了...
- useradd或adduser命令
- 移动测试之-流量测试方案
- python基础--接口与归一化设计、封装、异常、网络编程