欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > MySQL(2)

MySQL(2)

2025/2/7 2:15:05 来源:https://blog.csdn.net/memorycx/article/details/145371772  浏览:    关键词:MySQL(2)

DQL

分组查询

语法:

select 字段列表,聚合函数 from 表名[where 条件] group by 分组字段名[having 分组后过滤条件];

where 和 having 区别

  • 执行时机不同

    • where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
  • 判断条件不同

    • 判断条件不同:where不能对聚合函数进行判断,而having可以

      select workaddress,count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;

注:执行顺序:where > 聚合函数 > having

注:分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

排序查询

关键字:order by

语法:select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;

排序方式:

asc:升序(默认值。可以省略)

desc:降序

注:如果是多字段排序,当第一个字段相同时,才会根据第二个字段进行排序

分页查询

关键字:limit

语法: select 字段列表 from 表名 Limit 起始索引,查询记录数;

注:

  • 起始索引从0开始,起始索引 = (查询页码 -1) *每页显示记录数

  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT

  • 如果查询的是第一页数据,起始索引可以省略,直接简写为limit10

编写顺序

select 字段列表

from 表名列表

where 条件列表

group by 分组字段列表

having 分组后条件列表

order by 排序字段列表

limit 分页参数

DQL执行顺序

在这里插入图片描述

DCL

  • 查询用户

  • 创建用户

  • 修改用户密码

  • 删除用户

    use mysql;

    select * from user;

    create user ‘用户名’@‘主机名’ identified by ‘密码’;

    alter user ‘用户名’@‘主机名’ identidied with mysql_native_password by ‘新密码’;

    drop user ‘用户名’@‘主机名’

注:主机名可以使用%通配

注:这类SQL开发人员操作比较少,主要是DBA(Database Administrator 数据库管理员)使用

权限控制

在这里插入图片描述

  • 查询权限

    • show grants for ‘用户名’@‘主机名’;
  • 授予权限

    • grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;
  • 撤销权限

    • revome 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’;

注:

  • 多个权限之间,使用逗号分隔

  • 授权时,数据库名和表名可以使用*进行通配,代表所有

函数

定义:函数指一段可以直接被一段程序调用的程序或代码

  • 字符串函数

  • 数值函数

  • 日期函数

  • 流程函数

字符串函数

  • concat(s1,s2,s3) 拼接字符串

  • lower(str) 转换成小写

  • upper(str) 转换成大写

  • lpad(str,n,pad)左填充,用字符串pad对str的左边进行填充,达到n个字符

  • rpad(str,n,pad) 右填充

  • trim(str) 去除字符串头部和尾部的空格

  • substring(str,start,len) 截取str从start位置开始的,长度为len的字符串

数值函数

  • ceil(x) 向上取整

  • floor(x) 向下取整

  • mod(x,y) 返回x/y的模

  • rand() 但会0~1 内的随机数

  • round(x,y) 求参数x的四舍五入的值,保留y位小数

日期函数

  • curdate() 返回当前日期

  • curtime() 返回当前时间

  • now() 返回当前日期和时间

  • year(date) 获取指定date的年份

  • month(date) 获取指定date的月份

  • day(date) 获取指定date的日期

  • date_add(date,interval expr type)返回一个日期/时间 加上一个时间间隔expr后的时间值

  • datediff(date1,date2) 返回起始时间date1和 date2 之间的天数

流程控制函数

在SQL语句中实现条件筛选,从而提高语句的效率

  • if(value,t,f) 如果value为true,则返回t,否则返回f

  • ifnull(value1,value2) 如果value1不为空,返回value1,否则返回value2

  • case when [val1] then [res1] …else [default] end

    • 如果val1为true ,返回res1,…否则返回default 默认值
  • case [expr] when [val1] the [res1] …else [default] end

    • 如果expr 的值等于val1,返回res1,否则返回default 默认值

      select
      name,
      case workaddress when ‘北京’ then ‘一线城市’ when ‘上海’ then ‘一线城市’ else ‘二线城市’ end
      from emp;

约束

  • 概述

  • 约束演示

  • 外键约束

概念:约束是作用在表中字段上的规则,用于限制存储在表中的数据

目的:保证数据库中数据的正确,有效性和完整性

  • not null 非空约束

  • unique 唯一约束

  • primary key 主键约束

    • 主键是一行数据的唯一标识,要求非空且唯一
  • default 默认约束

    • 默认约束,保存数据时,如果为指定该字段的值,则采用默认值
  • check 检查约束(8.0.16之后)

    • 保证字段值满足某一个条件
  • foreing key 外键约束

    • 用来让两张表的数据之间建立联系,保证数据的一致性和完整性

注意:约束是作用在表中字段上的,可以在创建表/修改表的时候添加约束

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com