Tool-mysql 常用语句

本文详细介绍了MySQL中如何进行数据迁移,包括相同字段与不同字段的表间数据复制。同时,讨论了如何创建、修改和删除表的字段,以及设置和删除索引。此外,还涵盖了调整列顺序、修改列默认值和存储长度,以及管理表的 AUTO_INCREMENT 值等实用操作。最后,提到了LIKE与CONTAINS在查询上的区别,并展示了获取建表信息和更改表名的方法。
摘要由CSDN通过智能技术生成

MySQL一个表中数据写入另一个表中

 如果两表字段相同,则可以直接这样用。
 insert into table_a select * from table_b
 ​
 如果两表字段不同,a表需要b中的某几个字段即可,则可以如下使用:
 insert into table_a(field_a1,field_a2,field_a3) select field_b1,field_b2,field_b3 from table_b
 ​
 另外,还可以根据需要加上where查询条件

MySQL创建表

 CREATE TABLE `aaa` (
   `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
   `bbb` int(11) DEFAULT NULL COMMENT 'bbb',
   `nowtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据插入时间',
   PRIMARY KEY (`id`),
   KEY `rrr` (`rrr`)
 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

MySQL表新增一个或者多个字段

 ALTER TABLE config ADD xxx INT(11) NULL
 ​
 如何在MySQL中增加一列
 如果想在一个已经建好的表中添加一列,可以使用诸如:
 alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(255) not null;
 ​
 这条语句会向已有的表中加入新的一列,这一列在表的最后一列位置。如果我们希望添加在指定的一列,可以用:
 ​
 alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(255) not null after COLUMN_NAME;
 ​
 注意,上面这个命令的意思是说添加新列到某一列后面。如果想添加到第一列的话,可以用:
 ​
 alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(255) not null first;
 ​
 添加多个字段:
 alter table xx add column aaa int(11) DEFAULT NULL comment 'tttt',  
 add column yy int(11) DEFAULT NULL comment 'ttt',  add column ww int(11) DEFAULT NULL comment 'ttt'

MySQL表删除一个字段

 alter table TABLE_NAME drop column COLUMN_NAME

MySQL表删除表

 DROP TABLE table_name
 ​
 用法:
 1、当你不再需要该表时, 用 drop;
 ​
 2、当你仍要保留该表,但要删除所有记录时, 用 truncate;
 ​
 3、当你要删除部分记录或者有可能会后悔的话, 用 delete。
 ​
 ​
 删除程度可从强到弱如下排列:
 1.  drop table tb;
 ​
     drop 是直接将表格删除,无法找回。例如删除 user 表:
 ​
 drop table user;
 2.  truncate (table) tb;
 ​
     truncate 是删除表中所有数据,但不能与where一起使用;
 ​
 TRUNCATE TABLE user;
 3. delete from tb (where);
 ​
     delete 也是删除表中数据,但可以与where连用,删除特定行;
 ​
 -- 删除表中所有数据
 delete from user;
 -- 删除指定行
 delete from user where username ='Tom';
  
 truncate 和 delete 的区别:
 1. 事物
 ​
 truncate删除后不记录mysql日志,因此不可以rollback,更不可以恢复数据;而 delete 是可以 rollback ;
 ​
 原因:truncate 相当于保留原mysql表的结果,重新创建了这个表,所有的状态都相当于新的,而delete的效果相当于一行行删除,所以可以rollback;
 ​
 2. 效果
 ​
 效率上 truncate 比 delete快,而且 truncate 删除后将重建索引(新插入数据后id从0开始记起),而 delete不会删除索引 (新插入的数据将在删除数据的索引后继续增加)
 ​
 3. truncate 不会触发任何 DELETE触发器;
 ​
 4. 返回值
 ​
 delete 操作后返回删除的记录数,而 truncate 返回的是0或者-1(成功则返回0,失败返回-1);
 ​
 delete 与 delete from 区别:
 如果只针对一张表进行删除,则效果一样;如果需要联合其他表,则需要使用from :
 ​
 delete tb1 from tb1 m where id in (select id from tb2)

MySQL表新增一个索引

 alter table case_result add index idx_taskid (taskid)

MySQL数据库唯一性设置(unique index)

 命令行操作或者使用db工具操作,直接新建index,选择unique
 ​
 命令行操作分为两种。一种是在建表时就想好要加上唯一性,另一种是在后期才发现需要设置唯一性。
 建表时:
 CREATE TABLE `t_user` (
 `Id` int(11) NOT NULL AUTO_INCREMENT,
 `username` varchar(18) NOT NULL unique,
 `password` varchar(18) NOT NULL,
 PRIMARY KEY (`Id`)  www.2cto.com
 ) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;
 ​
 后期加上:
 ALTER TABLE t_user ADD unique(username)

MySQL改变2个列的顺序

 alter table xxx modify c2 varchar(255) after c1

MySQL改变列的默认值

 alter table 表名 alter column 字段名 drop default; (若本身存在默认值,则先删除)
 ​
 alter table 表名 alter column 字段名 set default 默认值;(若本身不存在则可以直接设定)

MySQL改变列的存储长度

 alter table 表名 modify column 列名 类型(要修改的长度);

MySQL改变列的名字

 alter table xxx change a b int

MySQL操作索引相关

 删除一个索引:   alter table xxx drop key idx_ip
 新建一个索引:   alter table xxx add index idx_taskid (taskid)
 新建唯一索引:   alter table xxx add unique uni_idx_ip (ip)
 alter table instance add unique uni_idx_name on xxx
 新建主键索引:   alter table xxx add primary key(id)
 新建普通索引:   alter table xxx add index idx_name (taskid)
 新建全文索引:   alter table xxx add fulltext (taskid)
 ​

MySql中重新设置AUTO_INCREMENT自增值方法

 查询表名为tableName的auto_increment值:
 SELECT AUTO_INCREMENT FROM information_schema.tables WHEREtable_name='tableName';
 修改表名为tableName的auto_increment值:
 ​
 ALTER TABLE tableName auto_increment=number ;
 ​
 扩充单表容量
 ALTER TABLE tbl_nameMAX_ROWS=10000

MySQL查询like与contains的区别

 contains是全文索引查询,以空间换时间,比较快,并且会分词匹配,而like是不会的。全文索引只支持单词粒度的完全匹配查询,不支持完全像like一样单个字符的模糊匹配查询。
 ​
 再看,select * from tab where contains(列名,’%is%‘)>0和select * from tab where  列名 like ’%is%‘都可以查到这句话,也因为通过多字符通配符%就可以和该整句话匹配上。
 ​
 select * from tab where contains(列名,’%s%‘)>0和select * from tab where  列名 like ’%s%‘都可以查到这句话,也是同样的道理。
 ​
 SELECT id FROM docs WHERE CONTAINS (text, 'first') > 0;
 这将在文本列包含单词 first (即文档1) 的 docs 中查找所有行。
 语句中的>0部分是有效的Oracle SQL所必需的,Oracle SQL不支持函数的布尔返回值。
 即>0表示条件为真

mysql查询建表信息语句

 mysql> show create table table_name

mysql更改表的名字

 ALTER  TABLE table_name RENAME TO new_table_name
 例如:
 ALTER  TABLE handle_larkmsg_task RENAME TO handle_resultmsg_task
 ALTER  TABLE lark_msg RENAME TO result_msg
 ​
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进阶的小猫

觉得不错就打赏1元鼓励小姐姐呀

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值