1、SQL学习:基础查询and条件查询

@爱学习的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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值