mysql+模糊去重,MySQL笔记一

title: MySQL笔记一

date: 2019-05-28 16:21:00

tags: MySQL笔记

categories: 技术

MySQL学习笔记(笔记一)

基础查询

语法:

select 查询列表 from 表名;

特点:

查询列表可以是:表中的字段,常量,表达式,函数

查询的结果是一个虚拟的表格

查询表中的单个字段

SELECT last_name From employees;

查询表中的多个字段

SELECT last_name,salary,email FROM employees;

查询表中的所有字段

SELECT * FROM employees;

查询常量值

SELECT 100;

SELECT 'jhon';

查询表达式

SELECT 100*98;

查询函数

SELECT VERSION();

起别名

便于理解

如果要查询的字段有重名的情况,使用别名可以区分开

方式一:使用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;

DISTINCT去重

案例

查询员工表中所有的部门编号

SELECT DISTINCT department_id FROM employees;

+号的作用

仅仅只有一个功能:运算符

两个操作数都为数值型,则做加法运算:select 100+50;

其中一方为字符型,试图将字符型数值转换成数值型,

如果转换成功则继续做加法运算select '123'+90;

如果转换失败,则将字符型数组转换成0elect 'jhon'+90;

3. 只要其中一方结果为null,则结果肯定为`nullselect null+10;`

案例

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

SELECT CONCAT('a','b','c') AS 结果;

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

条件查询

语法:

elsect 查询列表 from 表名 where 筛选条件;

分类:

按条件表达式筛选

条件运算符:> < = >= <= <> !=

按逻辑表达式筛选

逻辑运算符:

作用:用于连接条件表达式

&& || !

and or not

模糊查询:

like

between and

in

is null

按条件表达式筛选

案例一

查询工资>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 department_id<90 OR department_id>110

OR salary>15000;

模糊查询

like

between and

in

is null|is not null

like

特点:一般和通配符搭配使用

通配符%:任意多个字符

通配符_:任意单个字符

案例一

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

SELECT * FROM employees WHERE last_name LIKE '%a%';

案例二

查询员工名中第三个字符为e,第五个字符为a的员工名和工资

SELECT last_name,salary

FROM employees

WHERE last_name LIKE '__e_a%';

案例三

查询员工名中第二个字符为下划线的员工名

SELECT last_name

FROM employees

WHERE last_name LIKE '_\_%';

或者

SELECT last_name

FROM employees

WHERE last_name LIKE '_$_%'

ESCAPE '$';

in

含义:判断某字段的值是否属于in列表中的一项

特点:

使用in比使用or提高语句整洁度

in列表的值类型必须统一或兼容

案例

查询员工的工种编号是IT_PROG,AD_VP,AD_PRES中的一个员工名的工种编号

使用or:

SELECT last_name,job_id

FROM employees

WHERE job_id='IT_PROG'

OR job_id='AD_VP'

OR job_id='AD_PRES';

使用in:

SELECT last_name,job_id

FROM employees

WHERE job_id

IN ('IT_PROG' ,'AD_VP' ,'AD_PRES');

is null

=或<>不能用于判断null值

is null或is not null 可以判断null值

案例一

查询没有奖金的员工名和奖金率

SELECT last_name,commission_pct

FROM employees

WHERE commission_pct IS NULL;

案例二

查询有奖金的员工名和奖金率

SELECT last_name,commission_pct

FROM employees

WHERE commission_pct IS NOT NULL;

安全等于: <=>

案例一

查询没有奖金的员工名和奖金率

SELECT last_name,commission_pct

FROM employees

WHERE commission_pct <=> NULL;

案例二

查询工资为12000的员工信息

SELECT last_name,salary

FROM employees

WHERE salary <=> 12000;

排序查询

语法:

selsect 查询列表

from 【表 where 筛选条件】

order by 排序列表 【asc|desc】

特点:

asc升序,desc降序

如果不写默认升序

order by 子句中可以支持单个字段,多个字段,表达式,函数,别名

order by 子句一般是放在查询语句的最后面,但limit子句除外

案例一

查询员工信息,要求工资从高到低排序

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) 字节长度,last_name,salary FROM employees ORDER BY LENGTH(last_name) DESC;

案例六

查询员工信息,要求先按工资升序排序,再按员工编号降序排序【按多个字段排序】

SELECT * FROM employees ORDER BY salary ASC,employee_id DESC;

标签:salary,last,name,employees,笔记,查询,MySQL,SELECT

来源: https://blog.csdn.net/qq_39943682/article/details/93472191

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值