@爱学习的DUO
目录
第一章:数据库查看
note:采用myemployee库,其中包含4个表。
(1) 第一个表【employees】的信息;
USE myemployees;
--------------------------------------------
SELECT * FROM `employees` #查看【员工表】`employees`
/*
`employee_id` 员工编号
`first_name` 名
`last_name` 姓
`email` 邮箱
`phone_number` 电话号码
`job_id` 工种编号
`salary` 月薪
`commission_pct` 奖金率
`manager_id` 上级领导的员工编号
`department_id` 部门编号
`hiredate` 入职时间
*/
(2) 第二个表【departments】的信息;
SELECT * FROM `departments` #查看【部门表】`departments`
/*
`department_id` 部门编号
`department_name` 部门名称
`manager_id` 部门领导的员工编号
`location_id` 位置编号
*/
(3) 第三个表【locations】的信息;
SELECT * FROM `locations` #查看【位置表】`locations`
/*
`location_id` 位置编号
`street_address` 所属街道
`postal_code` 邮编
`city` 所在城市
`state_province` 州/省份
`country_id` 国家编号
*/
(4) 第四个表【jobs】的信息。
SELECT * FROM `jobs` #查看【工种表】`jobs`
/*
`job_id` 工种编号
`job_title` 工种名称
`min_salary` 最低工资
`max_salary` 最高工资
*/
第二章 :常用的命令
SHOW DATABASES; #查看有哪些数据库
USE myemployees;
SHOW TABLES FROM myemployees; #查看myemployees库中有哪些表
SELECT DATABASE(); #看目前所在的库(仓库)
DESC employees #查看表的结构
第三章:查询语言
3.1 基础查询
- 语法:select 查询列表 from 表;
- 注意:查询列表可以是表中的字段、常量值、表达式、函数;
- 查询的结果是一个虚拟的表格。
3.1.1 查询表中的单个字段
SELECT `last_name` FROM `employees`;
3.1.2 查询表中的多个字段
SELECT `last_name`,`salary`,`email` FROM `employees`;
3.1.3 查询表中的所有字段
SELECT * FROM `employees`;
SELECT e.* FROM `employees` e; #给表命名
3.1.4 查询常量值
SELECT 100;
SELECT 'john';
3.1.5 查询表达式
SELECT 100*98
3.1.6 查询函数
SELECT VERSION() #查看SQL的版本
3.1.7 起别名
SELECT first_name 姓,last_name 名 FROM `employees`
ex:查询salary,并把列名称显示为put put
SELECT salary put put FROM employees (报错)
SELECT salary 'put put' FROM employees (正确)
3.1.8 去重
ex:查询员工表中涉及的所有部门编号
SELECT DISTINCT department_id FROM employees
3.1.9 CONCAT()连接符
ex:查询员工名、员工姓,连接为1个字段,并显示为姓名
SELECT CONCAT(last_name,'',first_name) 姓名
FROM employees
3.1.10 ifnull()
- 语法: ifnull(),如果不为NULL,则保留原值。
- ex:如果奖金率为空值,则返回0。
SELECT IFNULL(commission_pct,0) 奖金率 FROM employees
3.2 条件查询
-
语法:
select 查询列表③
from 表名 ①
where 筛选条件②; -
note:
Ⅰ:按条件表达式: > < = != <> >= <=
Ⅱ:按逻辑表达式筛选:and or not
Ⅲ:模糊查询:like 、between and、in、is null
3.2.1 按条件表达式
(1)查询员工工资>12000的员工信息
SELECT * FROM employees WHERE salary>12000
(2)查询部门编号≠90的last_name、salary、commission_pct
SELECT
last_name,
department_id
FROM
employees
WHERE department_id <> 90
3.2.2 按逻辑表达式筛选(连接条件表达式)
Ⅰ: and —2个条件都为ture,结果才为ture;反之为false。
Ⅱ:or—只要有1个条件为ture,结果就为ture;
Ⅲ:not—如果连接的条件本身为false,结果为ture。
(1)查询工资在10000—20000的员工名、工资、奖金;
SELECT
last_name,
salary,
commission_pct
FROM
employees
WHERE salary > 10000 AND salary < 20000 ;
(2)查询部门编号不是在90—110之间,或者工资高于15000的员工信息;
SELECT *
FROM employees
WHERE NOT (department_id >= 90 AND department_id <= 110)
OR salary > 15000 ;
3.2.3 模糊查询
(1)LIKE
通配符 | 含义 |
---|---|
% | %表示任意多个字符,包含0个字符 |
_ | _表示任意单个字符 |
例1:查询员工名中包含字符a的【员工信息】
SELECT * FROM employees
WHERE last_name LIKE '%a%' #%表示一种通配符
例2:查询员工名中第3个字符为n,第5个字符为l的【员工名】和【工资】
SELECT last_name,salary FROM employees
WHERE last_name LIKE '__n_l%'
(2) BETWEEN AND
例1:查询【员工编号】在100—120之间的所有员工信息
SELECT * FROM employees
WHERE employee_id BETWEEN 100 AND 120;
note:
①between and包含临界值;
②两个临界值值不能颠倒顺序;
③等价于: >=100 and <=120。
(3)IN
例1:查询job_id是IT_PROG、AD_VP、ZL的员工名、工种编号
SELECT
job_id 工种编号,
last_name 员工名
FROM
employees
WHERE job_id IN ('IT_PROG', 'AD_VP', 'ZL')
(4)IS 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
例3:查询员工号为176员工的年薪
SELECT
employee_id,
salary,
salary * 12 * (1+ IFNULL(commission_pct, 0)) 年薪
FROM
employees
WHERE employee_id = 176
总结
1、顺序是:select XX from XX where XX