表查询★★★★★

本文详细介绍了SQL查询中的单表查询、多表查询和子查询,涵盖了where条件、group by分组、having过滤、order by排序、limit限制及正则表达式查询。特别强调了在多表查询中如何使用子查询和联表操作,以及如何添加和删除数据库约束。
摘要由CSDN通过智能技术生成

### 单表查询

查询的时候,首先看是否关联和是否有未知的:
有关联且没有未知的:
				方法一:可以直接使用关联,
				方法二:可以使用子查询(通过关联id找)
有关联且是未知的(必须使用子查询):
				先把未知的求出来与原表进行关联
没有关联且是未知的:
				设置一个未知数,在求

首先看条件字段是否在一个表里,使不使用关联,再看有没有未知的,有未知的先求未知在与原表关联,没有未知用关联,或者子查询通过id
不得不子查询,如果有未知的(并且条件中字段在不同的表),先把未知的算出来作为一个表与原表型关联.如果有未知的,并且条件字段在一张表,不需要关联.
如果不是未知的可以直接连表,或者用子查询的时候先求关联id,然后通过id求值,最后合并,每一步都作为单表操作

sql 查询语句的完整语法:

"""select   字段 from .表   where .. group by(分组,分类) .. having(塞选) .. order by(排序) .. limit(条数) .."""
要看查询的是什么

一.where 条件的使用

	"""功能: 对表中的数据进行筛选和过滤"""

	"""
语法:
	1.判断的符号:
	= > >= < <= != <> 不等于
	2.拼接条件的关键字
	and or not
	3.查询的区间范围值 between
	between  小值  and 大值 [小值,大值] 查询两者之间这个范围内所有数据,左闭右闭区间
	4.查询具体某个值的范围 in  
	in(1,2,3) 指定范围
	5.模糊查询 like "%" "_" 通配符
		like "%a"  匹配以a结尾的任意长度的字符串
		like "a%"  匹配以a开头的任意长度的字符串
		like "%a%" 匹配含有a字母的任意长度的字符串
		like "_a"  个数一共2个字符,必须以a结尾,前面的字符随意
		like "a__" 个数一共3个字符,必须以a开头,后面的字符随意
"""

# (1) 单条件的查询
# 查询部门是sale的所有员工姓名:
select emp_name from employee where post = "sale";

# (2) 多条件的查询
# 部门是teacher , 收入大于10000的所有数据
select * from employee where post="teacher" and salary > 10000;

# (3) 关键字 between .. and ..  在什么之间
# 收入在1万到2万之间的所有员工姓名和收入
select emp_name,salary from employee where salary between 10000 and 20000;
# 收入不在1万到2万之间的所有员工姓名和收入
select emp_name,salary from employee where salary not between 10000 and 20000;

# (4) null 关键字 在查询的时候,要用is进行判定,不要用=
其他空的可以用等号
# 查询post_comment 是空的所有数据
select * from employee where post_comment = null;
select * from employee where post_comment = '';
select * from employee where post_comment is null;
select * from employee where post_comment is not null;

update employee set post_comment = "" where id = 1
select * from employee where post_comment = "";	

# (5) 关键字 in 在..之中 查询
# 查询收入是3000 ,4000 ,5000,8300 所有员工的姓名和收入
select emp_name,salary from employee where salary=3000 or salary=4000 or salary=5000 or salary=8300;
# 用in优化,在小括号里面具体指定某个值
select emp_name,salary from employee where salary in (3000,4000,5000,8300);
# 不在 not in ..
select emp_name,salary from employee where salary not in (3000,4000,5000,8300);

# (6) 模糊查询 like "%" "_" 通配符
# (1) "%" 通配符  以on结尾的员工名搜一下
select emp_name,age,post from employee where emp_name like "%on";
# (2) "_" 通配符 可以限定具体的长度
select emp_name,age,post from employee where emp_name like "a_e_";

# (7) concat (as 起别名)  拼接(将字段拼接)
select concat("姓名:",emp_name,"工资:",salary) as aa from employee;
# concat_ws(拼接的符号,参数1,参数2,参数3 ... )
select concat_ws(" : ",emp_name,salary) as bb from employee;
# 计算年薪 可以在mysql中使用四则运算符(+ - * /)
select concat_ws(" : ",emp_name,salary * 12) as cc from employee;
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值