sql语句总结

公司使用的flyway来管理项目数据库,因此每个版本开发,都会牵涉到表、字段、索引的修改、删除、增加;需要在flyway文件中使用原生的sql语句;这东西不怎么常用,但是用的时候会突然想不起来,因此记录一下:

表操作:

一般来说对表的操作很少,最多就是创建表或者删除表;

删除表:
DROP TABLE `table_name`;
创建表:

一般创建表之前都会判断表是否存在,存在就删除;

DROP TABLE IF EXISTS `table_name`;
CREATE TABLE `table_name` (
    `id` biginnt(20) NOT NULL AUTO_INCREMENT,
    `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
    PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT = '表中文名' ROW_FORMAT = Dynamic;
字段(列)操作:
修改列:

修改列名:

rename修改:只修改列名

ALTER TABLE `table_name` RENAME COLUMN odl_col_name to new_col_name; 

change修改:修改列名和列的数据类型

ALTER TABLE `table_name` CHANGE COLUMN odl_col_name new_col_name new_data_type;

修改列类型:

ALTER TABLE有三种修改列的方式:

1、alter column 设置或者删除类的默认值;该操作会直接修改.frm文件而不涉及表数据

# 添加默认值
ALTER TABLE `table_name` ALTER COLUMN col_name set default 'java';
# 删除默认值
ALTER TABLE `table_name` ALTER COLUMN col_name drop default;

2、change column 可以重命名列或者修改列的定义

# 修改列名(数据类型还使用之前的,只修改名字)
ALTER TABLE `table_name` CHANGE COLUMN old_col_name new_col_name varchar(20);
# 同时修改列名和数据类型
ALTER TABLE `table_name` CHANGE COLUMN old_col_name new_col_name varchar(40);

3、modify column 可以更改列的定义,但不能更改列的名称

ALTER TABLE `table_name` MODIFY COLUMN col_name varcahr(20);

这三种方式比较起来,change column的功能最强大,可以通用;

modify和change在更新表结构的时候,会对数据进行读、重新插入操作,谨慎使用;

当只需要修改某一列的默认值的时候,优先选择用alter,需要修改列的名称用change,只修改列的定义用modify;

删除列:
ALTER TABLE `table_name` DROP COLUMN col_name;
增加列:
ALTER TABLE `table_name` ADD COLUMN col_name datatype;
索引操作:

添加普通索引:

ALTER TABLE `table_name` ADD INDEX index_name(col_name);

添加主键:

ALTER TABLE `table_name` ADD PRAMARY KEY(col_name);

添加唯一索引:

ALTER TABLE `table_name` ADD UNIQUE(col_name);

添加全文索引:

ALTER TABLE `table_name` ADD FULLTEXT(col_name);

添加联合索引:

ALTER TABLE `table_name` ADD INDEX index_name(col_name1, col_name2, col_name3);

删除索引:

# drop方式
DROP INDEX index_name ON table_name;
# alter table方式
ALTER TABLE `table_name` DROP INDEX index_name;
数据操作:

插入表数据:

# 按指定的列插入
INSERT INTO `table_name` (col1, col2, clo3, ....., colN) VALUES (vul1, vul2, vul3, ....., vuln);
# 为所有列插入
INSERT INTO `table_name` VALUES (vul1, vul2, vul3, ....., vuln);

更新表数据:

# 更新单个字段
UPDATE `table_name` set name='java' where id = 3;
# 更新多个字段
UPDATE `table_name` set name='java', age=22, sex='男' where id = 3;

删除表数据:

DELETE FROM `table_name` where id = 3;

结语:取法乎上,仅得其中;取法乎中,仅得其下;

你可能感兴趣的:(sql,数据库,mysql)