Mysql--select基础查询
基本语法:select 查询列表 from 表名
查询列表可以是表中字段、常量值、表达式、函数;查询的结果是一个虚拟的表格。
注意:
①sql语言大小写不敏感
②关键字不能分行或略写
③一般书写方式为换行缩进
一、基础查询
1.经典查询(查询表中的字段)
①查询单个字段
select 字段1 from 表1;
②查询多个字段
select 字段1,字段2, . . .字段n from表1;
③查询所有字段(用“”表示所有字段或者用枚举所有的字段)
Select from 表1;
Select 字段1,字段2,字段3,...,字段last from 表1;
2.查询常量值
select 520;
select ‘chenzui’;
3.查询表达式
select 100/20;
4.查询函数
select version();
5.起别名
①方式1用as
Select 100/20 as “结果”;
②方式2 用” ”空格
Select 100/20 结果;
6.去重distinct
SELECT DISTINCT department_id FROM employees;
7.mysql中+的功能(运算符)
①两个都是数值型,做加法运算。Select 200+100;返回300。
②一个是字符型一个是数值型,将字符型转换为数值型,若能转换成功,则继续运算,转换失败,将字符型转换为0,继续运算。
Select “120”+120;返回240;select “120aaa”+120;返回240;select “aaa120”+120;返回120。
③一方是null,结果返回null。select null+100;返回null。
二、条件查询
语法:select 查询列表 from 表名 where 筛序条件;
1.按条件表达式筛选
简单条件运算符:>、<、=、 !=、<>、>=、<=
案例1 查询工资大于1000的员工信息
Select * from employees where salary>1000;
案例2 查询部门编号等于80,的员工名字和部门id
Select last_name,department_id from employees where department_id = 80;
2.逻辑表达式筛选
逻辑运算符
作用:用于连接条件表达式 && || ! and or not
and 或 && 两个条件都为true,结果为true,否者返回false
or 或 || 只有一个条件为true,结果为true,否者为false
not 或 ! 连接条件本身为true,结果为false,否者为true
案例 查询工资在10000-15000的员工名字和工资
Select last_name , salary from employees where salary>10000 and salary<15000;
3.模糊查询
like、between and 、in、is null
①like 一般和通配符搭配使用
通配符:‘%’任意多个,包括0个,’_’任意单个。
案例1 查询名字中包含”c”的员工信息
select * from employees where last_name like “%c%”;
案例2 查询名字以a开头第4个字母为z的员工信息
select * from employees where last_name like “a__z%”;
案例3 查询第二个字符为””的员工名字
select last_name from employees where laset_name like “$_%”;
②between and 可以使sql语句更简洁,包含临界值,两个临界值不能调换顺序
案例1 查询员工编号在150-200之间的员工信息
select * from employees where employee_id between 150 and 120;
select * from employees where employee_id >=150 and employee_id <=120;
③in 判断某段的值是否属于in列表中的某一项,提高了代码的简洁度,in列表的值必须一致或者兼容,in列表不支持通配符。
案例1 获取工种编号为aaa、bbb、ccc中一个的员工信息
select * from employees where job_id in(“aaa”,’bbb’,’’ccc);
select * from employees where job_id=”aaa” or job_id = “bbb” or job_id = “ccc”;
④=或者<>不能判断null值,is null和is not null 可以用于判断null值
案例1 查询没有奖金的员工信息
select * from employees where commission_pct is null;
⑤<=>安全等于
查询工资为10000的员工名字
Select last_name from employees where salary <=>10000;
⑥is null 和 <=>
is null:只可以判断null值,可读性较高
<=>:既可以判断null值,又可以判断普通数值,可读性较差。
三、常见函数
1、单行函数
①字符函数:length(获取字节个数)、concat(拼接字符串)、upper(转化成大写)、lower(转换为小写)、substring、instr(返回字符串第一次出现的索引,不存在返回0)、trim(去除前后空格)、lpad(用指定字符实现左填充)、rpad(用指定的字符实现右填充)、replace(替换)
②数学函数
Round():四舍五入
Ceil():向上取整
Floor():向下取整
Truncate():截断
Mod():取余,mod(a,b) : a-a/bb
③日期函数
NOW():返回当前日期加时间
Curdate():返回当前日期
Curtime():返回当前时间
Str_to_date(字符类型,日期类型): 将字符类型转换为日期类型
Date_format(日期类型,字符类型): 将日期类型转换为字符类型;
④流程控制函数
if函数:其效果类似于if else
Case函数用法一[类似于switch用法]
语法:
Case 要判断的字段或者表达式
When 常量1 then 要显示的值1或语句1;
When 常量2 then 要显示的值2或语句2;
When 常量3 then 要显示的值3或语句3;
…
Else 要显示的值n或者语句n;
End
Case函数用法二[类似于多重if]
语法:
Case
When 条件1 then 要显示的值1或语句1
When 条件2 then 要显示的值2或语句2
…
Else 要显示的值n或语句n
End
⑤其他函数
SELECT VERSION();
SELECT DATABASE();
SELECT USER();
2、分组函数(聚合函数、统计函数、组函数)
分类:
求和(sum)、avg(平均值)、max(最大值)、min(最小值)、count(计算个数)
特点:
①sum和avg一般处理数值型,max、min、count又可以处理任何类型
②分组函数都忽略null值
③可以和distinct搭配实现去重运算
④count()用于统计数量
⑤和分组函数一同查询的字段要求是group by后的字段
案例1
select sum(salary) avg(salary) min(salary) max(salary) count(salary) from employees;
案例2 函数的适用性
SELECT SUM(last_name) ,AVG(last_name) FROM employees; 返回值是0,0
案例3 忽略null值
SELECT
SUM(commission_pct) ,AVG(commission_pct),SUM(commission_pct)/35,SUM(commission_pct)/107 FROM employees;
案例4 和distinct结合使用 会自动去重
SELECT SUM(DISTINCT salary),SUM(salary) FROM employees;
案例5 count()的使用
SELECT COUNT(salary) FROM employees;
SELECT COUNT() FROM employees;
SELECT COUNT(1) FROM employees;
案例6 和分组函数一同查询的字段有限制
SELECT AVG(salary),employee_id FROM employees;
四、排序查询
语法:select 查询列表 from 表名 [where 筛选条件] order by 排序的字段或者表达式
1.排序函数的用法
①asc表示升序,可以省略,desc是降序
②order by可以支持单个字段、别名、表达式、函数、多个字段
③order by 子句在查询语句最后面,除了limit子句
2.案例
select * from employees order by salary desc;
select * from employees where department_id >= 100 order by department_id;
SELECT last_name , salary12(1+IFNULL(commission_pct,0)) FROM employees ORDER BY salary12(1+IFNULL(commission_pct,0));
SELECT last_name , salary12(1+IFNULL(commission_pct,0))AS "年薪" FROM employees ORDER BY '年薪';
SELECT department_id,AVG(salary) FROM employees GROUP BY department_id ORDER BY AVG(salary);
SELECT last_name,salary FROM employees ORDER BY last_name DESC ,salary ASC;
五、group by
语法:select 字段1,字段2,… from 表名 [where 筛选条件] group by 字段1,字段2,..[having 筛选条件 limit 分页条件];
查询列表必须来自分组的字段,保证逻辑的一致性。
使用方式:
①group by 和聚合函数配合使用得时候,分组后计算
Select avg(salary),last_name from employees group by department_id;
②与having配合使用得时候,分组后过滤;
Select department_id,min(salary) from employees group by department_id having salary>3000;
③group by中聚合函数同时和非聚合函数一起使用时,非聚合函数取第一个匹配到时的字段内容。
Mysql--select基础查询的更多相关文章
- mysql select语句查询流程是怎么样的
select查询流程是怎么样的 mysql select查询的数据是查询内存里面,如果没有查询的数据没有在内存,就需要mysql的innodb引擎读取磁盘,将数据加载的内存后在读取.这就体现了,mys ...
- MySQL select 子查询的使用
### 子查询 >where 这个值是计算出来的 >本质:`在 where 语句中嵌套一个子查询语句` ```sql /*============== 子查询 ============== ...
- MySQL select if 查询最后一个主键 id
查询最后一个主键id SELECT IF(MAX(id) IS NULL, 0, MAX(id)) AS maxid FROM users; 查询最小的主键id SELECT IF(MIN(id) I ...
- {MySQL的逻辑查询语句的执行顺序}一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析
MySQL的逻辑查询语句的执行顺序 阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SEL ...
- mysql基础查询语法
一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.group by子句通常和count( ...
- sql 基础练习 计算7天各个时间点的总和 group by order mysql一次查询多个表
SQL 基础练习 -- 创建数据库 CREATE DATABASE school CHARACTER SET UTF8; -- 使用数据库 USE school; -- id: 学生的id -- na ...
- mysql基础查询
#进阶1:基础查询/*语法:select:查询列表 from 表名; 类似于:System.out.println(打印的东西); 特点:1.查询列表可以是:表中的字段.常量值.表达式.函数2.查询的 ...
- Mysql高手系列 - 第7篇:玩转select条件查询,避免踩坑
这是Mysql系列第7篇. 环境:mysql5.7.25,cmd命令中进行演示. 电商中:我们想查看某个用户所有的订单,或者想查看某个用户在某个时间段内所有的订单,此时我们需要对订单表数据进行筛选,按 ...
- SEC5 - MySQL 查询语句--------------进阶1:基础查询
# 进阶1:基础查询 /* 语法: select 查询列表 from 表名: 特点: 1.查询列表可以是:表中的字段.常量值.表达式.表达式.函数 2.查询的结果是一个虚拟的表格 如何执行:执行谁,请 ...
- Mysql学习笔记(002)-基础查询
基础查询 # 进阶1:基础查询 /* 语法: select 查询列表 from 表名: 类似于:system.out.println(打印东西); 特点: 1.查询列表可以是:表中的字段,常量值,表达 ...
随机推荐
- myeclipse集成svn客户端
转载大神 https://blog.csdn.net/tandeng19901222/article/details/5979075
- clipboard JS(剪切板)的使用
引入js(根据路径需要修改url) <script src="lib/clipboard/clipboard.min.js" type="text/javascri ...
- OpenStack Ocata Telemetry 警告服务部署
下列操作在控制节点上进行: 1 准备条件 在配置OpenStack Telemetry服务之前,你必须创建数据库.服务凭证和API端点. 1.1 数据库 以root用户连接数据库服务器,创建glanc ...
- 如何从MYSQL官方YUM仓库安装MYSQL5.x 原理一样只要获取对的仓库依赖安装对的仓库依赖就ok了,我就是用这种安装的5.7
如何从MYSQL官方YUM仓库安装MYSQL5.6 2013年10月,MySQL开发团队正式宣布支持Yum仓库,这就意味着我们现在可以从这个Yum库中获得最新和最优版的MySQL安装包.本文将在一台全 ...
- react的setState使用中遇到的问题
setState()更新的数据和自己预期的不一致 对 React 新手来说,使用 setState 是一件很复杂的事情.即使是熟练的 React 开发,也很有可能因为 React 的一些机制而产生一些 ...
- 创作了一个xml的替代格式
xml格式: <?xml version="1.0" encoding="GB2312"?> <Relations> <Relat ...
- Keymob带你玩转新广告法下的移动营销
2015年9月1日新广告法正式实施,对广告代言人.广告类别.广告语等都做了一系列新规定,堪称有史以来最严广告法.随着新广告法的实施,以往一些庸俗.夸张的广告也逐渐和大众说再见了. 2015年 “互联网 ...
- javascript设计模式之中介者模式
/* * 小游戏演示中介者模式 * Home 按键 1 * Guest 按键 0 * 半分钟内看谁按下的次数多 * * 参与的对象: * 玩家 * 计分板 * 中介者 * * 中介者模式使对象之间松耦 ...
- 【extjs6学习笔记】1.13 初始: 模型
Ext JS包括数据包Ext.data包括处理从服务器保存和检索数据的类. 以下是Ext JS 6数据包中的重要类: Model (Ext.data.Model) Store (Ext.data.St ...
- linux 命令——42 kill (转)
Linux 中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以 使用Ctrl+C键,但是,对于一个后台进程 ...