mysql c select_Mysql--select基础查询

基本语法:select 查询列表 from 表名

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

注意:

①sql语言大小写不敏感

②关键字不能分行或略写

③一般书写方式为换行缩进

一、基础查询

1.经典查询(查询表中的字段)

①查询单个字段

select 字段1 from 表1;

②查询多个字段

select 字段1,字段2, . . .字段n from表1;

③查询所有字段(用“”表示所有字段或者用枚举所有的字段)

Select * from 表1;

Select 字段1,字段2,字段3,...,字段last from 表1;

2.查询常量值

select 520;

select ‘chenzui’;

3.查询表达式

select 100/20;

4.查询函数

select version();

5.起别名

①方式1用as

Select 100/20 as “结果”;

②方式2 用” ”空格

Select 100/20 结果;

6.去重distinct

SELECT DISTINCT department_id FROM employees;

7.mysql中+的功能(运算符)

①两个都是数值型,做加法运算。Select 200+100;返回300。

②一个是字符型一个是数值型,将字符型转换为数值型,若能转换成功,则继续运算,转换失败,将字符型转换为0,继续运算。

Select “120”+120;返回240;select “120aaa”+120;返回240;select “aaa120”+120;返回120。

③一方是null,结果返回null。select null+100;返回null。

二、条件查询

语法:select 查询列表 from 表名 where 筛序条件;

1.按条件表达式筛选

简单条件运算符:>、、>=、<=

案例1 查询工资大于1000的员工信息

Select * from employees where salary>1000;

案例2 查询部门编号等于80,的员工名字和部门id

Select last_name,department_id from employees where department_id = 80;

2.逻辑表达式筛选

逻辑运算符

作用:用于连接条件表达式 && || ! and or not

and 或 && 两个条件都为true,结果为true,否者返回false

or 或 || 只有一个条件为true,结果为true,否者为false

not 或 ! 连接条件本身为true,结果为false,否者为true

案例 查询工资在10000-15000的员工名字和工资

Select last_name , salary from employees where salary>10000 and salary<15000;

3.模糊查询

like、between and 、in、is null

①like 一般和通配符搭配使用

通配符:‘%’任意多个,包括0个,’’任意单个。

案例1 查询名字中包含”c”的员工信息

select * from employees where last_name like “%c%”;

案例2 查询名字以a开头第4个字母为z的员工信息

select * from employees where last_name like “a__z%”;

案例3 查询第二个字符为””的员工名字

select last_name from employees where laset_name like “$%”;

②between and 可以使sql语句更简洁,包含临界值,两个临界值不能调换顺序

案例1 查询员工编号在150-200之间的员工信息

select * from employees where employee_id between 150 and 120;

select * from employees where employee_id >=150 and employee_id <=120;

③in 判断某段的值是否属于in列表中的某一项,提高了代码的简洁度,in列表的值必须一致或者兼容,in列表不支持通配符。

案例1 获取工种编号为aaa、bbb、ccc中一个的员工信息

select * from employees where job_id in(“aaa”,’bbb’,’’ccc);

select * from employees where job_id=”aaa” or job_id = “bbb” or job_id = “ccc”;

④=或者<>不能判断null值,is null和is not null 可以用于判断null值

案例1 查询没有奖金的员工信息

select * from employees where commission_pct is null;

⑤<=>安全等于

查询工资为10000的员工名字

Select last_name from employees where salary <=>10000;

⑥is null 和 <=>

is null:只可以判断null值,可读性较高

<=>:既可以判断null值,又可以判断普通数值,可读性较差。

三、常见函数

1、单行函数

①字符函数:length(获取字节个数)、concat(拼接字符串)、upper(转化成大写)、lower(转换为小写)、substring、instr(返回字符串第一次出现的索引,不存在返回0)、trim(去除前后空格)、lpad(用指定字符实现左填充)、rpad(用指定的字符实现右填充)、replace(替换)

ef1e7e0bf1d5126d9723add261bb8b92.png

②数学函数

