ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2 DQL语言的学习

2021-05-04 19:33:23  阅读:154  来源: 互联网

标签:last 语言 employees 查询 学习 DQL null SELECT name


DQL语言的学习

基础查询

语法:

select 查询列表 from 表明;

查询列表可以是:表中的字段、常量值、表达式、函数

查询的结果是一个虚拟的表格

  1. 查询表中的单个字段
SELECT last_name FROM employees;
  1. 查询表中的多个字段
SELECT last_name,salary,email FROM employees;
  1. 查询表中的所有字段
SELECT * FROM employees;
  1. 查询常量值
SELECT 100;
SELECT 'john';
  1. 查询表达式
SELECT 100*98;
  1. 查询函数
SELECT VERSION();
  1. 起别名

    ①便于理解

    ②如果要查询的字段有重名的情况,使用别名可以区分开来

#方式一:使用as
SELECT 100%98 AS 结果;
SELECT last_name AS 性,first_name AS 名 FROM employees;

#方式二:使用空格
SELECT last_name AS 性,first_name AS 名 FROM employees;

#案例:查询salary,显示结果为 out  put
SELECT salary AS "out put" FROM employees;
  1. 去重
#案例:查询员工表中涉及到的所有的部门编号
SELECT DISTINCT department_id FROM employees;
  1. +号的作用

只有一个功能 : 运算符

​ select 100+90; 两个操作数都为数值型,则做加法

​ select ‘123’+90; 其中一个为字符型,它会试图字符型数值转换为数值型 。 如果转换成功,则继续做加法运算。

​ select ‘john’+90; 如果转换失败,则将字符型数值转换成0

​ select null + 90; 只要其中一方为null,则结果肯定为null

# 案例:查询员工名和姓连接成一个字段,并显示为 姓名  用函数CONCAT()
SELECT CONCAT(last_name,first_name) AS 姓名 FROM employees;

  1. 查询表结构
#查看部门department表的结构
SELECT department;
  1. ifnull 函数

功能:判断某字段或表达式是否为null,如果为null,返回指定的值,否则返回原本的值

SELECT IFNULL(commission_pot,0) FROM employees;

条件查询

语法:select

​ 查询列表

​ from

​ 表名

​ where

​ 筛选条件

分类:

  1. 按条件表达式筛选

    条件运算符 : > < = != <> >= <=

  2. 按逻辑表达式筛选

    作用:用于连接条件表达式

    逻辑运算符 : && || !

    ​ and or not

    && 和 and :两个条件都为true,结果为true,反之为false

    || 和 or :只有一个为true,结果为true,反之为false

    ! 和 not:只要连接的条件本身为false,结果为true,反之为false;

    1. 模糊查询

    like

    between and

    in

    is null

按条件表达式筛选

# 案例:查询工资>12000的员工信息
SELECT * FROM employees WHERE salary > 12000;

# 案例:查询部门编号不等于90号的员工名和部门
SELECT last_name,department_id FROM employees WHERE department_id <> 90;

按逻辑表达式筛选

# 案例:查询工资在10000到20000之间的员工名、工资以及奖金
SELECT last_name,salary,commission_pct FROM employees WHERE salary > 10000 AND salary <20000;

# 案例:查询部门编号不是在90到110之间,或者工资高于15000的员工信息
SELECT * FROM employees WHERE department_id<90 OR department_id>110 OR salary>15000;

SELECT * FROM employees WHERE NOT(department_id>=90 AND department_id<=110) OR salary>15000;

模糊查询

  1. like

特点:①一般和通配符搭配使用

​ 通配符:% 任意多个字符,包含0个字符,通配符不能用于null

​ _ 任意单个字符

# 案例:查询员工名中包含字符a的员工信息
SELECT * FROM employees WHERE last_name LIKE '%a%';
 
# 案例:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
SELECT last_name,salary FROM employees WHERE last_name LIKE '__e_a%';

# 案例:查询员工名中第二个字符为_的员工名
SELECT last_name FROM employees WHERE last_name LIKE '_$_%'ESCAPE '$';
  1. between and

​ ①可以提高语言的简洁度

​ ②包含临界值

​ ③两个临界值不要调换顺序

#案例:查询员工编号在100到120之间的员工信息
SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120;
  1. in

含义:判断某字段的值是否始于in列表中的某一项

特点:

​ ①使用in提高语句简洁度

​ ②in列表的值类型必须一致或兼容

​ ③不支持通配符

# 案例: 查询查询员工的工种编号是 IT_PROG AD_PRES中的一个员工名和工种编号
SELECT last_name,job_id FROM employees WHERE job_id IN('IT_PROG','AD_PRES','AD_VP');

  1. is null
  2. 功能:判断某字段或表达式是否为null,如果是返回1,不是返回0

=或 <> 不能用于判断null值

is null 或 is not null 可以判断null值

# 案例:查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees WHERE commission_pct IS NULL;

# 案例:查询有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees WHERE commission_pct IS  NOT NULL;
  1. 安全等于 <=>
# 案例:查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees WHERE commission_pct <=> NULL;

# 案例:查询工资为12000的员工信息
SELECT last_name,salary FROM employees WHERE salary <=> 12000;

is null 和 <=>

is null:仅仅可以判断null值,可读性较高

<=>:既可以判断null值,又可以判断普通的数值,可读性较低

排序查询

语法:

select 查询列表

from 表

where 筛选条件

order by 排序列表 (asc \ desc)

特点:

  1. asc代表的是升序, desc代表的是降序

    如果不写,默认是升序

  2. order by子句中可以支持单个字段、多个字段、表达式、函数、别名

  3. order by子句中一般是放在查询语句中的最后面,limit字句除外

# 案例: 查询员工信息,要求工资从高到低排序
SELECT * FROM employees ORDER BY salary DESC;

# 案例:查询部门编号>=90 的员工信息,按入职时间的先后进行排序
SELECT * 
FROM employees 
WHERE department>=90
ORDER BY hiredate;

#案例:按年薪的高低显示员工信息和 年薪 【按表达式排序】
SELECT *,salary*12*(1+IFNULL(commission_pot,0))年薪
FROM employees;
ORDER BY salary*12*(1+IFNULL(commission_pot,0))

#案例:按年薪的高低显示员工信息和 年薪 【按别名排序】
SELECT *,salary*12*(1+IFNULL(commission_pot,0))年薪
FROM employees;
ORDER BY 年薪 DESC;

# 案例:按姓名的长度显示员工的姓名和工资【按函数排序】
SELECT LENGTH(last_name) 字节长度,last_name,salary
FROM employees
ORDER BY LENGTH(last_name) DESC;

# 案例:查询员工信息,要求先按工资排序,再按员工编号排序【按多个字段排序】
SELECT *
FROM employees
ORDER BY salary ASC,employee_id DESC;

标签:last,语言,employees,查询,学习,DQL,null,SELECT,name
来源: https://www.cnblogs.com/flypigggg/p/14730089.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有