当前位置:   article > 正文

MySQL数据查询语言(DQL)_mysql数据查询语言的缩写

mysql数据查询语言的缩写

1 概述

数据查询语言(Data Query Language):查询(SELECT)。

2 基础查询

语法:

SELECT
		查询列表
FROM
		表名;
  • 1
  • 2
  • 3
  • 4

注意:

  1. 查询列表可以是:表中的字段、常量值、表达式、函数
  2. 查询的结果是一个虚拟的表格

2.1 查询表中的单个字段

SELECT last_name FROM employees;
  • 1

2.2 查询表中的多个字段

SELECT last_name,salary,email FROM employees;
  • 1

2.3 查询表中的所有字段

SELECT * FROM employees;
  • 1

2.4 查询常量值

SELECT 100;

SELECT 'john';
  • 1
  • 2
  • 3

2.5 查询表达式

SELECT 100%98;
  • 1

2.6 查询函数

SELECT VERSION();
  • 1

2.7 起别名

SELECT 100%98 AS 结果;

SELECT last_name AS 姓,first_name AS 名 FROM employees;

SELECT last_name 姓,first_name 名 FROM employees;

SELECT salary AS 'out put' FROM employees;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.8 去重

案例:查询员工表中涉及到的所有的部门编号。

SELECT DISTINCT department_id FROM employees;
  • 1

2.9 +的作用

MySQL中+只能当做算数运算符。比如’123’+90会解析成123+90,‘john’+90会解析成0+90,null+10会解析成null。

2.10 字符串拼接

案例:查询员工名和姓连接成一个字段,并显示为姓名。

SELECT CONCAT(last_name,first_name) AS 姓名 FROM employees;
  • 1

3 条件查询

  语法:

SELECT
		查询列表
FROM
		表名
WHERE
		筛选条件;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.1 按条件表达式筛选

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

案例1:查询工资>12000的员工信息

SELECT
		*
FROM
		employees
WHERE
		salary>12000;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

案例2:查询部门编号不等于90号的员工名和部门编号

SELECT
		last_name,
		department_id
FROM
		employees
WHERE
		department_id<>90;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.2 按逻辑表达式筛选

逻辑运算符:&& || ! AND OR NOT

案例1:查询工资在10000到20000之间的员工名、工资以及奖金

SELECT
		last_name,
		salary,
		commission_pct
FROM
		employees
WHERE
		salary>=10000 AND salary<=20000;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

案例2:查询部门编号不在90到110之间,或者工资高于15000的员工信息

SELECT
		*
FROM
		employees
WHERE
		NOT(department_id<90 AND department_id>110) OR salary>15000;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.3 模糊查询

LIKE

通配符:

  • %:匹配任意多个字符。
  • _:任意单个字符。

案例1:查询员工名中包含字符a的员工信息。

SELECT
		*
FROM
		employees
WHERE
		last_name LIKE '%a%';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资。

SELECT
		last_name,
		salary
FROM
		employees
WHERE
		last_name LIKE '__e_a%';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

案例3:查询员工名中第二个字符为_的员工名。

SELECT
		last_name
FROM
		employees
WHERE
		last_name LIKE '_\_%';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

案例4:查询员工名中第一个字符为$的员工名。

SELECT
		last_name
FROM
		employees
WHERE
		last_name LIKE '_$%' ESCAPE '$';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

BETWEEN AND

注意:

  • 使用BETWEEN AND可以提高语句的简洁度。
  • 包含临界值。
  • 两个临界值不要调换顺序。

案例1:查询员工编号在100到1200之间的员工信息。

SELECT
		*
FROM
		employees
WHERE
		employees_id BETWEEN 100 AND 120;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

IN

判断某字段的值是否 属于IN列表中的某一项

特点:

  • 提高语句简洁度
  • 列表的值类型必须一致或兼容

案例1:查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号

SELECT
		last_name,
		job_id
FROM
		employees
WHERE
		job_id IN('IT_PROT','AD_VP','AD_PRES');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

IS NULL

注意:

  • =或<>不能用于判断NULL值。
  • IS NULL或IS NOT NULL可以判断NULL值。

案例1:查询没有奖金的员工名和奖金率。

SELECT
		last_name,
		commission_pct
FROM
		employees
WHERE
		commission_pct IS NULL;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.4 安全等于 <=>

<=>既能判断NULL值,又能判断普通数值。

案例1:查询没有奖金的员工名和奖金率。

SELECT
		last_name,
		commission_pct
FROM
		employees
WHERE
		commission_pct <=> NULL;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

案例2:查询工资为12000的员工信息。

SELECT
		last_name,
		salary
FROM
		employees
WHERE
		salary <=> 12000;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4 排序查询

注意:

  • ASC表升序,DESC表降序,默认升序。
  • ORDER BY子句中可以支持单个字段、多个字段、表达式、函数、别名。
  • ORDER BY子句一般式放在查询语句的最后面,limit子句除外。

语法:

SELECT
		查询列表
FROM
		表
WHERE
		筛选条件
ORDER BY
		排序条件 [ASC|DESC]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

案例1:查询员工信息,要求工资从高到低排序。

SELECT
		*
FROM
		employees
ORDER BY
		salary DESC;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

案例2:查询部门编号>=90的员工信息,按入职时间的先后排序

SELECT
		*
FROM
		employees
WHERE
		department_id>=90
ORDER BY
		hiredate ASC;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

案例3:按年薪的高低显示员工的信息和年薪(按表达式排序)

SELECT
		*,
		salary*12*(1+IFNULL(commission_pct,0))
FROM
		employees
ORDER BY
		salary*12*(1+IFNULL(commission_pct,0)) DESC;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

案例4:按年薪的高低显示员工的信息和年薪(按别名排序)

SELECT
		*,
		salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM
		employees
ORDER BY
		年薪 DESC;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

案例5:按姓名的长度显示员工的姓名和工资(按函数排序)

SELECT
		LENGTH(last_name),
		last_name,
		salary
FROM
		employees
ORDER BY
		LENGTH(last_name) DESC;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

案例6:查询员工信息,要求先按工资升序,再按员工编号降序(多字段排序)

SELECT
		*
FROM
		employees
ORDER BY
		salary ASC,
		employee_id DESC;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

5 常见函数

类似于Java中的方法,将一组逻辑语句封装在方法体中,对外暴露方法名。

好处:

  • 隐藏了实现细节。
  • 提高代码的重用性。

调用:

SELECT
		函数名([实参列表])
FROM
		表名;
  • 1
  • 2
  • 3
  • 4

5.1 单行函数

5.1.1 字符函数

LENGTH

获取参数值的字节个数。

在utf8中一个汉字占3个字节,在gb2312中一个汉字占两个字节。

CONCAT

拼接字符串。

SELECT
		CONCAT(last_name,'_',first_name) 姓名
FROM
		employees;
  • 1
  • 2
  • 3
  • 4
UPPER、LOWER

案例1:将姓变大写、名变小写,然后拼接。

SELECT
		CONCAT(UPPER(last_name),LOWER(first_name)) 姓名
FROM
		employees;
  • 1
  • 2
  • 3
  • 4
SUBSTR、SUBSTRING

截取子串

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/701176
推荐阅读
相关标签
  

闽ICP备14008679号