MySQL数据库学习2(SQLyog)
转载文章请注明出处
本节所需要的文件:
链接:https://pan.baidu.com/s/18ZmrHK8nzvG39y7rLz7d0w
提取码:2lxu
文件均出自B站尚硅谷相关学习视频,本节文件通过小海豚打开
一、DQL语言的学习(二)
学习内容:
其他知识点
(1)查询已知表的结构,使用关键字desc
举例:
DESC employees;
运行结果:
基础查询(补上一节知识点)
#拼接函数concat(后期学习函数,也会讲到)
(1)和c++语言类似,拼接均使用关键字concat
举例:
SELECt CONCAT ('a','b','c') AS 结果;
SELECT CONCAT (last_name,first_name) AS 姓名 FROM employees;
运行结果:
条件查询
语法:
select
查询列表
from
表名
where
筛选条件
分类:
一、按条件表达式筛选
条件表达式运算符:
< 、>、 =、 !=(不等于)、 <>(MySQL中的不等于)、 >=、 <=
#案例一
查询工资大于12000 的所有员工信息
SELECt
*
FROM
employees
WHERe salary > 12000 ;
运行结果:
#案例二
查询部门编号不等于90的员工的名和部门编号
SELECt
last_name,
department_id
FROM
employees
WHERe department_id <> 90 ;
运行结果:
二、按照逻辑表达式筛选
逻辑运算符:
&&、 ||、 !(同样适用)
and 、or 、not(是MySQL中的标准格式)
#案例一
查询工资在10000到20000之间的员工名、工资以及奖金
SELECt
last_name,
salary,
commission_pct
FROM
employees
WHERe salary >= 10000
AND salary <= 20000 ;
运行结果:
#案例二
查询部门编号不是在90到110之间,或者工资高于15000的与员工信息。
SELECt
*
FROM
employees
WHERe NOT (
department_id >= 90
AND department_id <= 110
)
OR salary > 15000 ;
运行结果:
三、模糊筛选
like、between and 、in 、is null 、is not null
#1.like
特点:
(1)可以和通配符一起使用
% 任意多个字符
_ 任意单个字符
#案例一
查询员工名中包含字符a的员工信息
SELECt
*
FROM
employees
WHERe last_name LIKE '%a%' ;
注意:字符一定要用单引号,并且含有a说明前后都可能有字符,所以前后都要有%
运行结果:
#案例二
查询员工名中的第三个字符为e,第五个字符为a的员工名和工资
SELECt
last_name,
salary
FROM
employees
WHERe '__e_a%' ;
#案例三
查询员工名中的第二个字符为_的员工名
SELECt
last_name
FROM
employees
WHERe last_name LIKE '_\_%' ;
注意:_作为通配符,可以使用\进行转译
运行结果:
#2.between and
特点:
(1)包含临界值
(2)and两端的值不能调换
#案例一
查询员工编号在100到120之间的员工信息
SELECt
*
FROM
employees
WHERe employee_id BETWEEN 100
AND 120 ;
运行结果:
#3.in
#案例一
查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
SELECt
last_name,
job_id
FROM
employees
WHERe job_id IN ('IT_PROG', 'AD_VP', 'AD_PRES') ;
运行结果:
#4.is null
#案例一
查询没有奖金的员工名和奖金率
SELECt
last_name,
commission_pct
FROM
employees
WHERe commission_pct IS NULL ;
运行结果:
注意:Tip:<=>为安全等于符号,既可以判断null值又可以判断普通值,相当于等于号但是可读性较差。
#测试题
#1.查询没有奖金,且工资小于18000的工资和员工名
SELECt
salary,
last_name
FROM
employees
WHERe commission_pct IS NULL
AND salary < 18000 ;
#2.查询employees表中,工种编号不为’IT’或者工资为12000的员工信息
SELECt
*
FROM
employees
WHERe job_id <> 'IT'
OR salary = 12000 ;
#3.查看部门departments表的结构
DESC departments;
#4.查询部门departments表中涉及到了哪些位置编号
SELECt DISTINCT
location_id
FROM
departments ;