1.图形化界面客户端的使用
2.DQL语言的学习
DQL(Data Query Language):数据查询语言
① 基本查询
语法:
select + 查询列表 + from + 表名;
类似于: System.out.println(打印的东西);
特点:
1、查询列表可以是: 表中的字段、常量值、表达式、函数
2、查询的结果是一个虚拟的表格(不是真实存在的)
#进阶1: 基础查询
/*
语法:
select + 查询列表 + from + 表名;
类似于: System.out.println(打印的东西);
特点:
1、查询列表可以是: 表中的字段、常量值、表达式、函数
2、查询的结果是一个虚拟的表格(不是真实存在的)
*/
USE `myemployees`;
#1.查询表中的单个字段
SELECT last_name FROM employees;
#2.查询表中的多个字段
SELECT last_name,email,hiredate FROM employees;
#3.查询表中的所有字段
#方式一:
SELECT
`employee_id`,
`first_name`,
`last_name`,
`email`,
`phone_number`,
`job_id`,
`salary`,
`commission_pct`,
`manager_id`,
`department_id`,
`hiredate`
FROM
`employees` ;
#方式二:
SELECT * FROM `employees` ;
#4.查询常量值
SELECT 100;
SELECT 'john';
#5.查询表达式
SELECT 100*98;
#6.查询函数
SELECT VERSION();
#7.为字段起别名
/*
AS起别名的好处:
①便于理解,提高辨识度
②如果要查询的字段有重名的情况,使用别名可以区分
*/
#方式一: 使用AS
SELECT 100%98 AS 结果;
SELECT last_name AS 姓,first_name AS 名 FROM employees;
#方拾二: 使用空格
SELECT last_name 姓,first_name 名 FROM employees;
#案例: 查询salary,显示结果为 output
SELECT salary "out put" FROM employees;
#8.去重---DISTINCT
#案例: 查询员工表中涉及到的所有的部门编号
SELECT DISTINCT`department_id` FROM `employees`;
#9.+号的作用
/*
java中+号的作用:
①运算符,两个操作数都为数值型
②连接符,只要有一个操作数为字符串
mysql中+号作用:
仅仅只有一个功能: 运算符
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`;
#10.IFNULL()函数
#参数1为要判断的字段内容。参数2为如果为NULL,则转换为XXX。
SELECT IFNULL(`commission_pct`,0) FROM `employees`;
② 条件查询
#进阶2: 条件查询
/*
语法:
select
查询列表
from
表名
where(过滤)
筛选条件;
分类:
一、按条件表达式筛选
条件运算符: > < = !=(<>) >= <=
二、按逻辑表达式筛选
作用: 连接条件表达式
逻辑运算符:
&& || !
and or not
&& 和 and : 两个条件都为true,结果为true,否则为false
|| 和 or: 两个条件有一个为true,结果为true,否则为false
! 和 not: 如果连接条件本身为false,结果为true,反之为false
三、模糊查询
like
between and
in
is null 和 is not null
*/
#一、按条件表达式筛选
#案例1: 查询员工工资大于12000的员工信息
SELECT * FROM `employees` WHERE salary>12000;
#案例2: 查询部门编号不等于90号的员工名和部门编号
SELECT first_name,`department_id` FROM `employees` WHERE `department_id` != 90;
#二、按逻辑表达式筛选
#案例1: 查询工资在10000到20000之间的员工名、工资以及奖金
SELECT `first_name`,`salary`,`commission_pct` FROM `employees` WHERE `salary`>=10000 && `salary`<=20000;
#案例2: 查询部门编号不是在90到110之间的,或者工资高于15000的员工信息
SELECT * FROM `employees` WHERE !(`department_id`>=90 && `department_id`<=110 ) || `salary`>15000;
#三、模糊查询
/*
like
特点:①一般和通配符搭配使用
通配符:
% 任意多个字符,包含0个字符
_ 任意单个字符
between and
in
is null
*/
#1.like
#案例1: 查询员工名包含字符a的员工信息
SELECT * FROM `employees` WHERE `first_name` LIKE "%a%";
#案例2: 查询员工名中第三个字符为e,第五个字符为a的员工名和工资
SELECT `first_name`,`salary` FROM `employees` WHERE `first_name` LIKE "__e_a%"
#案例3: 查询员工姓中第二个字符为下划线的员工姓
SELECT `last_name` FROM `employees` WHERE `last_name` LIKE '_\_%';
#2.bewteen and
/*
①使用between and可以提高语句的简洁度
②包含临界值
③两个临界值不可颠倒顺序
*/
#案例1: 查询员工编号在100到120之间的员工信息
SELECT * FROM `employees` WHERE `employee_id` BETWEEN 100 AND 120;
#3.in
/*
含义: 判断某字段的值是否属于in列表中的某一项
特点:
①使用in提供语句简洁度
②in列表的值类型必须统一或兼容
③
*/
#案例1: 查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工姓和工种编号
SELECT `last_name`,`job_id` FROM `employees` WHERE `job_id`IN('AD_PRES','AD_VP','IT_PROG');
#4.is null 和 is not null
/*
=或<>不能用于判断null值
is null 或 is not null 可以判断null值
*/
#案例1: 查询没有奖金的员工名和奖金率
SELECT `last_name`,`commission_pct` FROM `employees` WHERE `commission_pct`IS NULL;
#案例2: 查询有奖金的员工名和奖金率
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;
#案例2: 查询工资为12000的员工名和工资
SELECT `last_name`,`salary` FROM `employees` WHERE `salary`<=> 12000;
#is null PK <=>
/*
is null: 仅仅可以判断null值,可读性高(推荐使用)
<=>: 既可以判断null值,又可以判断普通数值,可读性较低
*/