MySQl查询语句

                                                                                 mysql查询语句

在进行查询前,最好先使用USE进行文件打开操作,即使在当前目录下

USE myemployees;

本文sql表文档,有需要的可以下载:

文档:myemployees.sql
链接:http://note.youdao.com/noteshare?id=e129d4401772cbbf25dbc91fcb0aab44

目录

条件筛选

排序查找

常见函数

数学函数

日期函数

其他函数

流程控制函数



#  查询单个字段
SELECT last_name FROM employees;

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

#  查询表中的所有字段
SELECT * FROM employees;

#  查询常量值
SELECT 100;

#  查询表达式,起别名
SELECT 100*98 as 结果;

#  查询函数
SELECT VERSION();

#  查询salary,显示的结果为out_put
SELECT salary as "out_put" FROM employees;

#  去重,查询员工表中所有涉及到的部门编号
SELECT DISTINCT department_id FROM employees;

#  显示出表employess的全部列,各个列之间用逗号连接,列头显示成out_put
SELECT CONCAT(first_name,",",last_name,",",job_id,",",IFNULL(commission_pct,0)) as out_put FROM employees;

条件筛选

#  查询工资>12000的员工信息
SELECT * FROM employees WHERE salary>12000;

#  查询部门编号不等于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;

#  查询员工中包含字符a的员工信息
SELECT * FROM employees
WHERE last_name LIKE '%e%';

#  查询员工名中第3个字符为n,第5个字符为l的员工名和工资
SELECT last_name,salary FROM employees
WHERE last_name LIKE '__n_l%';

#  查询员工名中第2个字符为_的员工
SELECT last_name FROM employees
WHERE last_name LIKE '_\_%';

#  查询员工编号在100和120之间的员工信息
SELECT * FROM employees
WHERE employee_id BETWEEN 100 and 120;

#  查询员工编号是it_prog,hd_vp,ad_pres中的员工名和工种编号
SELECT last_name,job_id FROM employees
WHERE job_id in ('IT_PROG','AD_VP','AD_PRES');

#  查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct from employees
WHERE commission_pct is null;
#  等价于
SELECT last_name,commission_pct from employees
WHERE commission_pct <=> null;

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

#  <=>即可以判断null值,又可以判断普通的数值

#  查询员工号为176的员工姓名,部门,年薪
SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) as 年薪
FROM employees 
WHERE employee_id <=> 176;

#  查询没有奖金,且工资小于18000的salary,last_name
SELECT salary,last_name FROM employees
WHERE commission_pct is null and salary < 18000;

#  查询表中,job_id不为it或者工资为12000的员工信息
SELECT * FROM employees
WHERE job_id != 'IT' OR salary = 12000;

排序查找

#  查询员工信息,要求工资从高到低排序
SELECT * FROM employees
ORDER BY salary DESC;

#  查询部门编号为>=90的员工,按入职时间的先后进行排序【添加筛选条件】
SELECT * FROM employees
WHERE department_id >= 90
ORDER BY hiredate ASC;

#  按年薪的高低显示员工的信息和年薪【按表达式排序】
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) as 年薪
FROM employees
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

#  按年薪的高低显示员工的信息和年薪【按别名排序】
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) as 年薪
FROM employees
ORDER BY 年薪 desc;

#  按姓名的长度显示员工的信息和工资【按函数排序】
SELECT LENGTH(last_name) as 字节长度 ,last_name,salary 
FROM employees
ORDER BY LENGTH(last_name) DESC;

#  查询员工的姓名和部门号和年薪 ,按年薪降序,按姓名升序
SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) as 年薪
FROM employees 
ORDER BY 年薪 desc,last_name asc;

#  选择工资不在8000到17000的员工姓名和工资,按工资排序
SELECT last_name,salary FROM employees
WHERE salary not BETWEEN 8000 and 17000
ORDER BY salary DESC;

#  查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门升序
SELECT * FROM employees
WHERE email like '%e%'
ORDER BY LENGTH(email) DESC,department_id asc;

常见函数

#  常见函数
#  length获取参数值的字节个数
SELECT length('john');

#  concat拼接字符串
SELECT CONCAT(last_name,'_',first_name) as 姓名 FROM employees;

#  upper , lower 大小写
SELECT UPPER('john')

#  substr,substring
#  截取从指定索引处后面所有字符
SELECT SUBSTR('李莫愁爱上了陆展元',7) as out_put;

#  截取从指定索引处到指定字符长度的字符
SELECT SUBSTR('李莫愁爱上了陆展源',1,3) as out_put;

#  姓名首字母大写,其余字母小写,然后用_拼接,显示出来
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) as out_put FROM employees;

#  instr 返回字串第一次出现的索引,如果找不到返回0
SELECT instr('高晓松爱上了XXX','XXX') as out_put;

#  trin 消除两边空格
SELECT TRIM('   高晓松   ') as out_put;

#  lpad 用指定的字符实现左填充指定长度
SELECT lpad('高晓松',10,'*') as out_put;

#  rpad 用指定的字符实现右填充指定长度
SELECT RPAD('高晓松',12,'ab') as out_put;

#  replece 替换
SELECT REPLACE('张无忌爱上了周芷若','周芷若','赵敏') as out_put;

数学函数

#  round 四舍五入
SELECT ROUND(1.65)

#  ceil 向上取整
SELECT CEIL(1.52)

#  floor 向下取整
SELECT FLOOR(-9.99)

#  截断,小数点后保留几位
SELECT TRUNCATE(1.65,1)

#  mod 取余
SELECT MOD(10,-3)

日期函数

#  返回当前的系统日期和时间
SELECT now();

#  返回当前的系统日期,不包括时间
SELECT CURDATE();

#  返回当前时间,不包含日期
SELECT CURTIME();

#  str_to_date 将字符通过指定的格式转换成日期
SELECT STR_TO_DATE('1998-3-2','%Y-%m-%d');

#  查询入职日期为1992-04-03的员工信息
SELECT * FROM employees 
WHERE hiredate = '1992-04-03';

#  将日期转换成字符
SELECT date_FORMAT(now(),'%Y年%m月%d日') as out_put;

#  查询有奖金的员工名和入职日期(xx月/xx日 xx年)
SELECT last_name,date_format(hiredate,'%m月/%d日 %y年') as 入职时间
FROM employees
WHERE commission_pct is not null;

其他函数


#  版本号 
SELECT VERSION()
#  当前用户
SELECT user()
#  当前sql表名
SELECT DATABASE()

流程控制函数

#  if函数 
SELECT if(10>5,'大','小');
#  使用if函数判断有没有奖金,进行后续操作
SELECT last_name,commission_pct,if(commission_pct is null,"没奖金,呵呵","有奖金,嘻嘻") as 备注 FROM employees;

#  cese函数
#  查询员工的工资,要求部门编号=30,显示的工资为1.1倍,部门号为40,
#  显示的工资为1.2倍,部门号为50,显示的工资为1.3倍,其他部门显示为员工资。
SELECT salary as 原始工资,department_id,
case department_id
WHEN 30 then salary*1.1
WHEN 40 then salary*1.2
WHEN 50 then salary*1.3
end as 新工资 
FROM employees
ORDER BY 新工资 DESC;

#  查询员工的工资情况,如果工资大于20000,显示A级别,工资>15000,显示B级别
#  工资>10000,显示C级别,否则显示D级别。
SELECT salary,
case 
WHEN salary>20000 then 'A'
WHEN salary>15000 then 'B'
WHEN salary>10000 then 'C'
else 'D'
end as 工资级别 
FROM employeesRDER BY 工资级别 DESC;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值