这里写目录标题
- 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 姓名
FROMemployees;
3 模糊查询
3.1 like 包含
使用 LIKE
关键字结合通配符进行模糊查询,从而进行部分字符串匹配。
查询员工名里包含a
的员工的所有信息。
SELECT *
FROMemployees
WHERElast_name LIKE '%a%';
3.2 通配符
%
: 匹配任意字符,表示零个或多个字符。_
: 匹配单个字符。
查询员工名中第三个字符为e
,第五个字符为a
的员工名和工资。
SELECTlast_name,salary
FROMemployees
WHERElast_name LIKE '__e_a%';
3.3 between and
查询员工id在100到120之间的员工信息。
SELECT*
FROMemployees
WHEREemployee_id between 100 and 120;
3.4 in
在MySQL中,关键字和函数名不区分大小写,后面的博客为了方便我就一律用小写了。
查询员工id是IT_PORT
,AD_VP
,AD_PRES
的名字和工种编号。
selectlast_name,job_id
fromemployees
wherejob_id in ('IT_PORT','AD_VP','AD_PRES');
3.5 is null
查询没有奖金的员工名。
selectlast_name
fromemployees
wherecommission_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
selectsalary,last_name
fromemployees
wheresalary < 18000 and commission_pct is null;
二、查询employees表中,job_id不为 'IT’或者工资为12000的员工信息
select*
fromemployees
wherejob_id <> 'IT' or salary = 12000;
三、査看部门departments表的结构
desc departments;
四、查询部门departments表中涉及到了哪些位置编号
selectdistinct location_id
fromemployees;
五、试问select * from employees;和select * from employees where commission_pct like’%%’ and last name like ‘%%’
结果是否一样?并说明原因。
答:结果不一样,如果判断的字段有null值,后者不会查询到奖金率为0的情况;如果没有null值,查询的结果将是一样。