目录
一、基础查询
语法:select 查询列表 from 表名;
特点:
①查询列表可以是:表中的字段、常量值、表达式、函数
②查询的结果是一个虚拟的表格
use employees;
#一、基础查询
#查询表中所有字段
select
*
from
employees;
#查询常量值
select 100;
#查询表达式
select 100%98;
#查询函数
select version();
二、条件查询
语法:
select 查询列表
from 表名
where 筛选条件;
【执行顺序为:from 表名 → where 筛选条件 → select 查询列表】
分类:
1、按条件表达式筛选
条件运算符: > < >= <= != = <=>
其中<=>为安全等于,与普通的=区别在于:安全等于<=>可以用于判定null,此时等价于IS NULL,普通的等于=不可以,安全等于的缺点在于可读性稍差。
2、按逻辑表达式筛选
逻辑运算符:
&& || !
and or not
3、模糊查询
like :一般和通配符搭配使用,%代表任意多个字符,包含0个字符,_表示任意单个字符,现在的版本也可用于匹配数字。
between and:相当于>=数A,<=数B,不可以调换顺序
in
is null 或者 is not null
#查询部门编号不是在90到110之间,或者工资高于15000的员工信息
select
*
from
employees
where
not(department_id >= 90 and department_id <= 110) or salary>15000
#转义字符:查询员工名中第二个字符为_的员工名
select
last_name
from
employees
where
last_name like '_\_%'
#以上的where语句也可以改成
where
lastname like '_$-%' escape '$'
三、补充:着重号和转义字符
遇到特殊字符,需用转义字符或者escape
起别名时,别名中有关键字和空格的时候应该加上双引号(建议),单引号也可以
查询的时候字段名为关键字的时候为了,不产生歧义字段名要加上 `` 区分
#案例:查询salary,显示结果为 out put
SELECT salary AS "out put" FROM employees;
#别名里面没有包含空格,和关键字的时候可以不加 "" ,有的话必须加上 ""。
#employees 表里面没有 name 属性这里是为了演示
#SQLyon 关键字会自动大写显示,虽然这样一样可以查询但是容易引起歧义
SELECT NAME FROM employees;
#正确的做法
SELECT `name` FROM employees;
四、补充:+号的作用
#+号的作用
/*
java中的+号:
①运算符,两个操作数都为数值型
②连接符,只要有一个操作数为字符串
mysql中的+号:
仅仅只有一个功能:运算符
select 100+90; 两个操作数都为数值型,则做加法运算
select '123'+90;只要其中一方为字符型,试图将字符型数值转换成数值型
如果转换成功,则继续做加法运算
select 'john'+90; 如果转换失败,则将字符型数值转换成0
select null+10; 只要其中一方为null,则结果肯定为null
*/
#案例:查询员工名和姓连接成一个字段,并显示为 姓名
SELECT CONCAT('a','b','c') AS 结果;
SELECT
CONCAT(last_name,first_name) AS 姓名
FROM
employees;
SELECT CONCAT('a','b',NULL) AS 结果;#NULL
SELECT CONCAT('a','b',IFNULL(NULL,0)) AS 结果;#ab0
注意:
CONCAT( , , , ..) 用于字符连接,里面是可变参数,当其中有一个元素为 NULL 的时候,结果为 NULL。
IFNULL(判断的值,为NULL的时候返回什么值)