MySQL日记1

常用操作

单字段查询:
select 字段名 from 表名;

多字段查询:
select 字段名,字段名 from 表名;

所有字段查询:
select * from 表名;

起别名

select 字段名 as 别名 from 表名;

去重

select distinct 字段名 from 表名;

+号

1.做加法运算

select 数值+数值 直接运算
select 字符+数值 首先试图将字符转换为数值,成功则继续运行,否则转化为0,继续运行

select null+值 结果为null

concat函数
拼接在一起
select concat (字符1,字符2…)

ifnull函数
判断是否为null,是 则返回指定值,不是 则返回原本值

select ifnull (id,0) from 表名

isnull函数
判断是否为null,是 返回1,不是 返回0

进阶1:基础查询

/*

语法
select 查询列表 from 表名
类似于System.out.println(打印东西);

查询列表可以是:表中的字段,常量,常量值,表达式,函数
查询的结果是一个虚拟的表格

*/
#启用库
USE myemployees;

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

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

#3.1 查询表中的所有字段

SELECT `employee_id`,
`first_name`,
`last_name`,
`email`,
`phone_number`,
`job_id`,
`salary`,
`commission_pct`,
`manager_id`,
`department_id`,
`hiredate` 
FROM employees;

#3.2 查询表中的所有字段

SELECT * FROM employees;

#4.查询常量值
SELECT 100 ;

#5.查询表达式
SELECT 98*10;

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

#7.起别名

/*
1.便于理解
2.如果要查询的字段有重名的情况,使用别名可以区分
*/


#方法1
SELECT 87*19 AS 结果;
SELECT last_name AS,first_name ASFROM employees;
#方法2
SELECT last_name 姓 FROM employees;

SELECT salary AS "out put" FROM employees;

8.去重

#例子:查询员工表所有部门编号
SELECT department_id FROM employees;

SELECT DISTINCT department_id FROM employees;
  1. "+"号的作用
/*
java中 
1.运算符
2.连接符

mysql中
只有一个功能:运算符

select 28+32;两个操作数都为数值型,则做加法运算

select '2'+32; 其中有一方为字符型,则试图将字符型数值转换为数值型,如果从转换成功,则继续做加法运算

select 's'+32; 如果转换失败,则将字符型数值转换为0

select null+2; 只要其中一方为null,则结果为null
*/

#案例:查询员工名和姓连接成一个字段,并显示为姓名

# 错误 select last_name+first_name as 姓名 from employees;
SELECT CONCAT ('a','b','c') AS 结果;
SELECT CONCAT (last_name,first_name) AS 姓名 FROM employees;

#10.查看表的结构

DESC departments;

SELECT * FROM departments;

#11.

SELECT DISTINCT job_id FROM employees;

#12.显示出表employees的全部列,各个列之间用逗号链接,列头显示成 out_put

#ifnull 只能判断函数是否为空,IFNULL (commission_pct,0) 如果 commission_pct真的为null,返回0

SELECT 
	IFNULL (commission_pct,0) AS 奖金域 ,
	commission_pct
FROM
	employees;

#列中有 null

SELECT 
	CONCAT(`first_name`, ',' ,`last_name` , ',' ,`email`, ',' ,`commission_pct`)  AS "out_put" 
FROM 
	employees;

#进行改进

SELECT 
	CONCAT(`first_name`, ',' ,`last_name` , ',' ,`email`, ',' ,IFNULL (commission_pct,0))  AS "out_put" 
FROM 
	employees;
/*
进阶2:条件查询

语法:
select 
	查询类表
from
	表名
where
	筛选条件;
执行顺序:先进入表中,执行筛选,然后找到要查询的类表

筛选条件分类:
	1.按条件表达式筛选
		条件运算符:<大于   >小于   =等于   <>不等   >=    <= 
	2.按逻辑表达式筛选
		逻辑运算符:&与  ||或  !非
			    and   or    not
	3.模糊查询
		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.查询工资在1w到2w之间的员工名,工资,奖金

SELECT
	last_name,
	salary,
	commission_pct
FROM
	employees
WHERE
	salary>10000
AND
	salary<20000;


#4.查询部门编号不是在90到110之间的,或者工资高于15000的员工信息
SELECT
	*
FROM
	employees
WHERE
	department_id<=90 OR department_id>=110 OR salary>15000;
	


/*
模糊查询

like  
between and
in 
is null
is not null
*/

# like 

#1.查询员工名中包含字符a的员工信息

SELECT
	*
FROM
	employees
WHERE
	last_name LIKE '%a%';
#使用%,代表a的前后都可能有字符

#2.查询员工名中第三个字符为s,第五个为i的员工名和工资
SELECT
	last_name,
	salary
FROM
	employees
WHERE
	last_name LIKE '__s_i%';
	
#3.查询员工名中第二个字符为_的员工名

SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '_\_%';
# \_:  '\'为转义字符,




# between and(在。。。之间)

#1.员工编号在100-120之间的员工信息

SELECT 
	*
FROM
	employees
WHERE
	employee_id BETWEEN 100 AND 120;
	


# in
	
#查询员工的工种编号是 IT_PROG , AD_VP 中的一个的员工名和工种编号
 
SELECT
	last_name,
	job_id
FROM 
	employees
WHERE
	job_id IN ('IT_PROG' , 'AD_VP');
	

# is null

#没有奖金的员工名和奖金率

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



#安全等于' <=> ' ,一般意义上的等于

#可以判断null值


SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct <=> NULL;
	
#查询工资为12000的员工信息

SELECT
	*
FROM
	employees
WHERE
	salary<=>12000;
#查询员工号为176的员工姓名,部门号,年薪
SELECT
	last_name,
	department_id,
	salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM
	employees
WHERE
	employee_id = 176;
	
#选择工资不在5000到12000的员工的姓名和工资

SELECT
	last_name,
	salary
FROM
	employees
WHERE
	salary <=5000 OR salary>=12000;
	
#选择员工姓名第三个字母是a的员工姓名

SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '__a%';
	
	
SELECT
	*
FROM
	employees
WHERE
	first_name LIKE '%e';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值