学习进阶2:条件查询

DQL语言学习

进阶2:条件查询

语法:

	select 
		查询列表
	from
		表明
	where
		筛选条件;

分类:
一、按条件表达式筛选
条件运算符:>,<,=,<>(不等于),>=,<=
二、按逻辑表达式筛选
逻辑运算符

&&||!
andornot

&&/and:两个条件都为ture,结果为ture。反之为false。
||/or:只要有一方为ture,结果为ture。
!/not:如果连接的条件为false:结果为ture,反之为false。
三、模糊查询
like
between and
in
is null/is not null
#一、按条件表达式筛选
#案例1、查询工资大于12000的员工信息

SELECT
	salary
FROM
	employees
WHERE
	salary > 12000;

#案例2、查询部门编号不等于90好的员工名和部门编号

SELECT
	last_name,
	department_id
FROM
	employees
WHERE
	department_id <> 90;

#二、按逻辑表达式筛选
#案例一、查询工资在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;

#三、模糊查询
#1、like
/*
特点:
①一般和通配符搭配使用
通配符:
% 任意多个字符
如果对""进行模糊查询可以在在前面添加“\”转义
SQL语句支持使用 last_name LIKE '
KaTeX parse error: Expected group after '_' at position 1: _̲%' ESCAPE '’;格式语句转义。
*/
#案例一、查询员工中包含字符a的员工信息

SELECT
	*
FROM
	employees
WHERE
	last_name LIKE '%a%';
#案例二、查询员工名中第三个字符为n,第五个字符为l的员工和工资。
SELECT
	last_name,
	salary
FROM
	employees
WHERE
	last_name LIKE '__n_l%';
#案例三、查询员工中第二个字符为_的员工名

SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '_\_%';#使用“\”转义

SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '_$_%' ESCAPE '$';#escape'$'表示转义字符

#2、between and
/*
注意事项:
①使用between and可以提升语句简洁度
between and完全等价于>= <=,包含临界值
③前后临界值不要颠倒
*/
#案例一、查询员工编号在100到120之间的员工信息

SELECT
	*
FROM
	employees
WHERE
	employee_id BETWEEN 100 AND 120;

#3、in
/*
含义:判断某字段的值是否属于in列表中的某一项
①使用in提高语句简洁度
②in列表的值必须统一或兼容

*/
#案例一、查询员工工种编号是IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号

SELECT
	last_name,
	job_id
FROM
	employees
WHERE
	job_id IN ('IT_PROG','AD_VP','AD_PRES');

#错误
IN不支持通配符

SELECT
	last_name,
	job_id
FROM
	employees
WHERE
	job_id IN ('IT_PROG','AD_%');	

#4、is null
#案例一:查询没有奖金的员工名和奖金率

SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NULL;

#案例二:查询有奖金的员工名和奖金率

SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NOT NULL;

#补充:安全等于 <=>
#案例一:查询没有奖金的员工名和奖金率

SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct <=> NULL;

#案例二、查询工资为12000的员工信息

SELECT
	*
FROM
	employees
WHERE
	salary <=> 12000;

#比较is null<=>
#is null:仅仅可以判断null值,但可读性强,推荐使用
#<=>:null值和普通数值皆可判断,可读性低

#测试1:查询工资大于12000的员工姓名和工资

SELECT
	last_name,
	salary
FROM
	employees
WHERE 
	salary > 12000;

#测试2、:查询员工号为176的员工的姓名和部门号和年薪

SELECT
	CONCAT(last_name,first_name),
	department_id,
	salary * 12 * (1 + IFNULL(commission_pct,0)) AS 年薪
FROM
	employees
WHERE
	employee_id LIKE 176;

#测试3、选择工资不在5000到12000的员工的姓名和工资

SELECT
	CONCAT(last_name,first_name),
	salary
FROM
	employees
WHERE
	NOT(salary BETWEEN 5000 AND 12000);
	NOT(salary >= 5000 AND salary <= 12000);

#测试4、选择在20到50号部门工作的员工姓名和部门号

SELECT
	CONCAT(last_name,first_name),
	department_id
FROM
	employees
WHERE
	department_id BETWEEN 20 AND 50;

#测试5、选择公司中有奖金的员工的姓名工资和部门号

SELECT
	CONCAT(last_name,first_name),
	salary,
	department_id
FROM
	employees
WHERE
	commission_pct IS NOT NULL;

#测试6、选择员工姓名第三个字母是a的员工姓名

SELECT
	CONCAT(last_name,first_name)
FROM
	employees
WHERE
	last_name LIKE '__a%';

#测试7、选择姓名中有a和e的员工姓名

SELECT
	CONCAT(last_name,first_name)
FROM
	employees
WHERE
	CONCAT(last_name,first_name) LIKE '%a%e%';

#测试8、显示表中的manager_id 是100,101,110的员工姓名职位

SELECT
	CONCAT(last_name,first_name),
	salary
FROM
	employees
WHERE
	manager_id IN (100,101,1110);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值