Round():四舍五入

Ceil():向上取整

Floor():向下取整

Truncate():截断

Mod():取余,mod(a,b) : a-a/bb

22c2cc298269b838ab4a815b11328a8c.png

③日期函数

NOW():返回当前日期加时间

Curdate():返回当前日期

Curtime():返回当前时间

Str_to_date(字符类型,日期类型): 将字符类型转换为日期类型

Date_format(日期类型,字符类型): 将日期类型转换为字符类型;

27b881b182b092dc19d8c32f83102784.png

④流程控制函数

if函数:其效果类似于if else

9d76d3ee87ff5bc7d010d82e842261ae.png

Case函数用法一[类似于switch用法]

语法:

Case 要判断的字段或者表达式

When 常量1 then 要显示的值1或语句1;

When 常量2 then 要显示的值2或语句2;

When 常量3 then 要显示的值3或语句3;

Else 要显示的值n或者语句n;

End

435f5fa0bbb37aee620cbbd2cd1f2381.png

Case函数用法二[类似于多重if]

语法:

Case

When 条件1 then 要显示的值1或语句1

When 条件2 then 要显示的值2或语句2

Else 要显示的值n或语句n

End

8930f48a640915722acf2308e7306b5a.png

⑤其他函数

SELECT VERSION();

SELECT DATABASE();

SELECT USER();

2、分组函数(聚合函数、统计函数、组函数)

分类:

求和(sum)、avg(平均值)、max(最大值)、min(最小值)、count(计算个数)

特点:

①sum和avg一般处理数值型,max、min、count又可以处理任何类型

②分组函数都忽略null值

③可以和distinct搭配实现去重运算

④count()用于统计数量

⑤和分组函数一同查询的字段要求是group by后的字段

案例1

select sum(salary) avg(salary) min(salary) max(salary) count(salary) from employees;

案例2 函数的适用性

SELECT SUM(last_name) ,AVG(last_name) FROM employees; 返回值是0,0

案例3 忽略null值

SELECT

SUM(commission_pct) ,AVG(commission_pct),SUM(commission_pct)/35,SUM(commission_pct)/107 FROM employees;

案例4 和distinct结合使用 会自动去重

SELECT SUM(DISTINCT salary),SUM(salary) FROM employees;

案例5 count()的使用

SELECT COUNT(salary) FROM employees;

SELECT COUNT() FROM employees;

SELECT COUNT(1) FROM employees;

案例6 和分组函数一同查询的字段有限制

SELECT AVG(salary),employee_id FROM employees;

四、排序查询

语法:select 查询列表 from 表名 [where 筛选条件] order by 排序的字段或者表达式

1.排序函数的用法

①asc表示升序,可以省略,desc是降序

②order by可以支持单个字段、别名、表达式、函数、多个字段

③order by 子句在查询语句最后面,除了limit子句

2.案例

select * from employees order by salary desc;

select * from employees where department_id >= 100 order by department_id;

SELECT last_name , salary12(1+IFNULL(commission_pct,0)) FROM employees ORDER BY salary12(1+IFNULL(commission_pct,0));

SELECT last_name , salary12*(1+IFNULL(commission_pct,0))AS "年薪" FROM employees ORDER BY '年薪';

SELECT department_id,AVG(salary) FROM employees GROUP BY department_id ORDER BY AVG(salary);

SELECT last_name,salary FROM employees ORDER BY last_name DESC ,salary ASC;

五、group by

语法:select 字段1,字段2,… from 表名 [where 筛选条件] group by 字段1,字段2,..[having 筛选条件 limit 分页条件];

查询列表必须来自分组的字段,保证逻辑的一致性。

使用方式:

①group by 和聚合函数配合使用得时候,分组后计算

Select avg(salary),last_name from employees group by department_id;

②与having配合使用得时候,分组后过滤;

Select department_id,min(salary) from employees group by department_id having salary>3000;

③group by中聚合函数同时和非聚合函数一起使用时,非聚合函数取第一个匹配到时的字段内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值