【Mysql数据库基础01】去重、连接字符、模糊查询、通配符、检索表的结构信息

时间:2024-03-21 18:16:07

去重、连接字符、模糊查询、通配符、检索表的结构信息

  • 1 去重 distinct
  • 2 连接字符函数 concat(str1,str2,...)
  • 3 模糊查询
    • 3.1 like 包含
    • 3.2 通配符
    • 3.3 between and
    • 3.4 in
    • 3.5 is null
  • 4 安全等于
  • 5 检索表的结构信息 desc
  • 6 课后练习

1 去重 distinct

使用 DISTINCT 关键字,可以从结果集中去除重复的行,只显示不同的值。

SELECT 
	DISTINCT department_id 
FROM 
	employees;

2 连接字符函数 concat(str1,str2,…)

str1, str2, ... 是要连接的字符串参数。可以将任意数量的字符串作为参数传递给 CONCAT() 函数,它将这些字符串连接在一起并返回结果。

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

3 模糊查询

3.1 like 包含

使用 LIKE 关键字结合通配符进行模糊查询,从而进行部分字符串匹配。
查询员工名里包含a的员工的所有信息。

SELECT 
	*
FROM
	employees
WHERE
	last_name LIKE '%a%';

3.2 通配符

  • %: 匹配任意字符,表示零个或多个字符。
  • _: 匹配单个字符。

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

SELECT
	last_name,salary
FROM
	employees
WHERE
	last_name LIKE '__e_a%';

3.3 between and

查询员工id在100到120之间的员工信息。

SELECT
	*
FROM
	employees
WHERE
	employee_id between 100 and 120;

3.4 in

在MySQL中,关键字和函数名不区分大小写,后面的博客为了方便我就一律用小写了。

查询员工id是IT_PORTAD_VPAD_PRES的名字和工种编号。

select
	last_name,job_id
from
	employees
where
	job_id in ('IT_PORT','AD_VP','AD_PRES');

3.5 is null

查询没有奖金的员工名。

select
	last_name
from
	employees
where
	commission_pct is null;

4 安全等于 <=>

没有奖金:

where commission <=> null;

工资为12000:

where salary <=> 12000;

安全等于<=>既可以判断空值,又可以判断普通的值。
is null仅仅只可以判断空值。

5 检索表的结构信息 desc

DESC 是一个用于描述表结构的 SQL 命令。

DESC table_name;

其中:

  • DESC 是用于检索表的结构信息的关键字。
  • table_name 是要查看表结构的表的名称。

执行 DESC table_name; 命令将返回有关指定表的结构信息,包括列名、数据类型、键信息等。例如,如果您想查看名为 employees 的表的结构信息,可以执行以下查询:

DESC employees;

执行这个查询后,将会返回表 employees 的结构信息。

6 课后练习

在这里插入图片描述
一、查询没有奖金,且工资小于18000的salary,last_name

select
	salary,last_name
from
	employees
where
	salary < 18000 and commission_pct is null;

二、查询employees表中,job_id不为 'IT’或者工资为12000的员工信息

select
	*
from
	employees
where
	job_id <> 'IT' or salary = 12000;

三、査看部门departments表的结构

desc departments;

四、查询部门departments表中涉及到了哪些位置编号

select
	distinct location_id
from
	employees;

五、试问select * from employees;和select * from employees where commission_pct like’%%’ and last name like ‘%%’
结果是否一样?并说明原因。
答:结果不一样,如果判断的字段有null值,后者不会查询到奖金率为0的情况;如果没有null值,查询的结果将是一样。