mysql-union,join,index

mysql-union,join,index

union

  • 作用:把2次或多次查询结果合并起来
  • 要求:2次查询的列数一致
  • 推荐:查询的每一列相对应的列类型也一样
    • 可以来自于多张表
    • 多次sql语句取出的列名可以不一致,此时以第1个sql的列名为准
    • 如果不同的sql语句中取出的行,有完全相同(每个列的值都相同),那 么相同的行将会合并(去重复)
    • 如果不去重复可以加all来指定
    • 如果子句中有order by,limit,须加(),推荐放到所有字句之后,即对最终合并后的结果来排序
    • 在子句中,order by配合limit使用才有意义,否则会被语法分析器优化分析时去掉,即排序不生效

left join/right join/inner join

  • 左右连接可以相互转化
  • 可以把右连接转换为左连接来使用(并推荐使用左连接代替右连接,兼容性好一些)
    • 可以来自于多张表
    • A站在B的左边<=====>B站在A的右边,即:A left join B<=====>B right join A
  • 内连接:查询左右表都有的数据,即:不要左右中NULL的那一部分
    • 内连接是左右连接的交集
  • 外连接:目前mysql不支持外连接
    • 外连接是左右连接的并集

  • 增加列:
    • alter table 表名 add 列声明
    • 增加的列默认是在表的最后一列
    • 可以用after来声明新增的列在那一列后面:alter table 表名 add 列声明 after 列名
    • 新增放在最前面:alter table 表名 add 列声明 first
  • 修改列:
    • alter table 表名 change 被改变的列名 列声明
  • 删除列:
    • alter table 表名 drop 列名

校对集

  • 声明校对集:
    • create table() charset utf8 collate utf8_general_ci

导出

  • 导出库中的某些表
    • mysqldump -u 用户名 -p密码 库名 表1 表2 表3 > 地址/备份文件名称(导出的是建表语句及insert语句)
  • 导出库中的所有表
    • mysqldump -u 用户名 -p密码 库名 >地址/备份文件名称
  • 以库为单位导出
    • mysqldump -u 用户名 -p密码 -B 库1 库2 库3 >地址/备份文件名称
  • 导出所有库
    • mysqldump -u 用户名 -p密码 -A >地址/备份文件名称

恢复

  • 登录到mysql命令行
    • 对于库级的备份:mysql> source 备份文件地址
    • 对于表级的备份:
      mysql> use 库名``````
      mysql> source 备份文件地址
  • 不登录到mysql命令行
    • 对于库级的备份:mysql -u用户名 -p密码 < 库级备份文件地址
    • 对于表级的备份:mysql -u用户名 -p密码 < 表级备份文件地址

索引与优化

  • 好处
    • 加快了查询速度(select)
  • 坏处
    • 降低了增、删、改的速度(update/delete/insert)
    • 增大了表的文件大小(索引文件甚至可能比数据文件还大)
  • 索引的使用原则
    • 不过度索引
    • 索引条件列(where后面最频繁的条件比较适宜索引)
    • 索引散列值,过于集中的值不要索引(例如,给性别“男”、“女”加索引,意义不大)
  • 索引的分类
    • 普通索引:index 仅仅是加快查询速度
    • 唯一索引:unique index 行上的值不能重复
    • 主键索引:primary key 不能重复
      - 主键必唯一,但是唯一索引不一定是主键
      - 一张表上只能有一个主键,但是可以用一个或多个唯一索引
    • 全文索引:fulltext index
  • 查看索引
    • 查看一张表上所有索引:show index from 表名
  • 建立索引
    • alter table 表名 add index/unique/fulltext [索引名] (列名)
    • alter table 表名 add primary key (列名)
  • 删除索引
    • 删除非主键索引:alter table 表名 drop index 索引名
    • 删除主键:alter table 表名 drop primary key
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值