mysql常用语句
1、创建表。
例如创建表user_base,并设置主键id自增,设置字段type为索引,设置`phone`和`type`为联合唯一索引
CREATE TABLE `user_base` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`sex` tinyint(4) unsigned DEFAULT '0' COMMENT '性别 0未知 1男 2女',
`cn_name` varchar(255) DEFAULT '' COMMENT '中文名',
`en_name` varchar(255) DEFAULT '' COMMENT '英文名',
`phone` varchar(50) DEFAULT '' COMMENT '手机号',
`password` varchar(255) NOT NULL DEFAULT 'e10adc349ba59abbg56e057f20d983e' COMMENT '密码',
`bir_date` date DEFAULT NULL COMMENT '出生日期',
`portrait` varchar(255) DEFAULT '' COMMENT '头像',
`is_use` tinyint(4) unsigned NOT NULL DEFAULT '1' COMMENT '是否启用 0代表不可用 默认1可用',
`is_del` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '是否删除 0代表可用 未删除 1代表已删除 不可用 默认0',
`type` tinyint(4) unsigned DEFAULT NULL COMMENT '用户类型 1 管理员 2 老师 3 学生 ',
`attach` varchar(2000) DEFAULT '{}' COMMENT '拓展信息',
`last_login_time` timestamp NULL DEFAULT NULL COMMENT '最近登录时间',
`creator` varchar(255) DEFAULT 'system' COMMENT '创建人姓名',
`updater` varchar(255) DEFAULT 'system' COMMENT '修改人姓名',
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最近一次修改时间',
`versions` int(11) unsigned DEFAULT '0' COMMENT '数据版本号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uniq_phone_type` (`phone`,`type`) USING BTREE,
KEY `idx_type` (`type`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='用户基础信息表';
2、清空表数据
清空表数据有delete from 表名; 和 truncate table 表名;两种方法
delete from 表名; 清空表数据后,再次新增数据id会接着以前的id增长
truncate table 表名;清空表数据后,再次新增数据id会从1开始
3、新增字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在字段名];
案例:在表user_base中的portrait字段后新增is_VIP字段,注释是“是否是会员,默认0不是;1是;”
ALTER TABLE user_base ADD COLUMN `is_VIP` tinyint(4) UNSIGNED DEFAULT '0' COMMENT '是否是会员,默认0不是;1是;' AFTER `portrait`;
4、新增索引
PRIMARY KEY(主键索引)
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
UNIQUE(唯一索引)
ALTER TABLE `table_name` ADD UNIQUE (`column`)
例如在表user_base中将cn_name设置为唯一索引。:ALTER TABLE `user_base` ADD UNIQUE (`cn_name`);
INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
例如在表user_base中将is_VIP设置为索引增加查询效率:ALTER TABLE `user_base` ADD INDEX index_isVIP ( `is_VIP` )
5、将查询结果插入到另外一张表
INSERT INTO 表名1(字段列表1) SELECT 字段列表2 FROM 表名2 WHERE 查询条件;
案例:
INSERT INTO `channel_info` (
`name`,`source_id`,`parent_id`,`trial_time`,`auditing_status`,`node`,`type`,`creator`,`create_time`
) SELECT t1.cn_name NAME,t1.id source_id,t3.id parent_id,t1.create_time `trial_time`,3 `auditing_status`,2 `node`,5 `type`,'yql' `creator`,now() `create_time`
FROM
`user` t1
JOIN `user_saler` t2 ON t1.id = t2.id
JOIN `channel_info` t3 ON t2.agc_id = t3.source_id;
6、关联表更新
案例: