MySQL基础学习

模糊查询

通配符

_:任意一个字符

%:
任意0~n个字符

姓张的 ‘张%’

姓张的 2个字 
‘张_’

注意

模糊查询是
匹配的第一个字不要出现通配符,不然会全表扫描

企业中搜索商品
用的是建立索引的方式

实现思路

商品上架
–》建立索引:将商品信息在存储一份(只包含列表需要的数据)

搜索:查找索引

字段控制查询

去重复记录

Distinct

语法

select

distinct  sal

from

emp

查看雇佣的月薪与佣金之和

因为sal 和comm两列的数据类型都是数值类型,所有可以直接做
加运行,但是如果2个字段中有一个不是数值类型,就会出错。

如comm有null  ,null+ 任何=null  需要将null值转换为 0;

select

sal
+ifnull(comm,0)

from

emp

给列添加别名

方法

As 别名

select

ename,
sal+ifnull(comm,0) as total

from

emp

排序

Order by

Asc 升 默认 / desc 降

按照薪资升降序

默认

select

*

from

emp

order by

sal

asc

select

*

from

emp

order by

sal
asc;

降序 相同按照 编号升序

select

*

from

emp

order by

sal
desc, empno ;

聚合函数 sum, avg, max,min, count

Count():计算指定列不为null的记录行数。

Max():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算。

Min():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算。

Sum():计算指定列的和,如果指定列是不是数值类型,那么计算结果为0

Avg():计算指定列的平均值,如果指定列是不是数值类型,那么计算结果为0

Count

查询emp表中记录数

select

count(*)
as cnt

from

emp;

查询emp表中,月薪大于2500的人数。

select

count(*)
as cnt

from

emp

where

sal>2500;

查询有佣金的人数,以及有领导的人数

select

count(comm)
as comm_cnt ,count(mgr) as mgr_cnt

from

emp;

Sum和avg

查询所有雇员月薪和

select

sum(sal)
as sal_sum

from

emp;

查询所有雇员月薪和,以及所有雇员佣金和

select

sum(sal)
as sal_sum,

sum(comm)
as comm_sum

from

emp;

查询所有雇员+佣金和

select

sum(sal
+ifnull(comm,0)) as total

from

emp;

统计所有员工的平均工资

select

avg(sal)
as sal_avg

from

emp;

Max min

查询最高工资与最低工资

select

max(sal)
as sal_max,

min(sal)
as sal_min

from

emp;

分组查询

当需要分组查询的时候,需要使用group by语句,

例如:查询每个部门的工资和,说明需要使用部门来分组

关键字:每,各个

Group by

查询每个部门 的部门编号和每个部门的工资和

select

deptno,

sum(sal)
as sal_sum

from

emp

group by

deptno

查询每个部门的部门编号以及每个部分的人数

select

deptno,

count(*)
as count

from

emp

group by

deptno

查询每个部门的部门编号以及每个部门工资大于1500的人数。

select

deptno,

count(sal)
as count

from

emp

where

sal>1500

group by

deptno

Having

查询工资总和大于9000的部门编号和工资和

select

deptno,

sum(sal)
as sal_sum

from

emp

group by

deptno

having

sum(sal)

1500

注意:having与where的区别

(1)having是在分组后对数据进行过滤

where是在分组前对数据进行过滤

(2)having可以使用分组函数(聚合函数)的别名

Where 后面不能使用分组函数。

Limit

Limit用来限制查询结果的起始行,以及总行数

查询5个雇员信息,起始从0开始

select

*

from

emp

limit

0,5;

注意:起始行从0开始,也就是第一行开始

select

*

from

emp

limit

5;

查询10行,起始行从3开始

select

*

from

emp

limit

3,10;

分页查询

介绍

企业中:为什么有分页查询这个功能(需求)。

用户的手机一屏只能放10条记录,加载10条就过来。

性能优化:

减少数据的加载,减少网络资源,

速度快,用户体验好。

实现

如果一页显示的条目数是10,

第一页:数据起始行 0,一共10条

第二页:数据起始行10,一共10条

第三页:数据起始行20,一共10条

需要返回页数  (n-1)*10,

总结

编写顺序

Select…from
…where …group by… having …order by… limit

执行顺序:

Form…
where… group by …having …select …order by…limit

数据完整性

介绍

作用:保证用户输入的数据保存到数据库中是正确的。

确保数据的完整性
:在创建表的时候给表添加约束

完整性的分类:

实体完整性

域完整性

引用完整性

实体完整性

实体:entity,就也是表中一行(一条记录)代表一个实体

实体完整性的作用:标识每一行数据不重复

约束的类型:

主键约束 (primary key)

唯一约束性
(unique)

自增长约束性(auto_increment)

主键约束 (primary key)

特点:数据是唯一,且不能为空

方式一:

create table stu(

sid
int primary key,

name
varchar(50),

classid
int

);

Desc stu;

方式二:

此种方式优势在于,可以创建联合主键

create table stu(

sid
int ,

name
varchar(50),

classid
int,

primary
key (sid,classid)

)

方式三:

create table stu(

sid
int ,

name
varchar(50),

classid
int

);

alter table stu add primary key
(sid,classid);

唯一约束(unique)

数据不能重复

create table stu(

sid
int ,

name
varchar(50),

classid
int unique

);

或者

alter table stu add unique (sid);

自动增长列(auto_increment)

给主键添加自动增长的数值,该列的值自动增长(i++),列的数据类型只能是整数类型。

自动增长的列,插入数据的时候,可以不给值。

create table stu(

sid
int primary key auto_increment,

name
varchar(50),

classid
int unique

);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值