数据库学习之基础查询语句

数据库之基础查询

一、基础查询

/*
语法:
select 查询列表 from 表名

1.查询列表可以是:表中的字段、常量、表达式、函数
2.查询的结果是一个虚拟的表格
*/
USE myemployees;

#1.查询表中的单个字段
SELECT last_name FROM employees;

#2.查询表中的多个字段
SELECT last_name,salary,email FROM employees;

#3.查询表中的所有字段,着重号``;
SELECT * FROM employees;

#4.查询常量值
SELECT 100;
#用单引号
SELECT 'john';

#5.查询表达式
SELECT 100*99;

#6.查询函数
SELECT VERSION();

#7.起别名
/*
1.便于理解
2.如果要查询的字段有重名的情况,使用别名可以区分
*/
#方式一
SELECT 100%98 AS 结果;
SELECT last_name AS 姓 ,first_name AS 名 FROM employees;

#方式二
SELECT last_name 姓,first_name 名 FROM employees;

#案例:查询salary, 显示结果为 out put 中有关键字,用双引号框住
SELECT salary AS "out put" FROM employees;

#8.去重 查询字段前加distinct
#案例:查询员工表中涉及的所有部门编号
SELECT DISTINCT department_id FROM employees;

#9.+号的作用
/*
只有 :运算符,两个操作数都为数值

select 100+99;两个数都为数值型,则做加法运算
select ‘123‘+90;其中一方为字符型,试图将字符型数值转换成数值型
		如果转换成功,则继续做加法运算
		失败,则将字符型转换为0
		只要其中一方为null,结果一定为null

*/
#案例:查询员工名和姓连接成一个字段,并显示为姓名
#碰到null值 可以用ifnull(可能为null的值,替换的值)来替换掉null;
SELECT CONCAT('a','b') AS 结果;

SELECT 
CONCAT(last_name,first_name )
AS 
	姓名
FROM 
	employees;

二、条件查询

/*
语法:
	select 
		查询列表
	from 
		表名
	where
		筛选条件;
分类:
	一、按条件表达式筛选 
	条件运算符:> 、<、 =、 <>或!= 、>= 、<=
	二、按逻辑表达式筛选
	逻辑运算符:
	作用:用于连接条件表达式
		&& || !
		and or not (mysql推荐)
	&& 和 and: 两个条件都为true,结果为true,反之为false
	

三、模糊查询
	like
	between and
	in 
	is null

*/ 

#一、按条件表达式筛选
#案例1:查询工资>12000 的员工信息
SELECT 
	*
FROM 
	employees
WHERE	
	salary>12000;
#案例2:查询部门编号不等于90号的员工名和部门编号
SELECT
	last_name,
	department_id
FROM 
	employees
WHERE
	department_id <> 90;
#二、按逻辑表达式筛选
#案例1:查询工资 在10000到20000之间的员工名、工资以及奖金
SELECT 
	last_name,
	salary,
	commission_pct
FROM 
	employees
WHERE
	salary>=10000
AND
	salary<=20000;
#案例二:查询部门编号不是在90到110之间,或者工资高于15000的员工信息
SELECT
	*
FROM
	employees
WHERE

department_id<90 and department_id>110 or salary >15000;

NOT(department_id>=90 AND department_id<=110) OR salary >15000;

#三、模糊查询
/*
like
特点:
1.一般和统配符搭配使用
	统配符:
	%:任意多个字符,包括0个
	_:任意单个字符
between and
in
is null|is not null
*/
#1.like
#案例1:查询员工名中包含字符a的员工信息
SELECT 
	*
FROM 
	employees
WHERE
	last_name LIKE '%a%';
#案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
SELECT
	last_name,
	salary
FROM 
	employees
WHERE
	last_name LIKE "__n_l%";
#案例3:查询员工名中第二个字符为_的员工名;
SELECT 
	last_name
FROM 
	employees
WHERE
	last_name LIKE'_$_%' ESCAPE '$';#ESCAPE指定转义符,默认为’\’;
#2.between and
/*
1.使用between and 可以提高语句的简洁度
2.包含临界值
3.两个临界值不要调换顺序
*/

#案例1:查询员工编号在100到120之间的员工信息
SELECT
	*
FROM
	employees
WHERE
	employee_id BETWEEN 100 AND 120;
	
#3.in
/*
含义:判断某字段的值是否属于in列表中的莫一项
特点:
	1.使用in 比使用or提高了语句简洁度
	2.in 列表的值类型必须统一或兼容
	3.不识别统配符
*/
#案例:查询员工的工种名编号是 ‘IT_PROG、AD_VP、AD_PRES’ 中的一个员工名和工种编号
SELECT 
	last_name,
	job_id
FROM
	employees
WHERE
	job_id='IT_PROG' OR job_id='AD_VP' OR job_id='AD_PRES';

#------------------------------------------------
SELECT 
	last_name,
	job_id
FROM
	employees
WHERE
	job_id IN ('IT_PROG' , 'AD_VP' , 'AD_PRES');
	
#4.is 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值,又可以判断普通的数值,可读性较低
*/
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值