Mysql基础(一)-查询笔记
最近在b站学习mysql,做下简单记录
sql基础查询
进阶一:
特点:
- 1.查询列表可以是:表中的字段,常量值,表达式,函数
- 2.查询的结果是一个虚拟的表格
先打开库
use myemmployees;
select 用来查询
desc 用来显示表结构
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%98
6.查询函数
select version();
7.为字段起别名
- 便于理解
- 如果要查询的字段有重名,可以用别名区分
方式一:使用AS
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
(此处因为out是关键字,故所以需要将Out put用引号引起来才能显示出)
8.去重
案例:查询员工表中涉及到的所有部门的编号
select distinct department_id from employees;
若不加 distinct 则有些相同的部门编号会重复出现,加上后不同的部门编号只会出现一次
9.+的作用
java中的+号:
- 做运算符
- 做连接符,只要有一个操作为字符串
mysql中的+号:
仅仅只有一个功能:做运算符
如:
select 100+90;
两个操作数都为数值型,则作加法运算
select '123'+90:
如其中一方为字符型,试图将字符型转化为数值型,如果转换失败,则将字符型数值转化为0,再做加法运算
select 'john'+90
如果转换失败,则将字符型数值转化为0,再做加法运算
select null+10;
只要有一方为null,则结果肯定为null
案例:查询员工名和姓连接成一个字段,并显示为 姓名
使用concat()函数进行拼接
select concat('a','b','c') AS 结果
SELECT CONCAT(last_name,first_name) AS 姓名 FROM employees;
进阶二:##
语法:</br>
select 查询列表 from 表名 where 筛选条件
筛选条件的分类:
- 按条件表达式筛选
条件运算符: >,<,= != < >= <=- 按逻辑表达式筛选:
逻辑运算符:&& || ! and or not- 模糊查询
like,between and in is null
一. 按条件表达式筛选
案例1:查询工资>12000的员工信息
select from emplomees where salary>12000;
案例2:查询部门编号不等于90号的员工名和部门编号
select last_name,department_id from emplyees where department_id!=90
二. 按逻辑表达式筛选
案例1:查询工资z在10000到20000之间的员工名,工资及奖金
select last_name,salary,commission_pct from emplyees where salary>=10000 AND salary<=20000
三. 模糊查询
like
特点:一般和通配符搭配使用
between and
特点:包含临界值
in
特点:in列表的值类型必须一致或是兼容
is null is not null
特点:= !=不能判断带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 '__e_a';
2. between and
案例1:查询员工编号在100到129之间的员工信息
select * from employees where employees_id>=100 and employees_id<=120
或是
select * from employees where employees_id between 100 and 120
3. in
案例1:查询员工工种编号是IT_PROG,AD_VP中的一个员工名和工种编号
select last_name ,job_id from employees where job_id='IT_PROG' or job_id='AD_VP';
或是
select last_name ,job_id from employees where job_id in ('IT_PROG' ,'AD_VP');
4. is null
案例1:查询没有奖金的员工名
select last_name from employees where commission_pct is null
<=>安全等于 用于判断是否等于
is null 仅仅用于判断 是否为null值
进阶三:##排序查询
即显示出一个排序后的结果
语法:
select 查询列表 from 表 【where 筛选条件】 order by 排序列表 【asc|desc】
案例1:查询员工信息,要求工资从高到低排序
select * from employees order by salary desc;(降序)
select * from employees order by salary asc;(升序,默认是升序)