二、数据查询语句(Data Query Language)

2020-06-13  本文已影响0人  牧_青

1、基础查询

1.1、基础查询

SELECT 查询列表 FROM 表名
-- 查询列表可以是:表中的字段,常量值,表达式,函数

# 查询字段(字段之间使用逗号隔开)
SELECT ${colume1}, ${colume2}... FROM ${table_name}
# 查询表中所有字段
SELECT * FROM ${table_name}

# 查询常量值
SELECT 100;
SELECT 'abc';
SELECT 100*9;

# 查询函数
SELECT ${function_name}();

1.2、起别名

# 起别名有两种方式
-- 使用关键字AS
-- 直接在字段值后面加上别名

# 方式一
SELECT ${colume1} AS ${alias_name1},  ${colume2} AS ${alias_name2}... FROM ${table_name};
-- example:
SELECT employee_id AS id, first_name AS name FROM employees;

# 方式二
SELECT ${colume1} ${alias_name1}, ${colume2} ${alias_name2}... FROM ${table_name};
-- example:
SELECT employee_id id, first_name name FROM employees;

1.3、去重

# 去重主要依靠关键字 DISTINCT
SELECT DISTINCT ${colume} FROM ${table_name};
-- example:
SELECT DISTINCT department_id FROM employees;

1.4、连接

# 连接主要依靠函数 concat()
SELECT concat(${colume1}, ${colume2}) FROM ${table_name};
-- example:
SELECT concat(first_name, ' ' ,last_name) AS name FROM employees;

/* 
  需要注意的是,
  当concat()参数中有为null的值,则返回值也为null
  可以使用IFNULL函数判断
  IFNULL(${colume, ${result}})
   ${colume}为可能为null的字段,${result}表示字段值为null时,希望输出的值
*/
/* 
 DQL中的连接不能使用加号+
 +只能用来表示加减法
*/
-- 如果+左右都是数值型,做加减法
-- 如果+两边有一个为字符型,将试图将字符型转换为数值型
   -- 如果成功,继续做加减法
   -- 如果失败,将字符型转为0,再做加减法
-- 如果一方为null,运算结果为null

2、条件查询

2.1、基本条件查询

# WHERE
SELECT ${colume} FROM ${table} WHERE 条件语句
-- example:
SELECT employee_id FROM employees WHERE salary>10000;

2.2 条件语句

* 1、条件查询
-- 小于 <
-- 大于 > 
-- 等于 = 
-- 不等于 != 或者 <> (推荐使用<>)
-- 大于等于 >= 
-- 小于等于 <=
-- 与  && 或者 and 
-- 或  || 或者 or
-- 非  ! 或者 not

-- 按条件查询
SELECT * FROM employees WHERE salary>12000;
-- 逻辑查询
SELECT last_name, salary, commission_pct FROM employees WHERE salary>=1000 AND salary<=2000;

# 需要重点注意的是:如果逻辑查询语句中出现了 or... or... and这样的筛选条件,使用括号和不使用括号的效果是不同的,例如下面两句(第一种甚至可以说是逻辑错误的):
SELECT * FROM employees WHERE commission_pct<>0.4 or commonsion_pct is null and department_id='10';
SELECT * FROM employees WHERE (commission_pct<>0.4 or commonsion_pct is null) and department_id='10';
# 1、LIKE
-- 通常与通配符搭配使用
    -- % 表示任意多个字符
    -- _  表示任意一个字符
    -- \ 给通配符进行转意(或者使用ESCAPE指定转意字符)
SELECT * FROM employees WHERE last_name LIKE '%A%';
SELECT * FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';

-- 2、BETWEEN AND
    -- 包含左右两端
    -- 左小右大
SELECT * FROM employees FROM employee_id BETWEEN 100 AND 200;
-- 3、IN
SELECT * FROM employees FROM job_id IN ('IT_PROT', 'AD_VP');

-- 4、IS NULL
    -- 不能使用 =null 或者 !=null
SELECT last_name FROM employees WHERE commission_pct IS NULL;

-- 5、安全等于<=>
     -- 可用表示为Null的值
     -- 可用于表示判断普通数值
SELECT last_name FROM employees WHERE commission_pct <=> NULL;

4、排序查询

4.1、数值排序

SELECT ${colume} FROM ${table_name} WHERE 筛选条件 ORDER BY 排序列表
# asc || desc 
    -- asc 升序
    -- desc 降序
    -- 默认升序
    -- 支持单个字段,多个字段,表达式,函数,别名
SELECT * FROM employees ORDER BY salary ASC, employee_id DESC;
上一篇 下一篇

猜你喜欢

热点阅读