MySQL 基础小总结(二)

一、连接查询

根据表连接的方式分类:
内连接:等值连接、非等值连接、自连接
外连接:左外连接(左连接)、右外连接(右连接)

语法:join ... on ... 
select ... from 表名1 join 表名2 on 条件 where ... 

自连接:两张表相同
等值和非等值指的是on后面的条件

外连接:指的是join前面添加了left和right关键字导致的左连和右连
select ... from 表名1 left join 表名2 on 条件 where ... 
以上语句表示:以表名1为主表
select ... from 表名1 right join 表名2 on 条件 where ... 
以上语句表示:以表名2为主表

注意,内连接两张表没有主次之分,没有left和right就表示采用内连接

二、子查询

在mysql中子查询分为在where后和from后出现的子查询作用

在from后出现的子查询
语法:select * from (select * from 表名);
会把from后面的子查询当成是一张临时表

在where后出现的子查询
语法:select * from 表名 where sal > (select max(sal) from emp);
表示子查询查出sal最大值作比较

三、union合并查询结果集

这里涉及的只是一个查询的效率问题

语法:select 字段... from 表名 union select 字段... from 表名;
前提是两个查询结果集的列数必须是相同的才可以合并

四、limit的使用(掌握)

完整用法:limit startIndex, length
startIndex是起始下标,length是长度,起始下标从0开始。

limit的使用:取出3-5名员工
select 员工 from 表名 order by 字段 asc limit 2,3;

limit在分页的使用
pageNo:是指哪一页
pageSize:是指页面的数据有多少条
记公式:limit (pageNo-1)*pageSize , pageSize

应用:
每页显示pageSize条记录
第pageNo页:limit (pageNo - 1) * pageSize  , pageSize

注意:mysql当中limit在order by之后执行

五、关于DQL语句的大总结

select .. from .. where .. group by .. having .. order by .. limit ..
执行顺序:
1.from
2.where
3.group by
4.having
5.select
6.order by
7.limit

六、表的创建、删除

1、建表的语法格式:(建表属于DDL语句,DDL包括:create drop alter)

create table 表名(
    字段1 数据类型,
    字段2 数据类型,
    字段3 数据类型
)

表名:建议以t_ 或者 tbl_开始,可读性强。见名知意。
字段名:见名知意。
表名和字段名都属于标识符。

关于mysql中的数据类型?

   很多数据类型,我们只需要掌握一些常见的数据类型即可。

        varchar(最长255)
            可变长度的字符串
            比较智能,节省空间。
            会根据实际的数据长度动态分配空间。

            优点:节省空间
            缺点:需要动态分配空间,速度慢。

        char(最长255)
            定长字符串
            不管实际的数据长度是多少。
            分配固定长度的空间去存储数据。
            使用不恰当的时候,可能会导致空间的浪费。

            优点:不需要动态分配空间,速度快。
            缺点:使用不当可能会导致空间的浪费。

            varchar和char我们应该怎么选择?
                性别字段你选什么?因为性别是固定长度的字符串,所以选择char。
                姓名字段你选什么?每一个人的名字长度不同,所以选择varchar。

        int(最长11)
            数字中的整数型。等同于java的int。

        bigint
            数字中的长整型。等同于java中的long。

        float    
            单精度浮点型数据

        double
            双精度浮点型数据

        date
            短日期类型 语法表示:%Y-%m-%d

        datetime
            长日期类型 语法表示:%Y-%m-%d %h:%i:%s

        clob
            字符大对象
            最多可以存储4G的字符串。
            比如:存储一篇文章,存储一个说明。
            超过255个字符的都要采用CLOB字符大对象来存储。
            Character Large OBject:CLOB


        blob
            二进制大对象
            Binary Large OBject
            专门用来存储图片、声音、视频等流媒体数据。
            往BLOB类型的字段上插入数据的时候,例如插入一个图片、视频等,
            你需要使用IO流才行。

2、表的删除

语法格式:drop table 表名;
如果表不存在会报错!
建议使用以下语法
drop table if exists 表名; 
不会报错

七、表数据的插入、删除、修改

1、表数据的插入

语法:insert into 表名(字段1,字段2) values(字段1值, 字段2值);
字段和值必须一一对应
如果不写字段就表示选中全部字段
insert into 表名 values(全部字段的值);

也可以一次插入多条
语法:insert into 表名() values(),(),(); 
表示一次插入多条

2、表数据的修改

语法:update 表名 set 字段1 = ..., 字段2 = ..., 字段3 = ... where ...
必须加条件,否则会将数据全部修改

3、表数据的删除

语法:delete from 表名 where ...
必须加条件,否则会将数据全部删除
delete 只是把数据删除了,空间还在,可以恢复

start transaction; 开启事务

在这里执行delete之后数据支持恢复

rollback; 回滚
回滚执行之后数据便会恢复

truncate 物理删除 不支持用回滚恢复
语法: truncate table 表名;
会直接将数据全部清除,不能加条件

注意:truncate 比较重要,必须掌握!!!
使用的是物理删除,一次截断表操作,属于DDL
使用truncate的效率是比使用delete的效率还要高的,而且高很多,但是在使用之前必须
很严谨,要不然数据就没了!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值