MYSQL基础补充

MYSQL基础

1.SQL类别

SQL语句主要可以分为三个类别:

  1. DLL(Data Definition Language):数据定义语言,用来定义不同的数据段,数据库,表,列,索引等数据库对象,常用的语句包括create,drop,alter等。
  2. DML(Data Manipulation Language):数据操纵语言,就是常见的增删改查,常用的关键字包括:insert,update,delete,select等。
  3. DCL(Data Control Language):数据控制语句,用于访问控制不同数据段直接的许可和访问级别的语句。定义数据库,表,字段,用户权限和安全级别,常用关键字grant(赋予),revoke(收回)等。

具体的DLL,DML语句就不说了,只说几个特殊的例子。

  • 比如:在mysql中。update可以同时更新多个表中的数据

emp:
在这里插入图片描述

dept:在这里插入图片描述

select * from emp;
select * from dept;
update emp a,dept b set a.sal = a.sal * b.deptno ,b.deptname = a.ename where a.deptno = b.deptno;

执行后发现两个表的数据同时进行了更新
注意:多表更新的语法更多的用于根据一个表的字段动态的更新另外一个表的字段

  • 查询不重复的记录
select ename, hiredate, sal, deptno from emp;

在这里插入图片描述

select distinct deptno from emp;

在这里插入图片描述

select distinct * from emp;

在这里插入图片描述

  • 查询数据只显示一部分
select ...[LIMIT OFFSET_START,ROW_COUNT]

其中offset_start表示记录的偏移量,默认从0开始,row_count表示显示的行数,默认情况下,不写偏移量,只写显示的行数,显示的就是前n条记录,例如,显示emp的前三条数据

select * from emp;

在这里插入图片描述

select * from emp limit 3;

在这里插入图片描述

如果想要查询从第二条记录开始往后走三条,就可以这么写

select * from emp limit 1,3;

在这里插入图片描述

注意:limit经常和order by一起配合使用来进行记录的分页查询,改变limit的两个变量即可,注意order by的时候多带一个唯一值排序(比如ID),防止唯一值重复分页出现问题

  • having和where的区别

having是对聚合后的结果进行条件的过滤,where是在聚合前就对记录进行过滤,如果逻辑允许,尽可能先用where过滤记录,这样结果集减小,聚合效率将大大提高。

  • with rollup关键字

可选参数,表明是否对分类聚合后的结果再汇总

select deptno,count(1) from emp group by deptno;

在这里插入图片描述

select deptno,count(1) from emp group by deptno with rollup ;

在这里插入图片描述

  • 表连接很多情况下可以优化子查询
--子查询所有员工表中部门在部门表中的数据
select * from emp where deptno in (select dept.deptno from dept);
select a.* from emp a inner join dept b on a.deptno=b.deptno;
  • union和union all的区别

有时候会有这样的情况,需要将多个sql查询出的数据拼接在一起(注意使用时显示字段名两段sql必须一致),就需要用到union和union all
union all是将所有结果都聚合在一起,union在聚合后会对结果去重,相当于使用了distinct

select deptno from emp
union all
select deptno from dept;

在这里插入图片描述

select deptno from emp
union
select deptno from dept;

在这里插入图片描述

  • 查询元数据信息

MYSQL5.0后新增了一个数据库information_schema,里面记录了Mysql中的元数据信息,比如表名,列名,列类型,索引名等属性名称,它是一个虚拟数据库,物理上不存在目录和文件,而是视图的方式展示
,一些比较常见的视图

  1. SCHEMATA:该表提供了所有数据库的信息,show database来自此表。
  2. TABLES:该表提供了数据数据库表的信息(包括视图),详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息,show table from schemaname来自此表。
  3. COLUMNS:该表提供了表中的列数据,表示某张表的所有列以及列信息,show columns from schemaname.tablename的结果来自此。
  4. STATISTICS:该表提供了表索引的信息,show index from schemaname.tablename的结果来自此。
use information_schema;
show tables ;
select * from SCHEMATA;
select * from TABLES;
select * from COLUMNS;
select * from STATISTICS;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值