本节主要介绍查询语句(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相关推荐

  1. 大数据HiveSQL学习笔记三-查询基础语法以及常用函数

    大数据HiveSQL学习笔记三-查询基础语法以及常用函数 一.基础语法 1.SELECT -列名- FROM -表名- WHERE -筛选条件- 如:需要根据城市,性别找出匹配的10个用户 user_ ...

  2. mysql 加号的作用_MySQL学习笔记(一)

    MySQL学习笔记(一) 作者:易成勇 案例来源:AI技术前线 MySQL常用命令 1.查看当前所有数据库 show databases; 2.打开指定的库 use 库名 3.查看当前库的所有表 sh ...

  3. mysql没法修改数据_MySQL学习笔记之数据的增、删、改实现方法

    本文实例讲述了MySQL学习笔记之数据的增.删.改实现方法.分享给大家供大家参考,具体如下: 一.增加数据 插入代码格式: insert into 表明 [列名-] values (值-) creat ...

  4. mysql原生建立索引_MySQL学习笔记之索引

    索引是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但 ...

  5. mysql 查找相似数据_MySQL学习笔记之索引

    索引是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但 ...

  6. mysql传小马_Mysql 学习笔记

    1.关系型数据库 关系:由行和列组成的二维表 表:至少要有列,可以没有行. 列:是实体的属性. 数据模型:层次模型.网状模型.关系模型.非关系模型. DBMS:DataBase Mangenent S ...

  7. mysql 3.5安装_MYSQL学习笔记-06-搭建数据库

    文章内容输出来源:拉勾教育Java高薪训练营 1. 安装说明 基于Ubuntu Linux系统安装,MySQL版本是5.7.29. 安装方式是通过官网下载相应的tar.gz压缩包进行安装.这种方式需要 ...

  8. mysql行级安全_MySQL学习笔记(五):MySQL表级锁和行级锁

    一:概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking ...

  9. mysql悲观锁 更新_MySQL学习笔记(四)悲观锁 for update

    恼骚 最近在搞并发的问题,订单的异步通知和主动查询会存在并发的问题,用到了Mysql数据库的 for update 锁 在TP5直接通过lock(true),用于数据库的锁机制 Db::name('p ...

最新文章

  1. Apache MINA 2.0 用户指南
  2. linux下tar包追加与其他压缩追加方式
  3. 查看mysql SQL物理读_Oracle查看逻辑读、物理读资源占用排行的SQL语句
  4. php 去除字符前空格,php中删除字符串前导空格的函数是什么?
  5. Python pandas中DataFrame逐行读取的方法(pandas.core.frame.DataFrame类型)
  6. openldap 中文乱码问题
  7. mongodb java 开源_开源的Mongodb java client -- mango发布
  8. DE21 Convolution Formula
  9. swf文件格式解析(一)
  10. 【浏览器硬件交互篇】浏览器js调用摄像头拍照
  11. 解决libcrypto.so.1.0.0 动态库找不到的问题
  12. SIM卡电气特性详解
  13. 基于遗传算法的柔性车间调度优化(Matlab代码实现)
  14. 3966: 购物(sum)
  15. FFMPEG视频编码 NVIDIA 和 INTEL 硬件加速 x265 8bit 和 10bit
  16. 快捷方式图标小箭头刷新慢?百度网盘的锅---附“解除“百度网盘限速技巧(这次是百度网盘先动手的啊)
  17. hibernate的关联映射 (员工管理)
  18. 计算机C盘什么引用了,电脑老是显示c盘引用了一个不可用的位置 怎么处理
  19. [转]架构必备:Rate limiting 的作用和常见方式
  20. 微信开发(三)微信模板消息接口设计

热门文章

  1. linux内存报警,linux 邮件报警,监控内存cup
  2. linux mysql异地备份工具,Linux中MySQL的异地自动备份
  3. Oracle 坏块 总结
  4. 计算机程序设计 大作业 vb,成人《VB程序设计》标准化大作业(答案)1
  5. 电脑网络怎么添加计算机,Win10系统如何添加网络共享打印机
  6. servlet中doPost()和doGet()
  7. hrbp 牵着鼻子走_防止被下属牵着鼻子走的四个经典方法,学会了,下属就好管了...
  8. useradd或adduser命令
  9. 移动测试之-流量测试方案
  10. python基础--接口与归一化设计、封装、异常、网络编程